从服务员到开发者
大家好👋 我叫沃尔夫冈,网名是@jarvispact。我住在奥地利维也纳,在一家软件开发公司担任全栈Web应用开发工程师已有四年。我主要使用React开发大型多租户Web应用。今天我想和大家分享一下我从服务员到现在的开发人员的职业历程。
当我跟新同事讲述我的经历时,他们总是很喜欢,所以我决定分享给大家。我希望这个故事能在你遇到困难时激励你继续朝着目标前进。或许它还能鼓励其他人也踏上追寻梦想职业的旅程。
我中学辍学,去当了厨师和服务员的学徒,在餐饮业干了大约十年。那段日子很快乐。我每个周末和节假日都上班,经常熬夜到第二天中午才起床。直到遇到我妻子,第一次认真谈恋爱,我才意识到自己应该改变生活。26岁那年,我决定换个方向。但是,到底该做什么呢?🤔 我完全没有头绪。我随便投了一些简历,大多数公司都直接无视我。我还去一些搞传销的公司面试过。我找不到任何靠谱的工作,这让我很失望,也失去了自信。我最终放弃了,继续做服务员。
有一天,我和当时我工作的那家啤酒馆的常客聊天。他是一位五十岁的COBOL程序员。我对编程这门神秘的技艺颇感兴趣,但那时我对电脑的了解仅限于上网查资料和玩纸牌游戏。我问他如何用一种简单的编程语言来尝试一下,他建议我看看Java。于是那天我回到家,在YouTube上看了很多关于如何安装Java和Eclipse IDE的视频。我还记得第一次点击“运行”按钮,控制台显示那两个著名的字:“Hello World”。我想我花了整整一个月的时间,尝试用各种方法修改和扩展那几行Java代码。最终,我成功地从控制台接收输入,并在程序中做出相应的反应。我感觉自己就像尼奥一样,所有电脑都听我指挥了。
整个宇宙等待着我去探索。那是一个充满创造力的过程。你创造出了以前根本不存在的事物。有了像Arduino这样的微控制器,你甚至可以创造和编程现实生活中存在的事物。我彻底沉迷其中。我尝试了所有能想到的点子。
编程现在成了我的新爱好,我也想把它发展成我的主业。所以我很好奇自己是否有这方面的天赋,或者至少能不能做出比简单的问答程序更复杂的程序。我向啤酒馆的常客请教了一个编程小挑战。他让我实现谢尔宾斯基三角形算法。
算法:
- 在屏幕上随机放置 3 个点。
- 在平面上随机选择一个位置点作为当前的“焦点”。
- 从这3个节点中随机选择一个。
- 计算并标记焦点与所选节点之间的中点(欧氏距离)
- 将标记点设置为新的焦点
- 重复步骤 3 至 5 多次(10000 次以上)
问题在于我之前从未听说过递归,而且我想那也是我人生中第一次在电影或电视剧之外听到“算法”这个词。当时的我年纪太小,根本无法解决这么棘手的问题。我尽了全力,但几个月过去了仍然一筹莫展。我曾多次搁置这个问题,去做其他事情,但之后又反复尝试。在那几个月里,我确信自己永远也找不到程序员的工作。我再次感到失望,彻底失去了自信。然而有一天,我终于成功了,在一个Java Swing应用程序中出现了这个美丽的模式。我感觉自己又回到了尼奥的时代😂。经过几个月的痛苦挣扎,我自豪地向我的常客展示了这个成果。他甚至都不记得是他让我实现这个算法的,但我当时就下定决心,要把这作为我的主业,并且会投入所有空闲时间和精力,无论如何都要实现它。
几个月后我27岁了,儿子出生了。这让我空闲时间大大减少。我不想把所有空闲时间都花在学习一些可能对我没用的东西上。我一直在学习,但尽量在儿子睡觉的时候学习。我原本想拿到高中毕业文凭,之后去大学学习软件工程,但我决定继续自学,因为这样我就能有更多的时间陪伴儿子,而且似乎我可以在网上找到我需要的一切。
我的进步真正突飞猛进是在我把服务员的工作换成一家网络托管和域名提供商的客服之后。现在我每天都对着电脑,可以利用工作时间学习更多东西,这次学习的是终端、SSH、Docker、服务器管理和DNS。我开始了解互联网的运作原理,并接触到了♥ JavaScript ♥。我放弃了Java,开始用Node.js和Angular 1编写Web应用程序。我结识了公司里的开发人员,并参加了我的第一次开发者大会。虽然当时我有点不知所措,但我接触到了很多新的框架和库,以后可以查阅资料并尝试使用。其中之一就是React。当我开始研究React时,它从一开始就让我感觉很合适。相比Angular中那些服务和控制器带来的双向数据绑定,React的组件模型和单向数据流对我来说更容易理解。
从那时起,我便专注于 React 和 Node.js。现在回想起来,这似乎是当时最好的选择。那大概是 2016 年左右。到了 2017 年,我觉得自己已经准备好申请前端或全栈开发的工作了。我申请了一家赞助了线下聚会的公司。他们邀请我去面试。我没带简历就去了,因为我之前当服务员的经历对他们来说根本不重要。我唯一带的东西就是我的笔记本电脑。他们问了我一些技术问题,大部分我都能回答。我还给他们看了我正在做的一个项目。这个项目是用 Node.js 和 React 构建的,包含一个简单的前端、一个经过充分测试的后端,以及一个docker-compose.yml启动文件。这个项目甚至还没完成,只有一些连接到 API 的基本视图和表单。等待他们回复的那两周,是我人生中最漫长的两周。当他们告诉我我被录用时,我简直欣喜若狂。
我第一次就成功拿到这份工作,当然运气也很重要,但我意识到我本可以更早申请。我是个完美主义者,想一次就把所有事情都做好。在我做开发人员的职业生涯中,我遇到过很多经验远不如我的人申请这家公司,其中一些人也成功入职了。
我想通过我的故事告诉大家,你可以比想象中更早地申请工作。不要让完美主义阻碍你。有时候,你只需要展示一些证据,证明你了解如何使用该公司使用的技术栈编写应用程序就足够了。
在软件开发公司工作能让你学习速度更快。如果自学,你每天可能只有两小时的空闲时间。而在公司,你每天有八小时的工作时间,而且还能拿到工资。此外,你身边还有经验丰富的同事,他们乐于助人,在你遇到困难时为你指明方向。
别放弃,相信自己。我能做到,你也能做到!
文章来源:https://dev.to/jarvispact/from-waiter-to-developer-3k0

