我从ESL教师到软件开发人员的历程
最初发表于我的博客InspiredWebDev.com,时间为 2018 年 11 月。
介绍
大家好,我叫阿尔贝托,这是我学习编程、编写编程书籍、创建自己的博客并成为一名软件开发人员的故事。
我的专业背景是会计和法律,我做梦也没想到自己最终会成为一名软件开发人员。但如今,我却在一家创业公司担任全栈 JavaScript 开发人员。
我的第一步
一切都始于我在新西兰的时候,当时我的女朋友在当地一所大学读书。她即将参加的一场考试是关于HTML的,我对此很感兴趣,于是开始帮她学习。
那是我第一次接触代码。我开始在Coursera上学习HTML和CSS ,我的第一个网站糟透了,页面中间居中是一堆文字,配上难看的彩色背景。
2016年10月——我最早尝试做博客页面之一。页面内容都是静态的,链接也都失效了。
帮助她准备考试后,我继续学习和练习,因为很久以来我第一次做自己喜欢的事情。
我最初用来练习的资源是Coursera和Codecademy。主要是因为这两个是我在网上最先找到的。
- Codecademy非常适合用来获得新语言的实践基础经验。虽然你学不到太多东西,但如果你只是想学习一些基础知识,它就足够了。
- 另一方面,Coursera让我接触到了 MOOC(大规模开放在线课程)的世界。那时候我根本不知道还有免费的在线课程。我记得我上过一门由约翰·霍普金斯大学开设的课程,虽然我不知道这门课现在是否更新了,但我可以肯定的是,那位老师讲得非常好。
自从发现了MOOC(大规模开放在线课程)之后,我很快就接触到了其中最受欢迎的课程:哈佛大学的CS50。诚然,我并没有完成这门课程,但它确实是一门很棒的计算机科学入门课程。
大约在2016年10月/11月,我发现了freeCodeCamp,并开始学习他们的课程。至今我还没有完成所有证书,主要是因为我有点懒,没有按时完成一些项目。而且我更喜欢做自己的想法和项目。
其他一些对我很有用的网站和资源我也想推荐:
- Lynda(虽然他们的一些课程内容不够新,但通过免费试用,您可以访问很多有用的资料)
- Team Treehouse(另一个付费网站,但同样,它提供免费试用期,足够你观看几门课程)
- Udemy(一个庞大的课程市场,可能很难找到你需要的课程。不要盲目相信评论,因为我发现很多高评分的课程并不是我喜欢的)。
- Udacity(提供高质量的免费学习资料。虽然主题不多,但质量都非常好,由谷歌和其他科技公司精心策划)。
- 可汗学院(非常适合学习数学和算法,我强烈建议你学习他们的算法课程,它会为你打下良好的基础)
- Awesome(GitHub 上的一个仓库,你可以在这里找到你可能需要的一切)
- 开发者路线图(另一个可以帮助你走上开发者之路的资源库)
这是我在 2016 年 12 月用 FreeCodeCamp 制作的随机名言生成器项目中的一条经验之谈。点击此处了解如何制作。
关于Udemy ,我有个建议:尽量避开那些“一门课搞定十个项目,从零基础到专家”之类的课程,尤其是那些时长超过 30 小时的。如果你跟我一样,很可能中途(甚至更早)就放弃了。当然,每个人的情况都不一样,也许你的经历会不一样。欢迎分享你的经验。
搬到另一个国家并在训练营学习
在新西兰待了几个月后,我跟随女友去了越南,在那里我抓住了一个机会,参加了一个免费的 Ruby on Rails 兼职训练营。
那时我对 Rails 几乎一无所知。我唯一会的编程语言是 JavaScript,而且当时我还是个新手。
如果你碰巧在越南,可以去Coderschool.vn看看。
总之,参加那个训练营是我做过的最正确的决定。
我还可以给你的另一个建议是:
多和志同道合、目标和兴趣相投的人在一起,这样追求目标就会更容易。
我的目标是成为一名更优秀的程序员。通过与志同道合的人相处,我感到更有动力,也学到了很多东西。
我记得的一个例子是学习如何使用命令行。我自学的时候总是很不愿意用它,但在训练营期间,我却被迫学习使用它。
有时候我们只是太懒了,我们需要的只是一点推动力,才能迈出进步所需的额外一步。
每周都有完成项目的截止日期,而且能够看到同学们的项目,这激励我更加努力,做得更好。
最棒的部分是和另外两个同学一起完成最终项目,这让我深刻体会到了团队合作的滋味。我们需要编写用户故事,通过迭代开发最小可行产品(MVP),不断改进产品,修复bug,最终将其部署到生产环境。
我们没能赢,但这次经历让我有机会接触到真实的工作场景,非常宝贵。训练营只持续了两个月,演示日结束后,我也没有收到任何工作邀请。接下来该怎么办呢?
训练营结束后
几周后,我和女朋友不知所措,决定开发我们自己的应用程序。
我们花了很多时间完善我们的想法并进行研究。
可惜的是,当时我的技能还不足以做出最小可行产品(MVP),我们的想法也被当地一家创业加速器拒绝了。
现在回想起来,我觉得这反而是件好事,因为在开始自己的事业之前,我更喜欢先在团队中工作。
再给你一个建议:如果你真的想创办自己的公司,一定要做好充分的准备,因为这将是一项非常艰巨且耗时的任务。我建议你观看YouTube上Y Combinator的视频,它们可以帮助你评估你的想法,看看它是否真的值得你投入时间。
我创建的另一个静态页面 - 2017 年 6 月
几个月后,我高兴极了,找到工作了。但是等等,这不是编程工作,而是教师工作。
在越南,外国人最热门的工作之一是教英语。尽管我的母语不是英语,但我最终也从事了这项工作。
我对编程的热情依然高涨,并且还在不断增长(当时我已经学习了一年),但这份新工作带来了新的挑战,让我有几个月失去了动力,期间我几乎没碰过笔记本电脑。
几个月后,我的动力又回来了,但我面临着一个决定:继续学习 Ruby on Rails 还是回到我的第一门语言 JavaScript。
我喜欢用 Rails 构建项目的便捷性和趣味性,但最终我还是决定回归 JavaScript,因为:
- 在我看来,Rails 的受欢迎程度似乎正在下降。另一方面,JavaScript 已经确立了其强大的地位,如今你完全可以用 JavaScript 构建一个全栈应用程序。
- 从我学习编程语言之初,我就很喜欢 JavaScript,而且由于它是我的第一门编程语言,所以我希望继续提升它。
做出决定后,我开始每天早起(凌晨 4:30/5 点)学习,然后再去上班。
在那段时间里,我读完了“你不知道的 JavaScript ”系列书籍(我从前一年就开始读了),并且开始观看Wes Bos 的《ES6 for Everyone》 。
我自己的项目
在学习 JavaScript 的过程中,我做了很多笔记,最终积累了如此多的笔记,以至于我决定将它们汇编成一本书。
从2018年3月到4月,我花了大约两个月的时间完成了书稿的初稿。差不多在同一时期,我还创建了我的第一个博客,它是用Jekyll搭建的,托管在GitHub Pages上。之后我又创建了一个新的博客,是用WordPress搭建的(现在已用Gatsby重建)。
我第一次在Reddit上发布我的书时,大家的反应让我非常惊喜。很多人都喜欢它,这让我感到非常自豪和开心。
效仿 Kyle Simpson 的“You Don't know Javascript”系列,我也将其发布在Github上供所有人阅读,并提供了购买选项,用户可以选择获得 epub、pdf 或 mobi 版本,或者仅仅是想支持我。
https://github.com/AlbertoMontalesi/The-complete-guide-to-modern-JavaScript
这里还有个建议:如果你对某些概念感到困惑,不妨试着向别人解释一下。如果你无法用足够简单的语言向初学者解释清楚,那很可能意味着你自己也没有完全理解。
这个项目增强了我的自信心,也让我意识到,自从我在新西兰摆弄 HTML 以来,我已经走了很远的路。
我开始喜欢上写作,并创作了更多内容,例如这份可以快速回顾 JavaScript 最近 3 个版本的速查表。

你可以在这里 下载完整图片(图片太大,无法嵌入文章)。这是
我的第一份速查表,并非完整版。
找到一份新工作
几个月后,到了八月。那时我正准备续签一年的英语教师合同,因为我觉得自己没有足够的信心在暑假期间申请任何编程职位。
是的,尽管我投入了大量的时间和精力,但我仍然觉得自己没有准备好去申请工作。我害怕被拒绝。
我还可以给你一个建议:如果你觉得自己不够格找到工作,很可能你只是患上了“冒名顶替综合症”,而实际上你可能已经具备了成为一名初级开发人员所需的全部技能。大胆去尝试吧,最坏的结果不过是被拒绝而已。
事情经过是怎样的
有一天,我决定加入一个新成立的由在当地从事科技工作的外国人组成的 Facebook 群组,并介绍了我自己、我的技能和我的成就。
那一刻,我感觉自己恰好出现在了正确的时间和地点:我收到了一位软件工程师的消息,问我是否愿意面试 JavaScript 职位。
他联系我的原因是,他正在寻找一名初级JavaScript开发人员,而我写过一本关于JavaScript的书,这让他很感兴趣。这表明我具备这门语言所需的知识,并且对它充满热情。
记住,给招聘人员留下深刻印象的最佳方式是用你的个人项目,但有时你也可以跳出固有思维。就我而言,我的项目是那本书,但我不会惊讶地听说有人因为拥有一个博客而获得面试机会或最终被录用,他们在博客上撰写教程或指南,展示了他们的知识和热情。
当时我既惊讶又害怕。我开始胡思乱想面试可能会出什么岔子,甚至想过拒绝这份工作。拜托,千万别像我一样。幸好,最后我还是接受了。
尽管如此,由于我觉得自己还没准备好面试,我还是向招聘人员申请了一周的准备时间。我之前从未练习过白板练习或任何与面试相关的内容,所以我决定用这一周的时间专门练习题目和面试题。
YouTube 上有很多模拟面试视频,它们真的能帮你增强自信。练习Codewars之类的编程游戏也对提升解决问题的能力非常有益。不要等到最后一刻才开始准备面试,甚至在你考虑申请工作之前几个月就开始准备。你永远不知道什么时候会需要这些技能,所以早点开始准备总是没错的。我经常看到有人推荐《破解编程面试》(Cracking the Coding Interview)这本书,但我没读过,所以无法推荐。
结果证明,我其实用不上那些东西。比起我之前的知识,我更渴望学习新知识,也更热爱这个领域。这些似乎足以说服他们聘用我担任初级职位。
面试非常顺利,最终,在我花费大量时间学习编程之后,我收到了offer!👍 现在我已经在这里工作10个月了。我热爱每一天,每天都能参与新功能的开发,学习新的技能。
我最初的计划是成为一名网页开发人员,但现在我是一名软件开发人员,每天都在开发一款企业应用程序,老实说,我对此非常满意。
我正在学习一些我以前从未使用或练习过的工具和语言,例如 MySQL、AWS、Node、Fusebox、Knex,尤其是 Typescript。
我的故事到此结束。你有什么故事想分享吗?或者,在你成为开发者的道路上,有没有什么让你感到担忧的事情?
关于作者
您可以在Devto或我的博客上关注我的更多故事,我在那里发布文章和教程。
你可以在亚马逊上找到这本书,或者在Leanpub上查看。这本书的免费版本可以在Github上找到。
只需几行代码即可创建动画轮播图——这是我 博客上提供的教程之一
如果这篇文章对您有用,请分享。
文章来源:https://dev.to/albertomontalesi/my-journey-from-esl-teacher-to-software-developer-5h30



