笔者32岁的时候各种原因下定决心转码,一边全职工作一边准备花了两年时间34岁时才搞定。
最后拿到狗脸两家的offer去了脸家。
刚开始决定转码时很不好意思让别人知道。那会儿我PhD毕业在芯片公司做模拟芯片设计不少年,工资其实还可以。干着当时所在行业的cutting edge R&D,经常发发文章写写专利给学术期刊审个稿,自豪感很强,觉得自己怎么可能为了钱转码工。
直到有一天晚上我失眠打开了未名空间的待字闺中版,看到有个人上来问他有两个offer选哪个,我无聊点进去看了下然后刷新了我的世界观。那个人phd+5年工作经验,两个offer 一个三十多万,一个四十万出头。我以为是开玩笑,结果看下面的评论好像真的是那么回事。当时就被震撼了。世界为什么这么不公平,感觉入错了行投错了胎,对手上工作的所有的自豪感瞬间就消失了,然后我下定决心说我要转码。那时我tmd已经32岁半了呀。
当时面临的挑战是年龄确实大了,三十多岁的人再去腆着脸跟二十出头的小年轻一起找入门级码工的工作觉得真拉不下脸来。那些小朋友很多前几个月还在找我内推我前公司,今天我就要和他们一个起跑线一起刷题。其实比他们的起跑线还要低,人家至少有年龄优势。年纪大了又什么都不会才尴尬。
然后有的时候脸面是要放一边的,特别是考虑到钱的问题的时候。
虽然我是EE背景,可是EE里面也有那些基本不用编程的方向,模电设计就是这么一个方向。所以我除了用过点matlab基本编程啥也不会而且我本科也不是EE。但是说实话EE转专业比其他专业转的的同学有一点优势是真的很容易过简历关。很多recruiter觉得EE和CS差不太远,可能就给安排面试了。
我从mitbbs上搜了一推别人怎么转CS的经历,有人说如果没基础就先学python吧, 我上coursera上修了一门python的课。然后开始用python 刷题。我把leetcode按难易程度排序,先做最简单的,所以上来没有被hard题目打击到,容易培养自信。后来听说Gatech有一个online 的CS master项目,觉得可能对找工作过简历关有帮助就申请了一个。 这个项目里有很多转行的同学,听他们分享经验。里面认识的朋友告诉我了一个找CS工作的线上培训机构。以前出国的时候因为经济原因没有上过新东方觉得很遗憾。当时我的想法是现在我不缺这笔学费,就算啥也没学到这笔钱扔出去我也不遗憾。
这样自个儿刷题刷了一年之后我去上了线上培训班。忽然就有了一种正规军的感觉,有组织刷题有交流有反馈进步很快不再是孤军奋战。 后来我转用Java刷题,把leetcode基本刷完,当时一千题吧。大部分题是做了三四遍,经典题目次数更多。leetcode的周赛我每次大概都在前300名。之所以这么拼是不想浪费机会。做为转专业的同学年龄大了又没有CS工作经验,人家给个面试挺不容易的(在此真诚感谢给我面试的几家公司fb, gg, appl, amz, airbnb, uber, twitter, msft, wayfair, indeed),给你机会一定要能够抓住。其实不用刷那么多的。当然以前我找电路工作的时候也是能把Razavi教材书后习题刷三遍。后来我基本上没有挂过电面,onsite有一半能过,幸运的是该过的大都过了。
转码主要有三件事情需要准备
- 算法
- 系统设计
- 项目。
关于项目: 准备一些项目放在简历上这样recruiter看到关键字可能就给电面了。关于转行的同学准备项目我想说的是不要花太多时间搞这些项目, 它们只是让你过HR的简历关的。一旦过了简历关就没什么用了,大公司面试几乎不问你的项目经历。小公司的话这些项目经历也没啥用因为他们需要上来就能干活的人。真正工作中要学的知识点太杂太多而且各个领域都不一样所以美国的大公司的面试基本只问算法和系统设计。所以核心是算法和系统设计这两项。这两项里面算法是最难准备的,所以大部分人的准备时间都花在刷题上。
关于如何刷算法题网上有很多文章很多人分享,我自己也写过一篇 刷题经验总结
关于系统设计如何准备网上也有很多文章,我之前也写过一篇博客。转专业的同学如何准备系统设计
说两句上培训班的话题。培训班学费真挺贵的,人家是商业机构当然要挣钱。我见过一个极端的说法是上这种培训班是在交智商税,理由是那些算法自己看看书看看paper都能找到。 这样的说法忽视了一点就是知识有千千万书上文献上都能找到,可是别人花时间把它整理出来就是贡献。这样我就节省了很多时间。我本来可能要花两年,现在可能只需要花一年。对于交智商税的说法我只能说我的时间比你的时间值钱。骑自行车上酒吧,该省省,该花花。
(如果你也想上这个培训班可以私信我我有referral bonus可以拿可以和你分一半 :)。但是我不会在这上面告诉写是哪一家。做为优秀学员我拿到的referral bonus是别人的两倍,分给你的也是别人的两倍哈。
最后我觉得Gatech的项目或者转行去念个学位其实对找工作用处不大。读学位的收益是长期的不是短平快的。真的想见效快还是刷题。你可能花了两年时间读了个CS学位,然后还得老老实实刷题。
关于用什么语言,我同意别人的说法如果没有基础,先用python上手。糙猛快,容易学容易培养自信。然后如果做码工还是要学Java的, 如果用data的话就一直用python就行了。C++ 除非工作中用到,刷题阶段就不要学了太难了。工作中可能会遇到一些小众的语言,有了python/java的基础,其他语言很快就能上手了。
网友评论