这篇文章是教你如何成为一名专业 Web 开发工程师的养成指南。我从事 Web 开发的相关工作已经有 20 个年头了。在工作中我也很乐于帮助其他开发者。在接下来的内容里,我将告诉你想要成为一名 Web 开发者应该学些什么?怎么去学?在哪里学?(大多数是免费的资源)。最后我还会介绍如何获得开发的实践经验,以及最重要的一点——如何通过写代码赚到钱。

译者按:为了对初学者更加友好,我会将原文中的大多数链接替换成同类中文资源。

在我们正式开始之前有两点需要提醒的:

1.你完全可以跳过文中的部分内容。

不管你现在处于学习Web开发的那个阶段,这篇指南都会对你有所帮助。本篇教程的每个章节根据描述你掌握知识的进度命名。你可以直接跳到最符合你当前情况的部分开始读。不过作为一名初学者,或者只是才打算开始学习Web开发,还是从头开始阅读吧。

2.在你选定某个专业方向之前先把所有的都尝试一下。

赚钱不是最重要的,重要的是你需要热爱你的工作。但你不去尝试永远都不会知道自己喜欢什么。

v2-9e1417f8e7ed48d5c3cb2bab6316900e_hd

在这篇教程中将会带你领略Web开发的各个领域,首先浅尝辄止,然后再帮你挑选你所感兴趣的方向。在一开始,你不需要精通任何技术,只需要了解一些皮毛然后就去看看别的。直到你找到了一个想要努力的方向,再进行深入的学习。

我已经决定要学习编程了。我也喜欢Web开发,但就是不知道可以从哪里开始。

v2-9dbaa8c5fc149ee04a620e51e941cef3_hd

我先得恭喜你做了一个明智的决定!下定决心的你其实已经迈出了一大步,学习Web开发非常刺激,当然有时候也会充满挫折。不过别担心,我这不就是来帮你的么?

你的首要任务是尽快地了解Web开发各个领域的基础知识(通常也统称“全栈”)。你需要掌握的知识会非常宽泛,但也都很基础。这些都只是为了帮助你寻找到你最喜欢的领域,同时掌握一些最基本的通用知识。这样在你决定专精某项知识之前,也能处理好各个方面的困难和挑战。

学习HTML基础

Hypertext Markup Language 超文本标记语言(HTML)用来控制描述现在你在浏览器里看到的网页的内容和布局。从这里开始,你将会了解到如何创建可以与之交互的 用户界面。在你掌握了更多的语言之后,现在的所学就会变得尤为重要。

我在下面列出了你需要掌握的有关HTML的基础知识(都是免费的在线教程,下列教程来自菜鸟教程):

我现在已经掌握了HTML基础

很棒!这是重要的第一步!现在你该学点基本的JavaScript啦~

学习JavaScript基础

JavaScript是专门针对Web的编程语言,所有的主流浏览器(Chrome, Firefox, Safari, IE等)都内置支持JavaScript语言。你之前使用过的所有网站和Web应用也都包含大量的JavaScript代码。并且现在的JavaScript语言已经扩展到了包括服务器端桌面应用物联网设备在内的各类平台。

不过这才刚刚开始,你只需要了解一些基础知识(以下链接来自廖雪峰JavaScript教程):

我已经掌握了HTML和JavaScript基础

你真棒~接下来该收服CSS基础知识啦!

学习CSS基础

CSS 的全称是层叠样式表(Cascading Style Sheets)。CSS被用来定义你在HTML中编写的元素的外观。跟着MDN上的CSS入门教程学习基础知识,在这里学习如何用CSS对网页布局

转向后端

HTML/JavaScript/CSS都是“Web前端开发”的相关知识。也就是说你目前掌握的语言基本都是在浏览器里运行的。是时候看看后端是什么样子的了。接下来我们将学习如何写在服务器上运行的代码。你并不需要买一台真正的服务器回来,你自己的电脑已经足够强大啦。

有非常多的后端的编程语言,不过既然你已经了解了JavaScript,我推荐你学习NodeJS.NodeJS是一项能够在服务器端运行JS代码的技术。

除此外,你还需要了解一下Express框架和MongoDB.

Express

Express是一个基于NodeJS的Web应用开发框架,用来更方便地同网页进行请求响应交互。

Mongo DB

Mongo DB是一个数据库。用来存储和访问数据。

在这里学习Node.js + Express + MongoDB教程。请放心,你并不需要完全精通Node或Mongo,只需要跟着教程让这个技术栈的应用跑起来就好了。

我需要在前端、后端和全栈之间做抉择。

在你确定你你已经理解了前后端的技术之后,就是时候做决定了。可如果你对之前所学还是一知半解,最好先返回去再了解一些相关的知识。(这就和玩游戏教学关卡通关之后选职业一个概念)

目前,你一共写了两种代码。一种用来和用户交互,另一种和数据交互。你更喜欢哪一种?

用户交互?那么你的选择是前端开发工程师! 数据交互?那你的选择是后端开发工程师! 都喜欢?恭喜你,你将选择成为一个全栈工程师!

哪个也没兴趣?也要祝贺你,通过之前的学习,你发现了其实Web开发并不适合你,你也不必在这上面浪费更多的时间和金钱了。还是不想放弃?也许你只是没找到自己喜欢的编程语言?在后面的“我想成为后端工程师”的章节里挑选你喜欢的语言吧!

我想成为全栈工程师!

很不错!看来你得把这篇文章完完整整地读完啦!你需要学习的包含前端和后端的所有知识。

我已经掌握了JavaScript/HTML/CSS基础,我想成为一名前端开发工程师。

想要成为一名合格的前端开发工程师,你需要熟练掌握HTML/CSS/客户端JavaScript.同时你也需要熟练使用一些开发框架。

在开始下面内容的学习之前,确保你已经掌握了HTML基础知识。

HTML进阶

JavaScript进阶

为了让你更深入地了解JavaScrpit,我要推荐一个系列书籍,由Kyle Simpson撰写的《你不知道的JS》。而且整套书都在Github上开源免费!

除了这套书以外,MDN的JavaScript参考文档也会对你非常有用。

掌握了“前端三剑客”(HTML/CSS/JavaScript)固然很重要。但你想真的写出一些可以赚钱的代码,还需要熟悉一些框架。

学习jQuery

jQuery是史上最受欢迎的JS库。虽然一些新近的框架不再依赖jQuery,但假如你想尽快找到一份工作的话,掌握jQuery是十分有必要的。

我推荐你在FreeCodeCamp上学习jQuery。之后你可以在jQuery学习官网上了解更多的内容。

同时也不要忘了收藏jQueryAPI文档随时查阅。

学习主流JS框架

框架是为了帮助我们解决开发中经常会遇到的问题而开发出来的。JavaScript的框架数不胜数,我们来看看新近流行的一些JS框架,你也可以通过搜索引擎和招聘网站掌握各类框架的需求信息。

React

React是Facebook为了配合Flux架构开发的一款JS框架。主要用来构建用户界面。最近一段时间异常的火爆,已经远远甩开了AngularJS.所以你还在等什么:

Angular 1 & 2

Angular JS是Google推出的JS框架。刚推出的时候也是红极一时,Angular适用于开发中大型的Web应用。不过有一点恶心人的是,Google在计划推出Angular 2版本时,感觉他们有必要完全重写。结果就导致了1和2用起来感觉完全像是两个不同的框架。假如你想成为一个Angular专家,你就相当于要同时掌握两个框架。

Vue.js

Vue.js的开发者是尤雨溪。大神也在玩知乎袄。Vue.js是一个用来构筑用户界面的非常轻量的框架,使用非常方便,上手也会很快。并且真的很强大,不会有Angular那么臃肿,也不像React的JSX那么变态。所以我很推荐新手从学习Vue.js开始。

学习Bootstrap

(译者)学习Bootstrap可以看我之前总结的这篇:

当然Bootstrap也可以和之前所学的框架协同使用:

恭喜!掌握了上述内容之后,你已经是一名合格的前端开发工程师了。

我想成为一名后端开发工程师!

很不错的选择!首先你需要选择后端开发语言。可供选择的特别多,各有优劣。下图是一个编程语言受欢迎程度的排行榜。被框选起来的是Web开发中经常会用到的语言。

v2-4a1f1d409d446c40f8c13d09f0711c18_hd


要是你完全是个新手,不要着急做决定,先了解一下这几种语言的特性和语法,最后挑选出你喜欢的。

要是你已经掌握了某种语言,那么就专注于它吧!

Java

Java是一门广受欢迎的跨平台语言。它由Oracle公司开发和维护。Java可以用来开发Android应用,桌面软件,当然也能用来开发Web应用(只用做后端,或者用JSP技术也可以开发前端)。Java语言健壮可靠,而且网上有着无数的学习Java的资源。同样也是在大学里广泛教授的面向对象编程语言。

C#

C# 是微软为了对抗Java开发的编程语言。它在微软的平台上拥有良好的支持。它同样也是面向对象的,也不限于开发Web应用、桌面软件等。要是你忠于Windows的话,C#也许是个不错的选择。

Python

Python是最适合新手,最容易学习的编程语言。而且Python广受欢迎,可以被应用在各个领域。人生苦短,请用Python!

JavaScript

相信通过之前的学习你对JavaScript已经有所了解了。NodeJS的出现让JS在服务器端运行成为了可能。现在再深入了解一下吧!

Ruby

Ruby是一朵奇葩。爱它的人对它痴狂,它处在编程语言排行榜的前10名,但增长却非常缓慢。Ruby本身是一种介于函数式编程和命令是编程之间的语言。我推荐你尝试一下,兴许你会变成它的狂热粉丝呢。另外,近些年来Ruby语言的工作机会也有很多。

PHP

v2-4d74dcd20e03977844284ea9b19e83b8_hd

虽然近一段时间PHP看起来有点过气了。但是请不要忘记,PHP是全世界最好的语言。而且单就Web开发这一块来讲,全世界的网站有多一半是用PHP开发的。PHP7的推出极大地改善了其运行效率,Laravel框架也让编写PHP代码变得无比优雅。PHP不是原作者的菜,但译者最早学习的编程语言就是PHP,在这里也不想挑起语言之争,总之PHP值得你尝试着学习一下。

我已经学了很多Web开发的知识,但是缺乏实践经验。

没有任何经验的话是很难找到工作的。

第一步是试着完成一两个个人项目,来熟悉掌握开发流程。

在你的项目开发完毕后,试着在Github这类平台上发布会对你很有帮助。

Github

Github基于版本控制软件Git建立,是全球最大的开源项目托管网站。你可以在上面储存、管理、发布你的代码。Github是你作为一名开发者必须使用的网站。

开发个人项目

下面推荐一些你可以尝试的个人开发项目:

FreeCodeCamp上面同样有着各种各样的实践项目,在这里推荐两个:

实践经验

接下来你需要一些真实的经验。这意味着你需要与他人协作,参与到真实的项目中来。个人项目自然有其用处,但在找工作时还不够有说服力。

1.为开源项目做贡献

Github上面有着成千上万的开源项目,这些项目中有着许多公开的bug等着你去提供修复。在你的简历中加上你为一些知名项目贡献代码的事迹,将会是你浓墨重彩的一笔。你可以通过Code Triage来关注你感兴趣的项目进展。

2.为你的家人或朋友“打工”

专门为你做生意的朋友或家人开发一款Web应用或者一个网站吧。为他们解决实际的问题,给他们提供帮助。不过在选人之前最好慎重考虑,最好这个人的需求可以在90天左右的时间开发完毕,而且你们俩的关系也最好是比较亲近的。不要因为开发中途的一些矛盾搞得你们最后连朋友都没得做。

3.为非盈利组织工作

这将会是一个非常棒的选择!为非盈利机构开发Web应用,解决他们的实际问题。你可以在Catch a Fire上找到这样的项目。另外,如果你通过了FreeCodeCamp的所有挑战,你也能够获得为非盈利机构开发Web项目的机会。

4.出卖劳动力

你可以在网上找一些外包项目来做,为了避免广告之嫌,译者在这里就不推荐国内的网站了,反正一搜一大把。

我现在已经积累了一些实践经验了,怎么才能找到工作呢?

写一份儿牛X闪闪的简历

开发一个在线简历网站

开发一个介绍你自己的个人站点!你可以把你之前做过的所有项目都链接到上面。说明各个项目都解决了什么样的实际问题。这会对你很有帮助!

准备好编程面试

掌握通用的面试技巧

出发去找工作吧!

不要妄图一瞬间就找到你心仪的公司和喜爱的岗位。先找到一份可以写代码养活自己的工作再说。等到你积累了更多的经验,自然也就能迈出下一步了。

我想要成为一名自由职业者!

自己当自己的老板听起来是非常爽的。但事实上自由职业并不像想象的那么轻松。在这里推荐Brennan Dunn写了许多有关自由职业者的文章:

DoubleYourFreelancing.com

在外国的网站上注册成为自由职业者对大多数人来说有些不切实际,国内这一块发展也比较混乱,为了避免广告之嫌,译者也就不推荐链接了。

我朝着成为一名Web开发者的方向努力了,但我现在感觉力不从心。

我很理解你的心情。这本来就不是一件容易的事情,而且任何口口声声说着学Web开发很容易的人自己其实都不怎么样,要么就是想要骗你钱。假如你现在有些不知所措,那么重新思考一下这些问题:

不忘初心

问问你自己,你甚至可以写下来!你当初为什么要决定走上这条路?你的想法仍然没有改变么?那么为什么要停下来呢!?继续迎难而上吧!

脚踏实地

现在你已经考虑了很多,脑子里想到了最坏的结果,也期冀最好的愿景,还有现实中最可能发生的情况。你完全可以把这些想法都记录下来。没有必要畏惧,面对现实,脚踏实地地一步步走下去。

欢迎在评论区分享你的心得体会。

原文链接:The Practical Guide to Becoming a Professional Web Developer,作者:Bill Sourour