英文原文:Learn to code in 2018, get hired, and have fun along the way
新的一年,很多人都会想要有一个新的开始。在 Andrei Neagoie 看来,人们应该选择一个非常有前景而且能够从中获得兴趣的职业,他认为这个职业就是学习编程,而且是学习 Javascript,为什么他要这样说?又该怎么去学习?他发表在 Medium 上的一篇文章详细阐述了背后的原因,也给出了相关的学习规划供人参考学习。文章由 36 氪编译。
original="https://pic.36krcnd.com/avatar/201801/03022937/7uvrqjn0jyrob5rg.jpeg!heading" data-image-enhancer="larger than 578" />
如果你是一个初学者,初级开发人员,或者对这个行业很好奇,这篇文章就是为你准备的。如果你是一个成熟的开发者,你可能会在这里找到一些有用的链接,因为我列出了最好的资源,能给你的技能提升带来巨大好处。
利用在线课程和大多数免费工具,你可以获得一项有价值的技能,让你在一个有回报、充满挑战的行业中工作。2018 年,需要有技术素养的人的工作领域将会越来越多。这也是我第一次进入这个行业的原因。我想要控制自己的生活,并对自己从事什么类型的工作有发言权。直到今天,我还在坚持自己的观点:如果这是你的目标,这是一个最好的行业。
重要提示:这篇文章看起来可能像是指导你一步一步成为开发者的指南,但如果你仔细观察,这背后有一种你可以应用于任何领域学习的策略。
为什么要编程?
在我们进入真正成为一名开发者的步骤之前,必须要先了解一下为什么你要沿着这条路走下去。每一个需要你付出生命中重要时间的决定都应该是合理。毕竟,时间是我们拥有的最重要的资源:
A、你想要在这个行业中工作,在这个行业里,对技能的需求很大,而且有很多机会成为食物链顶端的非常重要的角色。
B、你喜欢独立。你想要一种能让你在世界上任何地方都能轻松找到工作的技能。如果你决定明天搬到冰岛去,你想确保在找工作方面不会遇到麻烦。
C、你已经注意到了 2003 年和 2018 年之间的区别,以及我们在短短 15 年里取得的技术进步有多大。你想处于一个影响世界进程的行业的最前沿。
D、过去几年,最大的行业增长是在加密货币(比特币)和人工智能(机器学习)领域。我们不希望在这些事情在未来占据主流的时候被抛在身后。你想要了解并且能够掌握这些技能。
E、你认为改变是好的,学习永无止境。那么为什么不做点新东西呢?
但我没有计算机科学学位,我甚至不知道互联网是如何运作的!别担心,我们会考虑到这一点的。继续阅读……
当你选择一条新的职业道路时,这里有一些不错/必须的衡量指标:
1、在接下来的 10 多年里,它必须是有用的。这项技能在未来的许多年里都应该被重视,来保证你的工作是安全的。
2、对有这种技能的人的需求必须多于供给。行业中技能熟练从业者的数量越少,你对你的工作和你所工作的公司的控制力就会越强。
3、无论你在行业中有多少年的工作经验,都能获得高薪。你肯定不希望在过上体面的生活之前,还要在公司的职位晋升上花几年的时间。
4、一个不需要大学专业学位的行业。你不会想要在开始赚钱之前去读研究生课程,然后在接下来的 4 年里负债累累。是的,我认为有比更昂贵的编程训练营更好的选择。
5、能够在最短的时间内赶上行业中表现最好的人。没有什么经验能帮你快速就业?你能以最快的速度缩小与该领域的资深专家之间的差距吗?
6、它必须能够给你提供基础技能。无论未来如何,你都有多种职业可以选择。例如,通过学习编程,你就能更好地理解新的或即将到来的技术,比如分布式应用、区块链和云计算,然后选择你想要进入的领域。
7、要开心。最重要的是,你每周都要工作 40 个小时。你当然不希望是枯燥乏味的。
根据我的经验,编程符合上面的每一个要点。你的经历可能会有所不同。我最喜欢的一本书是《太好了,他们不能忽视你》(So Good They Can’t Ignore You)。在书中,他们认为你不应该因为喜欢旅游就去从事旅行行业。大多数人都是通过奋斗和努力去掌握一项技能来找到激情的。一旦人们开始承认你的技能有价值,并且你能够因为这些技能而感到受尊重,那就是你对你所做的事情产生激情的时候。
你想自己评估一下,看看它是否适合你。
重要的一点是:记住,前 2 个月你会觉得自己在攀登一座无法翻越的高山。你学习的每一门教程或课程都会让你觉得自己是世界上唯一一个不懂这些东西的人。保持坚强。随着时间的推移,你会有越来越多的“会心”时刻。我们称之为冒名顶替综合征 (Imposter Syndrome):你觉得自己是唯一一个不知道这个信息的人,你被自我怀疑所包围。请放心,当我们学习新东西时,我们都会有这样的感觉。
你会学到的是,成为一个优秀的开发人员并不一定要记住一大堆文档。这是关于如何使用所有可用的工具来解决问题。这是一个解决问题的方法,从不知道的状态变为可能。
我是谁,你为什么要听我的?
这个问题非常直接,但我想这是公平的。首先,我是一名资深的软件开发人员,曾在包括硅谷在内的一些顶尖科技公司工作过。在我的职业生涯中,我一直很幸运,在 2018 年,我将帮助其他人学习软件技能。但我并不是天生的电脑奇才。我没有获得计算机科学专业的学位。
这一切都是在多年前开始的.....我想要转行,于是决定自学计算机编程。
第一个月,我回避了所有的教程或书籍。相反,我用这个月的时间来寻找我怎么去学习以及怎么有可能获得工作的最佳方式。我想要高效率,不浪费时间去学习过时的技术,或者学习一些我在一个月后就会忘记的东西。我研究了其他人的经历,看了招聘启事,与知名的开发者交流,查阅了在线课程,研究了训练营,甚至阅读了未来学家介绍 20 年后我们将会使用哪些技术的文章。基于这些,我为自己制定了一个专注于效率的课程:在最短的时间内能被雇佣的关键学习量。
课程的重点不在于做最少的工作。相反,它的重点是在最重要的事情上努力工作,以便以最优的方式进行工作。这并不意味者要做最低限度的工作,也不意味着要为成为一名初级开发人员而努力。如果你能够通过努力工作,跳过这个过程,直接进入中级开发者的角色,那将是一个更好的结果。幸运的是,我已经筛选过了所有的东西。
尽管我花了一个月的时间来对我的学习进行规划,而不是直接开始学习,但从长远来看,这是非常有用的,因为我并没有盲目。我知道我要去哪里,我有一张通往终点的线路图。你也会有。
所以,是的,我一直都能理解你的处境,也知道你真正需要些什么。当我开始学习的时候,我希望能有这样的东西给我提供帮助。我还发现,许多教程都是由行业内的资深人士来教授的,他们拥有大量的技术知识,但却无法正确地把这些知识教授给新手。我对当前市面上存在的大量的教学课程与视频进行了研究,而且还在进行中。
从那以后,我开始为财富 500 强科技公司提供咨询,召开编程研讨会,为即将出版的科技书籍提供咨询,并出席技术交流活动。我现在不需要为任何人工作。我热爱这个职业,我想很多人会喜欢它,也会从中受益。因此,我的使命就是帮助那些想要实现这一飞跃的人。
好吧,最后一句话有点戏剧性……
我们要学什么语言?
对,上面这个。
你将会成为一个 Javascript“忍者”的原因如下:
Javascript 无处不在。每个拥有网站或应用程序的公司都需要具备 Javascript 知识的人。这种语言是大量招聘信息的必备条件(如果你不信,可以在 LinkedIn 上搜索 Javascript 看看)。
通过引入 Node.js,你可以使用 Javascript 创建一个完整的应用程序(你可以使用 Javascript 来构建整个项目)。使用 Electron,React Native 等工具,Javascript 可以让你创建桌面应用程序,移动应用程序,Web 应用程序甚至 VR 应用程序。你可以通过使用像 Jonny-Five 这样的东西来控制机器人。你可以建立自己的区块链。Lisk 是一个类似于以太坊的平台,使用的就是 JavaScript。
如果您没有阅读第一个要点,并且正在考虑其他问题,请允许我再重申一遍:行业中对 Javascript 专家的需求是巨大的。每周都会有招聘人员和猎头与相关开发人员进行联系,这种情况并不少见。
Javascript 社区正以惊人的速度增长。这个社区有很多新的发展。有些人抱怨 Javascript 疲劳,因为每天都有越来越多的新工具被开发出来。然而,我们可以利用这一点,使其变成你的优势。你将会和那些在这个行业工作多年的人同时学习这些新技术。
相信我,这是一个很棒的技术,有很多需求,也有一个伟大的社区。如果你不相信我,这里有一个趋势开发者技能分析。
够了,让我们开始吧。在下面,你会找到我认为的最适合你的东西,让你能够充分利用自己的时间。在 5 个月后,你应该能够获得第一个真正的非入门级的编程工作。这个过程,不需要参加编程训练营。只有你和你的决心。
5 个月,一步一个脚印
我们将专注于在 2018 年最被人需要且最有可能找到工作的技能。像 PHP 或 jQuery 这样的技术已经过时了。它们没有任何问题,我完全尊重它们,但根据这些年我收到的一些电子邮件,很多使用这些技术的人都在经济上遇到了困难,而且有家人需要他们支持。时间对他们来说很重要,他们也希望尽快找到工作。
第一个月:大场面
要回答的一个大问题是:电脑、互联网和网站是如何运作的?我怎样才能建立一个网站?
理解费曼技巧(Feynman technique),这样你在接下来的 5 个月里就能真正学到东西,而不是只使用短期记忆。
互联网是如何运作的:这个来自 LearnCode.academy,这个来自 thenewboston。
计算机科学的最佳概述:计算机科学速成课
你可以在 Youtube 上关注这门哈佛课程。这可能是最有含金量的计算机科学课程。不需要做练习。
如何使用命令行:这个来自于 Zed Shaw。
如何建立一个网站/获得一个域/并让它运行:LearnCode.academy 视频。
HTML、CSS 和 Javascript 是如何组合在一起的:FrontendMasters 的网页开发课程。只涉及到 Javascript 的部分。
学会用 Bootstrap 建立网站。先从这个开始,然后转到 Bootstrap 4 文档,并添加你在样板网站上看到的组件。了解它提供的好处 vs 自己编写 CSS。
了解如何使用模板来使用免费主题和模板来构建网站。
如果你有时间,你可以在 freeCodeCamp 上参加一些关于 HTML 和 CSS 部分的课程。
第二个月:Javascript
要回答的一个大问题是:Javascript 如何让机器做你想做的事情?
这是你在接下来的几个月里关注的重点。Javascript 解决了什么问题?开始用 Javascript 编写小的程序,让你的网站以某种方式运行。这种语言能让你的网站除了看起来漂亮之外,还能做其他事情。从这两门课程开始:一和二。
阅读 Eloquent Javascript 书。
了解 DOM(Document Object Model,文档对象模型)操作。
阅读这篇关于编程的好文章。
了解如何使用 Chrome 开发者控制台编写 javascript。做这个 CodeSchool 课程(只有控制台部分)。然后学习在 html 中注入<script>标签来运行 JavaScript 文件。
看 Kyle Simpson 的这个演讲,完成第一个月剩下的课程。最后,在 CodeSchool 的 javascript 频道上完成这五门课程。
如果您在 5 个月内有任何疑问,可以使用 freeCodeCamp 中的这个指南进行简短的查询。
在这个两部分系列中学习新的 ES6 功能:一和二。
通过这些课程学习 git 和 Github 。创建一个 Github 配置文件,并开始每天提交。开始开发一个样本网站。
学习术语/行话:这个视频和这个。
当你有问题,或者想要深入研究一个话题的时候,就开始使用这个指南。
第三个月:Javascript+NPM+ 构建你的网站
要回答的一个大问题是:我能建立一个专业的网站,并了解整个过程吗?
谷歌开发人员工具→了解如何使用 Google Chrome 调试您的程序和网站。如果你还没有完成这个 CodeSchool 课程,请完成。
开始参加当地的一些编程和 Javascript 会议。
什么是事件循环?→一旦你对 Javascript 有了很好的理解,看这个视频将会改变游戏规则。把最好的关于 javascript 的讨论交给你。
在这里学习有关 Promises,和 ES7 中的异步等待。
最后,看看 Douglas Crockford 的这个课程。
在这里了解 Javascript 的历史。
下载 node.js 和 npm。从 NPM 下载 lodash 病使用 browserify 来使用常见的 js 导入。在这里了解一下。理解为什么 npm 对于开发人员来说是一个非常棒的工具。
到本月底,你应该有一个个人网站,上面有 Github 上的代码库。使用 Github Pages 可以免费有一个实时网站。
第四个月:React.js(或 Vue.js)
要回答的一个大问题是:React 或 Vue 解决了什么问题?
我有严重的偏见。我喜欢 React.js。事实上,我会把它教给其他人,并进行相关的研讨。所以请相信我。除非你有充分的理由去学习 Vue.js,否则你要学会 React.js。这是一个全新的、令人兴奋的工作,但还没有具体的工作岗位需求出现。
React→按顺序做:一,二,三。然后再去查阅官方文件,通读所有的资料。如果你有钱,这是最好的 React 教程。
如果你有时间,想要学习更多的关于 React 的深度教程,你可以点击这里。
可选:学习 Redux→观看本课程。不要让你的脑袋爆炸。然后阅读关于它的文档。
使用 create-react-app 构建示例 React 应用程序。创建 React 应用程序会为你开启一个新的世界。
在 Heroku 上部署你的应用程序。
在 GitHub 页面上部署你的应用程序。
开始关注 Medium 上面的 Top10 文章,阅读任何有关编程的文章。注册这些电子邮件列表,与业界正在发生的事情保持联系:Javascript 和 React。
开始建立你的在线简历。在这个问题上,有些人给出的建议比我好。看看这个和这个。我还写了一篇关于这个的文章,你可以看看。
最后一个月:服务器、数据库以及把这些点连起来
要回答的一个大问题是:服务器、数据库和树莓派在哪里适合这些方面?
学习如何构建一个 API 服务器。然后再进一步,在这里学习 node 和 Express.js 。
一旦你完成了这一步,使用一个有趣的 API,比如这一个,创建一个简单的应用程序。
订阅 computerphile youtube 频道,并观看他们的视频。尽管听懂其中的话题可能很难,但它会给你带来一些神奇的东西。
什么是计算机/服务器/操作系统:买一个树莓派并建立自己的服务器。在 YouTube 上查看不同的项目,你可以开始用你的树莓派。最后,在树莓派上制作一个简单的脚本。按照这个课程。在树莓派上托管你的网站。你会惊讶于自己是多么的酷。
在下面的主题上花一天时间。你不需要很好地掌握它们。只要了解为什么他们在那里,他们正在解决什么问题:测试,机器学习,时间复杂度,SQL,UX / UI,持续交付,基本数据结构。你应该能够解释什么是数据结构。提示:数组和对象是两种流行的 Javascript 数据结构。
我已经听到有人看到上面的建议后开始对我大喊大叫。“你疯了吗?!你不认为测试很重要吗?”但请听我说。我同意以上观点(测试)对于成为一名优秀的开发人员很重要,每个人都应该学习这些技能。然而,我们正努力在这里打基础。开始深入研究一个话题是很容易的,但是如果没有基础,你就不知道为什么它很重要,或者它与你正在做的事情有什么关系。此外,在我发现的大多数招聘信息中,几乎没有提到上述技能。把这些知识留到你工作的时候再去学习。
记住:你的目标是要以最高效的方式工作。
使用 Firebase 作为数据库构建一个小型项目。
阅读 JavaScript 的两大支柱的第一部分和 JavaScript 的两大支柱的第二部分。
让我们来回顾一下
在 5 个月结束时,你应该完成以下要求:
1、学习 HTML 和 CSS。然后,买一个域名,从像 BlueHost 或 HostGator 这样的地方购买主机,以最便宜的成本搭建一个网站,然后放到网上。如果你想使用 Github Pages,你可以跳过这个选项。但如果你能负担得起,那就从上述的托管平台买一个主机吧,这样你就能更好得理解它们的工作原理。从现在开始,这将是你的投资组合。学习如何更新和编辑。当你学习新事物的时候,继续让它变得更好。不要在这上面花太多时间。这就足以证明你可以在网上放点东西,让它看起来还不错。
2、开始学习 Javascript。现在,你如何让你的网站具有互动性呢?浏览上面的资源,看看怎么用 Javascript 来实现。
3、开始将你的小项目上传到 GitHub。雇主会看你的 GitHub 配置文件,以及你在那里的活跃程度。尝试在你的个人项目上每周提交 5 次(它们不必很大)。另外,也请尝试阅读本文并为一些开源项目做些贡献,如 freeCodeCamp。
4、当你遇到问题的时候,要学会使用谷歌,并使用 Stack Overflow。当你开始的时候,你遇到的 99% 的问题都可以在网上找到。或者加入 Javascript IRC 频道,并在遇到困难时提问。你所在的社区也可能有一个空闲的频道。如果没有,从这里选一个,和其他的开发人员多交流。
5、习惯使用命令行来做事。练习时应始终保持打开状态,并尝试使用它而不是 GUI(图形用户界面)。
6、学习 Javascript 的最新语言特性和趋势,并学习解决与它们有关的问题(即 Promises,ES6,ES7,函数式编程技术)。
7、参加当地的相关交流会议,开始与行内人士交谈。你会被所有你不知道的事情弄得不知所措。不要担心,这是自然的。当你可以和其他程序员见面的时候,就可以被行话和术语包围了。
8、开始听播客,Javascript Jabber。这会让你熟悉行话,所以当面试时间到来的时候,它不会让你不知所措。当你听前几次的时候,你根本不知道他们在说什么。不要失去希望。最终你会明白的。FunFunFunction 也是一个很棒的每周 youtube 频道,你应该关注。还有一个更复杂的播客,但可能是软件方面最好的播客,请查看“ 软件工程日报”。同时留意每年的 javascript 调查状况,看看行业趋势如何。
9、尽早向招聘单位投递简历。我们把它们作为练习使用。大多数面试官都是专业的程序员,这样他们就可以对你的技能进行评价,你也可以用这些来练习编程问题,并向这些专家提出你想要提出的任何问题。
10、开始申请要求范围远远大于你状况的工作。你会得到一些面试机会。你不应该为了一份工作而安定下来。如果你从不问,答案永远是否定的。
11、让你的 LinkedIn 个人资料看起来不错。不要在简历上花太多时间。把它写在一页纸上,简明扼要,写下你在前几个月学到的所有技能。自学已经显示出了很大的勇气。记住,你的简历只是为了给你获得面试机会,之后,它们就像纸巾一样……这个比方也不太恰当,因为纸巾很有用。我在简历上花了不到 2 个小时。与其他开发者不同的是,你来自不同的领域,有不同的背景。这怎么能不让你与众不同呢?
12、面试时,并为自己如何找到工作而感到惊讶。并不是所有的开发者都能获得成功,不过话说回来,在过去的 5 个月里,没有多少开发者能够学会一切。它显示出的是一种自信。只适用于 LinkedIn 上的工作,其余的你应该直接发邮件或者打电话给你想要工作的公司。不要把时间浪费在所谓的第三方求职招聘网站上。
哪些 20% 能够给我 80% 的结果
大多数人都有一个想法,那就是你只有得到 100% 的东西,才能进入下一个阶段。但对于大多数技能来说,包括编程,你在获得 100% 东西上花费时间越长,到达下一阶段的时间也就越长。你只有 5 个月。最后的 20% 将会在团队,实际项目(以及获得报酬)中得到更好的学习与获得。因此,我们只专注于获得 80% 的知识,从而有效地利用我们的时间。
从这一切中获得的最大收获
技术总是在变化。Javascript 尤其如此。现在事情变化得如此之快,以至于不可能知道每一个东西。你需要知道的是,所有的东西都是如何组合在一起的,以及每种技术都在试图解决什么问题。最重要的是,你只需要知道它的存在,这样你就可以在需要的时候查看它,并找到它。程序员是解决问题的人。学会用可用的工具来解决问题。我们大多数人花了很多时间在像 StackOverflow 这样的页面上,或者搜索谷歌,因为那里有太多的资源。一旦你打好了基础,你就可以去任何地方。你只需要知道如何寻找答案并提出问题。
结论
注重效率。我们大多数人放弃一个目标的原因是我们看不到结果。专注于重要的事情,这会让学习变得有趣。但它并没有就此结束。学习永远不会停止,你的目标是尽快找到工作,这样从那一刻起,你每天都能在学习的同时得到一份薪水。
随着时间的推移,编程变得越来越有趣,而且当你每天都能得到报酬来解决问题和发展自己的技能时,它会变得更好。真正的增长发生在你开始与真正的团队进行真正的项目的时候。
这就是为什么我会坚持你的“学习”期应该尽可能短,以避免债务,并增加你在最好的学习环境中学习的时间:团队合作。我甚至都不推荐从一开始就做自由职业者。让自己置身于一个人人都比你聪明的环境中,每天都在和他们一起工作。在那里,成为一块海绵,吸收所有的信息。
我们在建造树干。当树干变得又大又结实,根都扎好时,你学习新事物的速度将是指数级的。随着时间的推移,你会越来越快地形成知识的树叶。
把 2018 年作为你冒险的一年,你会学到一种由高需求的技能,你会有一段新的经历,你会得到新的机会。试一试吧。
编译组出品。编辑:郝鹏程