编者按:本文来自微信公众号“CSDN”(ID:CSDNnews),整理:郑丽媛,36氪经授权发布。
程序员圈子里一直流传着一个魔咒:35 岁的中年危机。
他们说,35 岁程序员的精力和体力会无法避免地下降;他们说,35 岁程序员的丰富经验没有年轻员工的创新活力吃香;他们说,35 岁程序员会面临越来越窄的职业上升通道和日益复杂的社会压力。
这些“传说”令许多程序员每离 35 岁进一步,就更焦虑一分,并迫切寻找打破这一魔咒的方法。
而今天我们要介绍的这位程序员可谓是“不一样的烟火”。非科班出身的 John Washam 在 35 岁之后才开始自学 CS(Computer Science,计算机科学),并耗时 8 个月为面试谷歌软件工程师做准备,最终成为了一名亚马逊的软件开发工程师,亲身证明了 35 岁之后的无限可能。
此外,John Washam 还将其自学编程的经验汇总到了 GitHub 上,目前该项目已获得 178k+ Star!
(图片来自 John Washam 写于 FreeCodeCamp 网站的文章)
John Washam 从中学便开始接触编程,但在报考大学专业时,他做了一个预判:他认为等到他毕业的时候,程序员市场会过于饱和,出现供过于求的现象,因此他选择攻读经济学。
事实证明,他的预判错了,程序员哪怕至今都是个热门岗位。
大学毕业后的 John Washam 进入军队成为了一名军事情报员,后来在韩国服了两年兵役。在这期间,他不仅自学韩语,还尝试重新拾起编程。不过对于从初中到高中都使用 BASIC 编程的 John Washam 而言,学习并理解 C++ 这门新语言实在太难了,因此那时他放弃了。
退伍后,John Washam 在韩国又留了一年,白天教别人英语,晚上和周末自学 Perl、HTML、CSS、JavaScript 和 SQL 来摸索 Web 编程。一年后,John Washam 凭借自学而来的技能在西雅图成功找到了一份 Web 开发的工作。
随后 15 年,John Washam 一直专注于 Web 开发领域,期间曾创办 3 家公司(其中 2 家目前仍在运营),也曾在大型和小型公司待过,积累了创业和团队管理经验,身份也在设计师、营销人员、产品经理和 CEO 之间切换。
讲道理,John Washam 的这份履历可能在许多人眼里都是“香饽饽”。这 15 年不仅给了他一份可谓成功的职业生涯,也给予了他许多宝贵的经验,可彼时的 John Washam认为“我是有一个成功的职业生涯,但我还没有彻底完成。”
为了追求真正的成功,John Washam 开始寻求职业转变,可现实并没有他想象的那般美好。
他原以为,他是市场中稀缺并热门的全栈 Web 开发人员;但现实情况是,他的确拥有广泛的技能,但也因此并没有专精于哪个方面。为了赚钱,他花了太多精力在经营初创公司上,技能也没有与时俱进,自认为的全能在冷静审视后其实也仅仅是够用而已。
或许在别人看来,那些丰富的经验足以让 John Washam 找到一份待遇不错的工作,但对于他自己而言,不足以让他找到真正想要的工作。例如,他曾对一个由风投公司运营的实验室感兴趣,但没有 CS 学位的他、没有相关技能与知识的他,别人连面试机会都不会给。
到了 2016 年,John Washam 终于下定决心要从 Web 开发人员转变为软件工程师。
许多人可能认为 Web 开发和软件工程同属一个体系,反正都与编程有关,转变应该不难。但在 John Washam 看来,软件工程增加了数据结构、算法、编译和内存优化,并且需要了解编码和架构对其硬件的影响,体系非常之大。
为了有目标地实践与学习,John Washam 询问了其在谷歌工作的朋友,以了解面试谷歌软件工程师所需要的技能知识。而将目标定位谷歌的原因也很简单,谷歌的人才待遇、工作环境、发展规划无疑都是一等一的,因而其招聘软件工程师的条件也很严苛,所以 John Washam 认为,只有将目标定得高才能更好地激励自己,即使最后进不了谷歌,他也能有很好的归宿。
John Washam 的行动力很强,人至中年的他并没有困于传说中的“中年危机”。得到谷歌的面试范围后,他以此为基础,冲劲十足地制定了一系列学习计划,并在接下来 8 个月中每天自学 8-12 个小时。
在这期间,John Washam 通过各种途径整理出了大量相关的学习资源,并将这份学习指南开源在了 GitHub 上。由于起初是以谷歌软件工程师为目标,因此这份学习指南最初命名为「9894 项目」(谷歌于 1998 年 9 月 4 日诞生),后来改名为「谷歌面试大学」。
不过,John Washam 后来并没有成功进入谷歌,因此这份软件工程师的学习指南目前已改名为「编程面试大学」。
(GitHub 地址:https://github.com/jwasham/coding-interview-university)
据了解,John Washam 被谷歌拒绝的原因是:没有适合他的经验和背景的岗位。需要注意的是,由于 John Washam 已在西雅图定居,因此他应聘的是西雅图/柯克兰的谷歌分部,所以就业机会自然会比山景城谷歌总部小很多。John Washam 对此也表示可以理解,并且自信表示:“如果我愿意在加利福尼亚工作,故事的结局可能会有所不同。”
但不论如何,最终 John Washam 进入了总部设在西雅图地区的亚马逊,并如愿成为了一名软件开发工程师,他的努力付出得到了回报。
与此同时,由于他的「编程面试大学」囊括了新手成为软件工程师的全部学习资源,并贴心汇总了面试的全过程心得,因此得到了众多学习者的关注,还有许多开源爱好者将其翻译为各国语言,其中就包括中文。
以下是「编程面试大学」的目录节选:
截止目前「编程面试大学」已获 178k+ Star,已然成为 GitHub 上的热门项目之一。对我们而言,这也或许并不仅仅是一份公开分享的学习笔记,更是一种摒弃杂念、为未来拼搏的底气:人至中年的 John Washam 能够专注自学 CS 以如愿成为软件工程师,我们又在瞻前顾后些什么?
https://www.freecodecamp.org/news/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13/
https://medium.com/@googleyasheck/i-didnt-get-hired-here-s-why-21f26d4784d5