自学编程的技术大牛是如何进谷歌的
即将于下个月上映的电影《The Internship》吸引了不少人的眼球,其中最重要的原因就是在这个落魄大叔们在 Google 奋斗的励志故事中,观众们可以近距离接触 Google 的企业文化,而“为 Google 工作”也是无数 IT 从业者的梦想之一。不过实际上,故事不仅仅发生在电影当中——David Byttow 曾是 Google+ 中某些项目的技术 leader,而在此之前他并没有获得过大学学位,最近他就写了一篇文章回忆自己是如何加入 Google 的:
由于 GPA 成绩并不理想,David Byttow 没能被自己所梦想的大学 UCLA 录取,于是他选择了去 Purdue University Calumet 学习计算机科学。需要注意的是,这所学校完全独立于 Purdue University,它对高中成绩不设分数线,对学生是来者不拒,美国大学排名上没有该校区,应当在 400 名以外。
在 Purdue University Calumet,David Byttow 利用自己所学的知识开始为一家公司打工,主要公司是为印第安纳州的一些本地企业搭建网站,酬劳是 12 美元/小时,当然,这份工作并不符合 David 对自己未来的想象。
David Byttow 踏实的在这份工作上完成了许多项目,建立了不错的信誉,帮助公司获得了不错的收益。这时,他想利用业余时间去开发一款游戏,但他的时间非常稀少。所以,他 孤注一掷地像管理层申请三个月的时间去开发这款游戏,他做了电子表格和 DEMO 向他们展示这款游戏以及盈利方案。
两个月的开发后,David 完成了整个 DEMO 的开发,而这时,另一家名为 CodeFire 的游戏公司注意到了 David 的产品,他们二者的游戏极为相似,所以 CodeFire 不停地给 David 发邮件要求他终止开发。David 的答复是;“没问题,但你们必须雇用我”。
他的愿望实现了。
David Byttow 说,在职业生涯里最重要的一件事是在你自己的领域找到一位技艺娴熟的人,并不断地向他学习。他提到了自己在 Double Helix 公司的同事 Nathan Hunt,他称赞 Nathan Hunt 不仅极为聪明和谦逊,而且十分具有耐心,无论他提出多么初级的问题,Nathan Hunt 都乐意为他解答。像 Nathan Hunt 这样的导师都或多或少地改变了 David 观察世界和思考问题的方法。
当然,要想加入 Google,最重要的一点是拥有足够的技术竞争力,所以 David Byttow 不断地学习填补自己的空白。他将几乎所有的最常见的数据结构和算法都学习并运用了一遍,以确保将它们融会贯通。他设定的学习计划是:
- 至少掌握C、C + +、Objective-C、Java、PHP、Python 和 Ruby 中的一种,并熟悉 Scala、Haskell 和 Lisp。
- 学习数据结构,实践其原理,加深对时间复杂度的理解。
- 学习并解决大量程序设计问题。
- 自己完成小型项目的开发,例如开发框架、App、Web App 或游戏。
经过 6 年的磨练,David Byttow 已经开发了 6 个跨平台的游戏,于是他申请了 Google 的职位,不过由于没有大学学历,他失望而归。一年之后,David 重新提交了简历,这一次他干脆将自己的教育经历从简历中完全剔除,而这一次,David 的个人经历打动了招聘人员,Google 安排对他进行一场电话视频面试。David 申请将这场面试安排在两个星期之后,在此之间,他每天花费 12~14 个小时编码,来恶补算法和数据结构的知识,并解决了几百个问题。David 说,在这个过程中,他对 Google 的面试由欠缺学位的害怕转变为信心和兴奋感。
在接下来的每轮面试中,David 胸有成竹的解决了每一个问题。最后,Larry Page 告诉他可以签订合同了,他所担心的因为学历问题而落选的状况并没有发生。
“Victorious warriors win first and then go to war, while defeated warriors go to war first and then seek to win(授人以鱼,不如授之以渔)”,这是 David 这些年最大的感触。缺少学历做保证的他,依靠自学编程,敲开了 Google 的大门。