50岁还能咸鱼翻身转码!?国内只能转外卖或滴滴了吧...
欢迎大家点击左下角“阅读原文”到原帖与作者交流讨论哦!
长文摘要
20年前工科硕士毕业后即混入IT部门工作至今,今年1月萌生换工作意愿,于是从头学习数据结构和算法,3月开始Leetcode刷题,4月底开始投简历,7月底小厂上岸。
正文
我是来终结地里的话题“XX岁,转码来得及嘛?”,那些30岁就自称大龄甚至老年的通通闪开,是时候让你们看看什么才是老年弱鸡。
你们见过一个20YOE的Senior SDE居然不会任何一门编程语言的吗?是的,我这20年来只会在Oracle上用SQL写点儿查询,堆栈链表树通通没用过,TCP/IP是啥玩意儿,分布式系统听都没听说,更别提什么AWS、Azure了。
可是你们还别笑,同组还有人连SQL都不会写呢。那总得干点啥吧,于是领导就让她负责版本控制。做软件工程的都知道版本控制的重要,不是用SVN就是Git (这两个词其实都是我最近才学到的)。我们组是人工版本控制,所有pull和push请求都以文档发给这个人,然后她把文件从PROD拷下来放到DEV或者从DEV拷到TEST再到PROD,期间当然要做检查和备份,不然她干什么呢?如果检查到有人正在DEV做的话就不允许pull,相当于一个人工锁,不允许多线程修改。
至于换工作的原因?就是嫌目前薪资太低了,年薪80K加元,没有股票,每年薪资涨幅只有可怜的1.5%,连通胀都跑不赢。
为什么呆了20年才想起跳槽?对于咸鱼来讲目前这份工作只要忽视薪资低这一个缺点外,其他全是优点:假期多福利好工作清闲无压力无裁员风险。既然这么多优点也就难怪很多同事直接躺平等退休了,而且心知肚明自己就是一只弱鸡。80K在地里不值一提,但在加拿大可也属于TOP 15%了。井底躺久了也一直懒得去了解外面的劳工市场行情,觉得这辈子也就这样了吧。
自从萌生了换工作的意愿之后,首先就是上网搜集信息,找来找去找到了一亩三分地。不看不要紧,一看吓一跳,如今NG起薪都已经是我薪资的2倍了?!300K的low穿地心包?!
虽然我一直奉行“不要为已经发生的后悔,不要为尚未发生的焦虑”,可是这次我是真的后悔了,我TM这些年都干了些什么?种一颗树最好的时机是20年前,其次是现在,那就开干吧。先把地里的置顶文章读了一遍,搞清楚找工的步骤流程。
先写简历吧,于是把20年前毕业找工作时的简历翻了出来,加上现在这段的20年经验。工作内容?即使干了20年都乏善可陈。SKILLS?除了SQL和Oracle还能写点啥呢?什么编程语言都不会。算了别写简历,先看书吧。
下载了一本Data Structures and Algorithms in Python,开始学习数据结构和算法以及Python。一旦读起来才发现自己以前简直是个FIVE,面向对象怎么编程?还有位运算这种骚操作?开始3章还认认真真把每一章后面的习题都做一遍,到了后来就懒得做了,红黑树这转来转去的谁看得懂,不懂的就跳过,越到后面跳过的越多。
然后就到3月了,读书读不下去,那就上Leetcode上刷刷题吧,试试就逝世。第一道2sum就把我困住了,双重循环不对吗?咋还超时了?!卧槽dictionary还能这么用,为什么用hashmap的时间复杂度是O(1)呀?又回头去翻算法书......
就这么一边刷题一边温习书本,2周约莫刷了100道题。然后某天点开曾刷过的题,咦?这题我好像见过,可是怎么解的来着?好像是.....算了还是看看以前怎么做的来着吧。
就这么一边刷新题一边复习旧题,时间就来到了4月,刷完300多题慢慢也有了感觉。随便提一句,Leetcode的会员是我觉得最值的会员消费了,也是我找工期间的唯一花费了,其他的所有书籍教程都是网上白嫖的。
简历上终于可以大着胆子加上一门编程语言了,参考了各种简历模板和本单位的招聘广告,工作经验也强行凑满了半页纸。
地里有人怕年龄歧视不敢写自己的读书工作日期,我能理解这种顾虑。可是我都50了,视频面试的时候还藏得住一张老脸?如果公司有年龄歧视,就算我真进了也不可能感觉舒服。所以我还是把所有的日期都标得清清楚楚,任谁看一眼就能估算出年龄了。
另一个顾虑是学历,我并非CS出身,20年前还没有转码一说,面试也不考编程,有个工科硕士学历很容易就混进去了,同组的还有高中学历哩。最后我还是照实写了自己的天坑专业,首先工作这么多年后其实已经没人关心你的学历了,学历都是放在简历最后面。其次如果公司因此就不要我,那么你们公司也不是我想去的地方。
接下来就是投简历,各大找工网站我都注册并完善信息上传简历了,如今看来其实没什么卵用,反而是浪费时间。最有效的方式是完善自己的LinkedIn,我都没有主动出击,就有一些Recruiter来勾搭,因而拿到OA电面的机会非常高。其次是内推,地里内推的资源很多,小伙伴们也是很热情地给出建议。然后就是直接登录大厂官网找,最后就是找LinkedIn上的Job,我会开着Easy Apply的过滤选项,既然海投我就尽可能地在短时间内广撒网了。
内推亚麻的时候人家好心说你这20YOE怎么申请个L4啊?那是给2YOE准备的,你得申请L6。我苦笑着说我知道自己什么水平,哪儿敢申请L6啊。那最少你也得申请L5,申请级别太低了Recruiter反而觉得不对劲。我不禁心想自己这20YOE还不如没有呢,如果是新手转码,从Junior开始申请反而更容易。可是看着Senior职位的一堆要求自己又胆怯了,只好尽量挑些不带Senior和Entry Level字眼的职位申请了。
4月底大概海投了近百份简历吧,终于有一个美国大学的Recruiter发email来说想聊聊。20年来第一次和Recruiter电聊,我也是激动得不行,把要说的全都写了下来,半小时把自己从出生长大上大学到出国读书工作全讲了一遍,估计Recruiter也是被我的热情吓到了,小心翼翼地问我说看你在LinkedIn上设置的搜索条件是140K美元,可是我们只能提供125K。这个时候我当然不会谈钱啦,blahblah表达了一番视金钱如粪土只在乎你们的大学环境后就结束了。完事写了一个感谢信,然后音信全无。
5月初突然有个亚麻Recruiter在LinkedIn上找到我,说他手里有4个亚麻的职位,让我去申请一下。我想也没想就申请了一个,然后他就开始安排电面,这可把我吓坏了,上来就大厂呀。硬着头皮上吧,从可选的日期里挑了最晚的一天,2周以后。
然后这两周里就只做两件事,一是在Leetcode上挑亚麻高频题拼命刷题,一是参考各种亚麻LP资料按照STAR原则编写自己的小故事。电面开始问了两个BQ,又问了几个数组链表哈希的基础数据结构知识,考了道简单coding题二零,居然就过了。然后就通知安排最终面试一共5轮,明确要考系统设计。天哪我根本没有任何系统设计经验的啊,面试定在了3周以后。
接下来的3周时间就只做一件事,学习系统设计。学习的资料主要是System Design Interview An Insider’s Guide,各种新鲜词汇层出不穷啊,遇到新词就查wikepedia。反复读了两遍,第一遍跟着画图,第二遍按自己的理解重新画图。
这期间1个月前的大学Recruiter居然又找回来了,说要来个电面,面了才发现对方所谓的技术主管也是个不懂技术的货,那我就可以放肆吹嘘了。随后安排最终轮面试,1个半小时,对方4个人一起上场群殴。没有coding,没有系统设计,问了些面向对象的问题,我刚学的那些知识可就派上用场了。但是我估计是栽在一个问题上了,解释一下函数的参数传递进来的reference。我一个菜鸟当场就懵B了,瞎JB扯了一通看到对方微笑点头还自以为答得不错 (事后回过味来应该谈谈mutable和immutable的)。最后对方说你都干了20年了,这个年龄都可以等着退休了,为什么还想到我们这里来呀?我说加拿大太冷了......
面完我连感谢信也懒得写了,全部心思又放到了亚麻的面试上,一周后接到大学Recruiter通知说没通过。说实话我还是很失落的,这么low的面试我都过不了,还是自己太弱鸡了啊。但第二天就到亚麻了,强打起精神迎接首次重大挑战吧。
第一轮是hiring manager,问了半小时BQ,细节追问得很深。coding做出来了,但是follow-up没答上来。第二轮系统设计一个群聊系统,经典系统设计问题了,回答得自我感觉很满意。第三轮coding也很满意,第四轮coding题目很简单,但是被我改来改去显得比较乱。第五轮纯BQ,准备的小故事已经不够用了啊,没办法重复说一遍吧。
面完后我还存了些侥幸心理,说不定过了呢?一周过去呢依然没消息,我估计已经凶多吉少了。最后得知没过,如今想来应该是败在BQ上了。毕竟我没有什么拿得出手的项目经验,编的几个小故事听起来弱得一批。反而临时抱佛脚的系统设计是最好的,coding刷到400多题后medium基本都能对付了。
因为准备亚麻面试,1个半月的时间没有投过简历了。6月下旬又把简历改了一遍,开始疯狂海投。不再把目光局限在美国,加拿大作为主场还是优势更大些。投美国岗位时都会被问到将来是否需要sponsorship?我本想说加拿大公民不需要,可是再一细看sponsorship的说明包括H1B和TN,我心想TN Status还是需要的,于是选择了YES。估计这也直接导致很多拒信吧。
海投了多少我已记不清,500+吧,期间还不断有Recruiter来骚扰我。那些直接发email过来的中介公司三哥Recruiter最不靠谱,交换完简历和职位信息后就失联了。感觉他们就是为了完成KPI而群发的,根本不是真心招人。
这期间还发生了一起求职诈骗事件,某天我收到一条短信自称D公司,说收到了我的申请,让我在线完成一个笔试,然后给了一个链接。我海投了那么多,哪里记得自己是否投过D公司,查了一下自己的email,根本没有这家公司的申请确认邮件。但我还是点开链接进去了,幸好这个链接倒不是钓鱼,填写了一些信息和完成几个BQ。很快就收到email说要电面,电话效果很差,没说上几句话就互相听不到对方了。挂断后对方又拨了过来,连自我介绍都没说完就又断掉了。我心想算了,挂我的公司多了去了,也不在乎你一个。
然后晚上就收到email说对我的面试表现很满意,要给我offer。我心想不会是骗子吧,可是又能骗我什么呢?骗我免费干活?接着收到一个Word格式的offer,时薪70加元,完全远程办公。我第二天说好啊好啊,怎么开始办公呢?对方给了我一个Telegram的账号让我联系她,说帮我setup远程办公环境。我就注册了Telegram联系上这个人,她说欢迎啊然后发给我一张3K的支票截图说是给我的启动资金。让我把支票存进了银行发回了确认截图,然后她让我e-transfer给某个账户1K用于购买办公设备。
吼吼吼,跟国内日新月异的电信诈骗杀猪盘相比,国外诈骗手段这么多年真是不思进取,还在玩跳票那老一套。我客客气气地说等过几天我的银行确认了你们的支票没问题以后我才会转钱给你们,对方编了个牵强的理由继续催促无果,发现骗不了我就只好放弃了。果然过了一周银行告知支票跳票了。
话说回来,那些来自LinkedIn的Recruiter就比较靠谱,会聊会推会安排电面,先后电面了2次巨硬2次抖音1次苹果但都fail了。还有一些Recruiter聊着聊着后就发现我其实是个弱鸡,云也没用过?Java也不会?TCP都不知道?那就谈谈你的强项数据库吧。什么?你连索引采用的是什么数据结构也不知道?(后来查过才知道是B+树)
我和老婆说这样不行,基础太差,继续面试只会继续失败,不断失败压力好大。老婆安慰我说没关系呀咱们不急啊,反正目前工作已经很好了,慢慢来呗,要不先度个假散散心?
我说算了,时间宝贵,学得越多发现自己不会的越多。于是我开始系统地学习Java全套教程,用Java把Leetcode旧题重刷一遍,巩固旧题的同时学习了Java。另一方面跟着B站视频教程学习,准备考一个AWS SAA证书,因为我发现几乎每个Recruiter都会问我有没有云使用经验,而我老老实实回答说没有以后很多就凉了。
话说亚麻的Recruiter可真多呀,虽然之前面试失败,后面又陆续来了4个Recruiter,又帮我把新的电面给安排上了,同时也陆续通过了其他几个公司的电面。其中H公司周一刚电面完,周二就要安排最终轮了,我心想那就别拖了,后天周四吧。对方也很干脆,立马安排了4个人。
地里关于H公司的信息很少,5年来的面经全收集起来也才12道题。第一轮是个VP,主要是聊BQ,最后来个系统设计主要问DB的选择和扩容。感觉一顿吹捧下来对方很开心。第二轮coding,暴力求解很直接嘛,能不能优化?瞎JB折腾了一番后还是不会。然后又出了道经典二零零,秒了。第三轮coding,对方全程不说话,看我一个人在那里挣扎。其实题目不难,可我当时一紧张就卡壳了,凑了个答案出来,但自己清楚是错误的。最后一轮又是周一电面的那个人,原来是hiring manager,聊了聊前面3轮的面试过程,10分钟就结束了。
面试刚一结束整个人松弛下来,立刻想出了第三轮coding的答案,我TM当时怎么就没想到呢,一点儿都不难的嘛。心中非常懊恼,可是又能怎么办呢,打起精神准备下周的两个电面吧。
谁能料到运气突然就从天而降了呢,周一收到H公司Recruiter的来信,说我面试表现很好,问我什么时候能聊聊。要不是我知道H公司已经上市,我都要怀疑这又是一个骗子。周二和Recruiter视频,说面试反响很好,决定给我offer。我一边假装激动地写下数字,一边暗暗腹诽我面试表现哪里好了,莫非是第一轮把VP拍舒服了?
接下来就是根据谈判的10条原则和Recruiter交手了,强调了自己对公司的兴趣,列举了3条提高salary的理由,表示接下来还有2个最终轮面试要准备。事到如今形势已经逆转了,是公司在求着我赶紧签约了。嗯,那我们再等等看吧。来来回回拖了一个多星期,在原offer上各项都增加了5~10K,签定了最终包(加元):base 155K + RSU 220K (4*25%) + sign-on 20K + relocation 10K。今年就业形势不太好,而且我手里并没有其他offer可以compete。早定早入职,以免夜长梦多。
回首这半年来我从一无所知开始学习了数据结构、算法、Python、Java、OOD、系统设计、网络、数据库、Git、UML、Hadoop、NoSQL、RESTful、ETL、AWS等等。
当然coding是重点,关键不在难度,而在于类型。归纳总结题目类型后基本就能做好medium题目了,在我20+场coding中基本全是medium和easy,hard就遇到过一个吧。我自己觉得刷够300道经典题就够了,如今的面试coding还不算太卷,基本上大家都能过及格线吧,不太能够凭coding把大家区分开来。
由于我之前完全没有系统设计经验,一开始对系统设计很畏惧。系统设计是一个太宽泛的话题了,在此学习过程中不断遭遇全新的领域。我的学习方法就是搜索“某领域”+“快速入门”比如“网络快速入门”,一切以速成为目标。纸上谈兵一旦深入问下去就很容易露馅,但我也没有办法,没经验就是没经验,只能多了解些背景和名词了。
我个人觉得面试最能让人脱颖而出的其实是BQ,想想看5个进入最终轮面试的候选人coding实力应该都足以解决medium问题,系统设计给出的方案和知识面表现估计也是大同小异,但是BQ表现可就真的千差万别了。每个人的过往项目经验都不一样,如何包装如何表达才能打动面试官?就算大家都用START框架编故事,你如果能让hiring manager感觉你比其他人更fit这个职位,那么你就赢过其他候选人了。尤其是最后几分钟的提问时间,一定要认真准备好反向BQ,这是展示热情和兴趣的最佳机会。
去年据说是找工的最好年份,而今年的形势就差多了,很多公司Hiring Freeze,我自己也经历过走到最终轮面试但却突然接到消息说招聘暂停了的。我很清楚自己能收获这份offer并非自己实力出众,只能感慨运气太好。不拜上帝不拜佛,好运旺自好老婆,感谢她的支持陪伴和鼓励。祝愿大家都能顺利拿到心仪的offer!
有小伙伴表示:
国外的氛围真好,国内多半要转外卖或滴滴了~
我的天!50岁在职半年自学这么多概念,一个月leetcode 300+,海投500+,这执行力真的绝了!我以为我30岁转码已经够努力了,跟你一比简直跟躺着没区别。果然心态年轻,想干就干就会心想事成!向你学习!!
大哥你真的五十岁了?你这行文用词比我周围三十岁的还时髦
一亩三分地的话题:XX岁,转码来得及吗?欢迎大家一起来讨论!(点击阅读原文可直达!)
大家如果还有相关的问题和看法,欢迎点击“阅读原文”到一亩三分地讨论
大家还爱看
源于一亩三分地,版权归原作者所有
本文禁止任何形式的转载,请与一亩三分地联系
生活|投资|职场|留学
与百万华人一同关注我们4个公众号!
别错过北美最新热点和干货!
商业合作:1point3acres.com/contact
百万级月活,品牌精准投放
微信扫码关注该文公众号作者