推文中有不少问题,因为没啥发文的经验,大叔我就直接回本文了。信箱中也收到不少问
题,因为最近比较忙,我会在这周末一一回复。
先说说发上一篇文章的契机,差不多一年前我就加入 Google,当初有想过要发一篇文章
,但又觉得整个过程可能对人在台湾的朋友帮助不大,就放弃了这个想法。直到不少朋友
询问我,而我又觉得应该趁这波机会还没消退前,鼓励有兴趣加入的朋友,所以发了上一
篇文
“关于为何从 MBA 想转码农?”
主要是我觉得码农的工作比较稳定,薪资的涨幅也高 (应该还是比不上投资银行或是基
金经理人),弹性也大,事实上,现在 Google 的薪资也确实比我之前管理职的薪资高
,又因为我现在是入门的码农,所以整体变化是,钱变多,责任变小,同事变年轻。还挺
不错的。
再来是,虽然我没有身份问题,但我的 MBA 不是美国学历,没有这方面的人脉资源,加
上英文虽然不错,但说要打进国外生活圈,还少了不少共通的话题,长期发展我觉得可能
比较受限,所以当时想找个更偏重 hard skill 的工作。
个人对写码很有兴趣也是一部分,我在 codepen 上面自己做了不少小 project,在 Hero
ku 上面也有 ,详细是啥就不说了,现在回头看那些 code 很需要改进,但至少当下是觉
得相当有趣的。
最后则是契机,四五年前大CS时代的高峰(应该吧,可能还更早) ,我在美国看到不同行
业的人纷纷转码成功,而且都有不错的报酬率,从那时开始就在想这条路似乎可行。
另外,我想再次强调,上一篇文章,主要还是给理科背景的版友参考如何准备 Google 面
试。
大叔我商转码的结果,很大一部分不是我可以控制的,需要各种因素配合,天时 (刚好遇
到大 CS 时代)、地利 (人在美国,还是码农需求高的城市)、人和 (身份或美国学历、
网络资源、朋友帮忙及个人努力),这些条件缺任何一个都会使难度倍增 ,这也是为何我
是边工作边准备,因为我有会失败的心理准备,需要留一条能养活自己的路。
“个人英文程度?”
我想还行,毕竟之前要申请 MBA,之后又在国外工作不少年,上台简报或是日常聊天都还
能应付,但不敢说很好,有太多朋友都比我好太多。
“下班如何自律的刷题?”
我是慢慢试出来的,举例来说,你发现下班刷三小时太长,那就试试早起一个小时,上班
前刷一小时,下班后刷两小时。若是刚下班一到家很累,那就先睡 15 分钟再开始刷。若
是晚餐吃完容易松懈,那就把晚餐时间往后调一到两个小时,这样,你就可以先刷一个多
小时,然后睡前在刷一个多小时。若是不喜欢长时间刷题,那就上班前刷一小时,午休设
法抽出来刷一小时,下班再刷一小时。总之,一切作息调整以刷题为中心。
每个人的作息都不一样,我是如此尝试许多不同组合,才找到最容易让我持之以恒的一个
。在此还要谢谢内人的体谅,不断配合我不断调整的步调。
“为何一年不到就能面试其他人?”
以 Google 来说,这是义工性质,对考绩几乎没影响,外人看来面试人似乎很厉害,其实
是一件很花时间跟精力的事,你需要事前准备题目,尽量确保题目没有在 leetcode或其
他论坛上,题目不能太简单,自己也要把它吃透,面试结束后,还要打一份详细的报告。
而结果也不是你说了算,五个面试官,谁也不认识谁,报告交出去后,还有一个 hiring
committee
最后,有几个朋友提醒我,我低估了没有身分的风险,我看到的是少数个案,他们说得很
有道理,对完全没有身份又是商科的人来说,若是你下定决心想在美国转码农,正常作法
,建议还是唸个美国理工学士或硕士,毕业后,有个找工作的合法身份会比较保险。
引述《polala (哈哈)》之铭言:
: 先说背景,大叔我是政大商科毕业,今年超过35岁,大学毕业后,当完兵,在国内工作
三
: 年左右,接着到国外唸MBA ,之后在国外工作四年左右,一直都是商科人,现在人在硅
谷
: Google 总部当码农。因为不少朋友询问过整个过程,我想po出来或许对版友也能有些
帮
: 助。
: 三年多前下定决心转职软件工程师,我开始利用下班时间及周末,透过各种网络资源自
学
: CS,两年前找到第一份码农的工作,近一年前拿到 Google Offer
: 商转码的过程大概能打出两到三篇文章,在此就不赘述了,我想版友多半还是理科,这
篇
: 主要在分享面试准备心得及鼓励有志当码农的版友们
: “关于身份”
: 若是你本身就有绿卡或本来就有美国公民身份,那是最好,即便没有,也不太需要担心
,
: 美国对码农人材的需求量很大,ㄧ路认识许多ㄧ起转码的朋友都顺利找到愿意办工作签
证
: 的公司,大小型公司到新创公司都有,Google 同事之中也不乏直接从其他国家投美国
的
: 缺的案例,再来,进Google的最后一个阶段是team match ,如果美国走不通,还有在
世
: 界各地的其他办公室可以去
: “关于学历”
: 大叔我学士跟硕士都是商科,都不在美国,再举另一个亲身经历来说,第一份码农工作
是
: 帮一个美国知名信用卡机构做事,当时也帮忙他们面试新码农。
: 因为该信用卡公司非常有名,来面试的人之中也不少 Ivy League 的人,像是耶鲁之类
,
: 最后,我们录取两个,其中一个是普通美国大学不相关科系毕业,前一份工作是街舞舞
者
: 。
: 现在也帮 Google 面试码农,可以很肯定的告诉你,不会因为你是哈佛毕业就有加分,
也
: 不会因为你是岛国不知名大学就有劣势 公司的制度确保面试公平。码农面试就是一翻
: 两瞪眼,题目解不解的出来才是重点,跟学历没关系。
: 另外,我附近的同事有不少都不是 CS 出身,就我所知,有 EE、生科或数学系等,商
科
: 出身的确实较少,但我相信只是商转码的人数本来就比较少的缘故。
: “如何准备面试”
: 以个人经验来说,分为三个阶段
: 1. The Algorithm Design Manual
: 这是一本颇厚的红皮书,大约六七百页,里头详细解说各种经典算法及资料结构,它
的
: 每一个经典例子我都反复做了两三次,直到彻底理解每一行的意义及其关键的作用。它
可
: 以替之后刷题打下坚实的基础,一部份人的共识是,若是能彻底读通这本书,所有面试
题
: 目都能解,其难度高于大多数面试题目。我个人也是持相同看法。
: 2. Cracking The Coding Interview
: 过了第一阶段就可以开始做这本书,这也是极知名的书,五六年前可以说搞定了这本书
就
: 能进 Google。到了现在可能难度不足,但近期依旧有朋友面试其他公司遇到ㄧ模ㄧ样
的
: 题目。 很适合作为高强度刷题前的热身运动。
: 3. Leetcode
: 在 leetcode 上,你不会遇到 Google 的面试题目,但铁定会遇到类似的观念,诸如 D
FS
: , BFS, Priority Queue 或是 Dynamic Programming 等等。个人推荐分门别类的刷,
一
: 个礼拜专门刷一种观念,我通常是星期一到五每天刷三到四个小时(主要是因为还要上
班
: 养活自己,若是你能全职准备,会建议每天刷个八小时或以上),到了六日则每天刷十
二
: 个小时或以上,把周间的题目复习一次,并做些新题,下一个星期一再换另一种观念刷
,
: 不间断地循环。
: leetcode 有分 easy, medium, hard ,建议刷 medium 为主,我最终的比例大约是 1
:
: 8 : 1
: 刚开始题目做不出来是很正常的事,重点是要学会放弃,并学会快速找到能看得懂的解
法
: ,个人推荐去查找每道题的讨论区中比较多人 up vote 的文章,讨论区中的人都非常
热
: 心,很多人会把思考过程拆解的一清二楚,对你自己建构思路很有帮助。
: 我是限制自己若是 20 分钟内还完全没有头绪就放弃,残酷的现实是,很多题目若是连
头
: 绪都没有,你很可能三四个小时都做不出来,还容易想偏 (这些弯路我都走过),所
以
: 要有放弃的勇气。
: 承认自己的弱小,是改善自己的第一步
: 至于刷到什么程度可以去面试呢?
: 我对认识的同事作过调查,老实说,没有什么关键性的结论,数字落差极大,听到的数
字
: (从低到高)有:50, 80, 150, 200, 700, 1000,我是相当佩服刷了 50 题就搞定的
一
: 位香港小弟 (以大叔我的年龄,是真的所有同事都能被我称为小弟),但他本身底子就
极
: 强。
: 我个人刷了 180 几题左右,这数字不含 Cracking The Coding Interview 里头的题目
,
: 此外,这180 题中许多题我都做了三遍以上。
: 面试前几天对题目的感觉大概是这样,只要是 medium 的题目,不论是哪种,我大概都
能
: 在 20 分钟内写完,hard 的题目,若是 dynammic programming,还是挺有可能写不出
来
: ,但若是其他类型,大多能在 40 分钟内解完
: “关于面试”
: 一整天,总共五个面试官,五道题 (当然如果你解得很快,有些面试官还会多给你一道
)
: ,每轮45分钟,会是全英文,我不认为英文的要求很高,发音有腔调都不是问题,只要
足
: 以讲出自己的思路即可,诸如,为什么要用这种资料结构,为什么这么做是最佳解,现
在
: 的解法可能有什么缺陷等等,但沟通是相当重要的,你应该主动跟面试官厘清一些细节
,
: 主动提出一些 corner case之类的
: 你可以使用大多数的电脑语言,Google 会找到懂得该语言的面试官
: 另外,你应该把你的思路写在白板上,所以要习惯使用它,我是在刷题的时候就开始练
习
: 使用白板,也觉得对思考相当有帮助。
: “关于薪资”
: 个人薪资不便透露,有兴趣的可以去 www.teamblind.com ,里面有许多热心的网友分
享
: 主要几个大公司 (Google, Facebook, Amazon, Apple) 的 package,我觉得相当可信
。
: 无法让你大富大贵,但若你是博士、硕士或大学刚毕业,或刚工作一两年,Google 软
体
: 工程师的入门薪资还是足以让你在湾区养活你跟另一半的。
: 最后想说的是,大叔我没有任何相关背景学历,也不是什么神人,年近 35 岁开始边工
作
: 边学 CS,一步一步缓慢前进,最终也是能找到一份满意的码农工作,我相信以台湾优
秀
: 的大学教育,加上版友 20 几岁青春的肉体及新鲜的肝,来走这条路,只要喜欢写码,
愿
: 意花时间钻研,在这大 CS 时代绝对大有可为。
: 希望这篇心得分享能带给立志成为软件工程师的你/妳,更多期待跟自信。