2015 年 8 月 18 日,我正在多伦多飞往哥本哈根的单程飞机上,准备开启在哥本哈根商学院为期两学期的交换生活。

那天是我哥哥的生日,所以我对这个日期记得格外清晰。他在机场度过这个生日,因为全家人都在机场为我送行,他们原以为我只是去八个月。

过去我对哥本哈根的唯一了解来自 CPH Open on Thrasher Magazine's YouTube channel 这个频道。幸运的是,我完完全全爱上了这个城市,于是在第一个学期之后我决定要在哥本哈根待更久时间。我没有选择在加拿大实习,而是尽可能在哥本哈根找一份实习工作。

在哥本哈根工作

我之前没有好好计划这件事,所以开始找销售发展代表的实习工作。我之前在某节课上听说过这个初级职位,因为之前的工作经历都与销售和客服有关,我以为这会非常合适。

我投了简历给一家初创企业,四小时不到,他们的销售经理就跟我通电话了。这是我第一次感受到创业公司的快节奏!一个月后我入职了。这也是我第一次接触到专业程序员。

虽然我只在高中的 Visual Basic 课程里接触过软件开发,但是我对技术一直有着很深的兴趣。

这份工作让我第一次有了和程序员共事的机会。他们的工作听起来非常酷。他们谈论一些专业术语和技术——React,Ember,Scala,Python,TypeScript,样板代码,编译器,渲染......开发软件竟然需要了解这么多内容,这听起来令人害怕。

接下来的一年半时间,我继续在销售职位上打拼,最终升职成了客户主管。在这份工作中,我感到我的沟通能力、时间管理能力、表现能力都得到了很大的提升。

发现 freeCodeCamp

虽然我作为一名客户主管还算成功,但是我对自己未来是否愿意在销售业发展还是存在疑问。而且在母语非英语的国家里做英语销售,职业选择也有所限制。

我开始拓展阅读,寻找新爱好或者挑战。我就是在这时发现了 freeCodeCamp 的博客的(当时还建在 Medium 上)。我花了几天时间才意识到 freeCodeCamp 并不仅仅是一个博客,它是一个在线免费学习编程的平台!其实从它的名字就可以看出来。

在做完几道 HTML 题之后,我已经完全着迷了。那时我就决定在空闲时间完成 freeCodeCamp 的课程,为了在遥远将来的某天能成为一名开发人员,和我的同事讨论 React。我喜欢这个想法。

艰难地学习基础知识

我很快地学习了 HTML 和 CSS,在我开始尝试完成一个项目之前我都相当自信。搭建一个作品集网站?小菜一碟!

离开了 freeCodeCamp 的编辑器,我突然感到非常迷茫。从头开始写项目似乎变成了不可能的任务,我好像把学到的东西忘得一干二净了。我突然认为自己不可能成为一名真正的程序员。

而此时,寻求帮助是我做出的最好的决定。我的一位同事耐心地教我使用 VS Code,构建 HTML 文档并链接相应的 CSS 文件。拙劣地完成了作品集网站后,我把这项任务勾选成了“已完成”,虽然我的成果和其他人的相比非常糟糕。

在历时一个半月学完 HTML 和 CSS 课程后,我终于开始学习我期待已久的 JavaScript 课程。

学习 JavaScript

开始时很简单,但没过多久我又感觉到迷茫和受挫了。学完了 JavaScript 的所有模块后,我没有自信和韧劲去挑战更难的 JavaScript 项目。相反,我选择了容易的路线,开始学习 Codecademy 的 JavaScript 课程。

这对巩固基础知识当然是有帮助的,毕竟反复练习是关键。然而,在学习过程中我犯的最大错误就是没有回过头去尝试那些更难的项目。

学完 Codecademy 的所有模块后,我又买了 Udemy 上的 “The JavaScript Bootcamp” 准备继续学 JavaScript。鉴于这已经是我第三次梳理基础知识,课程结束后我感到自己对 JavaScript 更有把握了。

进入 Pleo

在这时我直接开始学习 Node,紧接着学习了一门 React 课。

在两门课之间的某个时间,我在 Pleo 找到一份客户经理的工作。作为发展如此迅速的创业公司的一员非常令人兴奋。更令人兴奋的是,遇到如此多年轻有天赋的开发人员,并有机会向他们学习。

在做了三个月左右时,主管和我讨论我的职业规划。我非常坦诚地告诉她,我不想再在销售行业发展了。我想尽全力自学编程,争取在未来某天成为一名程序员。

没有人想在自己组里一个初级销售代表的口中听到这些话。但是令我惊讶的是,她非常支持我的决定,并且愿意尽力帮助我达成目标。

尝试编程挑战

和公司的一位技术总监聊过之后,我了解到我需要完成招聘流程中所要求的前端编程任务,才能继续从销售部到产品部的转行。

尝试这件事的想法令人害怕又充满动力。也是从这时起,我开始在办公室待到更晚。我不想浪费时间骑自行车回家,所以每到下午五点,我会赶紧找点晚餐吃,尽快回到工位,开始我假装作为程序员的一天。

我终于在圣诞假期前上完了 React 课,并且开始做一些没头没尾的个人项目。我知道我需要把学到的知识应用于实际中,但我发现我很难完成没有最终目标的项目。

假期里时间变得充裕,我便又开始看之前遇到的前端挑战了。我对自己有能力提交一个有价值的成果仍然表示怀疑,但是因为有目标,我想我说不定最终能完成一些东西。

幸运的是,我们公司的前端挑战很像那门 React 课程里的期末项目,所以我可以复用很多之前的代码和组件。我感觉我有点像在作弊。

我还是提交了我的项目,并积极地等待回应。公司的两名高级工程师评审我的代码,我感到非常害怕,准备好接受一些严苛的反馈。

几周后我拿到了结果,我提交的作品还不算太糟!我收到了一些非常有可行性的批评和建议。我的一位同事甚至在下班后留下来和我逐行讲解那些反馈信息。代码评审会议进行得非常顺利,于是我们决定每周都约一次,直到我有能力转行成一名真正的开发人员。

我的第一次 Pull Request

接下来的几个月里,销售主管和技术总监时不时来监督我的进程。四月时,我有了一个可以进入内部工具组工作的机会,后勤系统有一些不紧急但还是需要处理的 issue。

我非常兴奋——这是我得到和产品部合作经验的绝佳方式,而且已经明确了这个任务并不会妨碍到销售工作。一想到能接触到生产环境的代码,我就感觉非常疯狂!

在简短的入组介绍并得到公司 GitHub 页面的权限之后,我开始处理第一个 issue。

我需要给合规组加一个可编辑输入字段。我毫无头绪。 我以前的确知道怎么加输入框,也粗略地了解表单在 React 里是如何运作的,但是我好像从没在任何教程里看过和这段代码类似的东西。

我突然感觉自己掉进了问题的深渊里:怎么写 TypeScript?分支是什么?我怎么提交 Pull Request?这些库都是做什么用的?我到底怎么写代码并且发给其他用户?要是我破坏了重要的功能怎么办?

我花了好几天才搞明白,但是因为有了工程师主管的耐心与帮助,我终于成功提交了两段能发布的代码。这是我编程之旅上巨大的里程碑。

职业转变

在接下来的五个月里,我继续在办公室待到很晚,9 到 17 点做销售工作,17 点之后开始做开发者,直到我对自己写的代码满意之后才离开。

可想而知,我对销售工作的热情每天都在减少,我开始想要有个正式的职业转变。

当然,这个转变并不是很顺利。没人知道把一个销售转到产品部意味着什么。首先,我必须完成销售目标。我想这对绝大部分销售部门来说都很正常——无论如何要完成自己的工作配额。

经过多次来回周旋之后,我终于被允许在 8 月 1 号正式转岗,只要我能完成销售配额。这就像是隧道尽头的亮光。我马上就要签一份软件工程师的合同,这对我来说挺难想象的。接下来几周过得飞快。在 7 月 31 号 17 点这一刻后,我不再是客户经理了。

适应新角色需要一个转变期,这就像在交易所工作的股票经纪人突然变成图书管理员一样。

抛开一切不说,我没有任何一天不期待来上班的。我继续在内部工具组工作,搭建合规组和用户支持的后台系统。

我学到的东西

之前的销售工作经历对我现在的工作非常有帮助。很强的沟通能力、时间管理能力和表达能力,对于一个开发人员也是无价的。但我发现很多开发人员普遍缺乏这些品质。

我意识到自己真的非常幸运,能这么快就得到了写生产代码的机会。这毫无疑问是我在学习编程过程中的巨大跳跃,也扩展了我对现实中开发工作的理解,这些在网课中是无法得到的。

有一位导师极大地帮我加快学习进度,也帮助我坚持写项目,所以我才能一直处于学习状态。如果我没有周围那么多的支持,我想自己可能还在花费整个晚上和周末看教程或者搭建“随机生成皮卡丘”之类的项目吧。

我下决心要把所有空闲时间用在个人发展上。我想人们很容易低估这个过程的时间成本。有指导者是一个巨大的帮助,即便只是有一个偶尔能回答你的问题的人,也能让你不用花数个小时陷在沮丧情绪中。千万不要害怕寻求帮助。

回过头来看,我希望我能花更多时间搭建一些小项目,应用我所学的知识。我频繁地开始做项目但又半途而废,因为我一直认为自己不能用正确的方式写完代码。

花时间艰难地研究一些东西对我的学习过程更有帮助。学一些交互性的编程网课确实更安心,但这对你把编程知识应用于现实世界有一定的限制。我确实踩过坑。

我花了一段时间才意识到,并没有人知道什么是正确的(学习)方式,那些都是人为编造的。作为一个编程新手,能以新角度看问题也是有价值的吧。

如果我希望过去的我能得到一则建议,那它会是“更努力地边学边应用”。特别是在你学习的过程中,并没有什么现实代码或者做事的正确方式。任何你能在过程中学以致用的机会都是有价值的。

不一定要等到有人给你薪酬,你才觉得自己是一名开发人员。只要你开始写代码,你就已经是了。

看完希望能交个朋友!如果有任何问题或者有推荐的书籍,欢迎给我发邮件,在 LinkedIn 上找我,或者关注我的 Twitter

原文:How I Landed My First Developer Job Without Writing a Single Application,作者:Jean-Marc Möckel