终极版全栈工程师学习路线图

全栈工程师因为丰厚的待遇与较好的发展前景,一直是互联网行业较为热捧的岗位,因此有很多做前端、后端的程序员想要向全栈工程师方向转!

如果小伙伴想成为一个全栈 Web 开发人员,并找到第一份工作,下面给了一个参考指南,列出了大致需要学习的东西。

1. HTML5/CSS3

几乎所有程序,无论是在线的还是离线的,都在说明要成为 Web 开发者需要从 HTML 和 CSS 开始,因为它们是 Web 的基石。简单地说,HTML 是给网站添加内容,而 CSS 则为这些内容添上装扮。

2. JavaScript

JavaScript 语言一年比一年流行,新的库、框架和工具层出不穷。

Stack Overflow 2017 年的开发者调查指出,JavaScript 在全栈、前端和后端开发中都是最流行的语言。它是浏览器唯一支持的原生语言,同时也能作为服务器端语言(下面会看到 Node.js)。

3. 后端语言

一旦我们认为已掌握好 HTML/CSS 和 JavaScript 技能,之后就应该向一门后端编程语言进军,以便处理类似数据库操作、用户认证以及应用逻辑的任务。

所有在线练习平台和代码训练营通常集中于一门特定的后端语言,而实际上选择哪一门也并不重要,只要我们理解正在做的事情并学到了所选语言的本质。

如果问学哪一门后端语言最好,也许会得到各种各样的无数的回复,下图给大家列出了一些受欢迎的组合。

一个重要的提示:不管我们决定学习哪一门,请坚持下去,并尽可能深入学习-所有下图列出的语言都有相应的工作机会。

4. 数据库 & Web 存储

编写 Web 应用的过程中,有时候需要保存数据,以便稍后再进行访问。那么最好掌握下面这些有关数据库和存储的主题。

  • 理解关系型数据,比如 SQL,带来的好处。
  • 学习 NoSQL 数据库,比如 MongoDB。
  • 知道在某些情况下,哪一种更合适。
  • 知道如何使用你的后端语言连接数据库(比如 Node.js + MongoDB)。
  • 知道像 Redis 或 memcached 这类内存数据存储的优势。
  • Web 存储可在浏览顺中存储会话、Cookie 以及缓存数据。
  • 伸缩型数据库、ACID 和 ORM (都是可选的)。

5. HTTP & REST

HTTP 是应用于互联网的一项无状态应用协议 —— 它规范了客户端连接到服务器的行为(比如 JavaScript 代码通过 AJAX 请求后端服务器中运行的代码就是采用的 HTTP)。下面列出了我们应该了解的重要主题:

  • 什么是 REST 以及它为什么对 HTTP 协议和 Web 应用来说很重要。
  • 设计 RESTful API 的最佳实践。POST/GET 请求。
  • 学会使用 Chrome DevTools 是极其有用的。
  • SSL 证书是什么。
  • HTTP/2 & SPDY (可选)。
  • WebSockets、Web Workers,以及 Service Workers (均可选)。

6. Web 应用架构

当我们认为已经掌握了 HTML/CSS、JavaScript、后端编程、数据库 和 HTTP/REST ,就到了难对付的部分了。

这时,如果想创建一个稍微复杂的 web 应用,还需要了解如何组织代码,如何分割文件,往哪里保存大量媒体文件,如何结构化数据库里的数据,何处执行特定的计算任务(客户端还是服务器端),以及更多其他问题。

网上可以读到一些最佳范例,但是最好的学习应用架构的方法是自己实践一个包含多个分散部件的大型应用 —— 甚至更好的方法是:和团队合作开发一个相对大型/复杂的应用。

这也是为什么,比如有个七年以上工作经验的人,也许他未必比工作两年的另一个人更懂 CSS 或 JavaScript 。

但或许是多年各种不同应用和网站的工作经验,使他学习到如何最有效的架构和设计应用(包括学习其他重要事项),并且在开发过程中能看清“全局”。以下书籍或文章可以帮助小伙伴学习如何有效架构自己的网络应用:

  • 学习通用的平台即服务,比如 Heroku 和 AWS 。Heroku 允许做很少的配置或服务器维护,即可轻松上传代码,并执行应用。AWS 提供许多产品和服务帮助解决存储、视频处理、负载均衡以及其他更多其他的问题。
  • 应用和流行浏览器的性能优化。
  • 关于网络应用架构应该考虑哪些要素的一些观点。
  • 微软文档:设计网络应用。
  • 模型-视图-控制器编程模式(MVC)。
  • 当然,最重要的还是应该尝试与别人合作项目,阅读 Github 上受欢迎的代码,以及尽可能向资深开发员学习。

7. Git

Git是一套版本控制系统,它允许开发团队的开发人员跟踪代码库的所有更改。了解与 Git 相关的一些事项非常重要,它能让我们了解如何正确获取错过的最新代码,更新部分代码,修复并修改其他人的代码,而不会发生任何意外。

所以一定要学习 Git 背后的概念,并多做尝试。

8. 基本算法和数据结构

这个话题在开发世界中有点两极分化,因为有些开发人员认为在 Web 开发中不应该如此重视计算机科学的主题诸如树的遍历、排序、算法分析、矩阵操纵等。

然而,像谷歌这样的公司在面试中问这些类型的问题是出了名的。 有人说谷歌的前端工程师面试:

也就是说,正如 Ryan McGrath 所提到的,我们的前端(FE)工程师要有一个坚实的计算机科学(CS)背景,就像我们所有的工程师一样。

虽然有些公司确实要求申请人拥有计算机科学学位或同等学历,也有很多公司愿意雇佣没有这个技术资格的人,如果他们能够证明他们懂得如何开发应用程序和展示出对整个域的理解。

但是,作为一个合格的开发人员,而不是编写低效的代码或使用错误的工具,部分要求是理解一些基本算法和数据结构,能够分析权衡。所以你一定要学会一些东西:

  • 研究哈希表并试着在更深的层次上理解它们。这个数据结构构成了 JavaScript 中的对象(Python 中的字典,Ruby 中的哈希)的基础。
  • 理解树和图作为数据结构有何益处。
  • 理解算法复杂度分析的基础知识,所以你不会做傻事,像创建实际上没必要创建的3层嵌套的循环!
  • 懂得何时使用对象或是数组,并懂得取舍。
  • 了解为何在处理大量数据时缓存是如此重要。也要了解内存存储和磁盘存储各自的利与弊 。
  • 了解队列和栈的区别 。

学习所有这些是会很辛苦,但最终还是值得的,并且全栈开发充满乐趣!希望各位想转型或0基础想入行的小伙伴能够成功~

注:本文只是给出了全栈工程师需要的大致学习方向,而非详细的知识点结构。

原文发布于微信公众号 - 老九学堂(xuetang9)

原文发表时间:2018-01-18

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Golang语言社区

棋牌游戏服务器架构: 详细设计(三) 数据库设计

主要有3类Database: ServerInfoDB,UserInfoDB和GameDB。 ServerInfoDB主要存储的是游戏列表的信息,UserIn...

3448
来自专栏Play & Scala 技术分享

Play For Scala 开发指南 - 第1章 Scala 语言简介

2706
来自专栏牛客网

2019届网易JAVA实习2面经历

1835
来自专栏企鹅号快讯

代码学习与实践:开篇-测试深入了解代码的好处及实践

1 缘起 最近在负责测试的项目,相对来说比较复杂。从业务上来看,涉及商品添加、审核、交易、支付、退款、换号、管理等多个流程,从代码逻辑上来看,划分了9个模块,还...

1808
来自专栏恒思考

软件必备模块-软件设计

我想设计一个安卓,iOS或者Web应用的时候,开始做软件的步骤是什么,有个想法,做个需求分析,然后开始设计软件。这篇讲的是设计软件这一步。我想好了要做个什么,然...

1302
来自专栏互联网杂技

IOS 10锁屏界面不好用?来看这份严肃的交互分析!

iOS说:“清晰度,咱俩分手吧”。以往的iOS锁屏界面非常简单直接,但是来到今年的iOS10,情况发生非常大的变化,在开始认真严肃地为大家分析(tucao)之前...

2967
来自专栏携程技术中心

微分享回放 | 提高系统开发效率的“银弹”——X-series可视化大规模应用开发工具集

作者简介 赫杰辉,携程框架研发部高级研发经理,负责携程DAL组件开发与推广。 在开发一线奋战多年的老兵,热爱中国传统文化和推广开源软件,希望用自己开发的工具为...

3257
来自专栏Java学习网

编程能力七段论

编程能力七段论 前言   程序员的编程技能随着经验的积累,会逐步提高。我认为编程能力可以分为一些层次。   下面通过两个维度展开编程能力层次模型的讨论。   一...

2315
来自专栏微信公众号:Java团长

JavaEE学习路线图

这是学习Java的基础,掌握程度的深浅甚至直接影响后面的整个学习进程。Java的核心主要包括几个部分:

661
来自专栏idba

提问的那些事儿

工作7年了,接触了很多开发和其他岗位的同事 ,遇到各种各样的问题。求助过他人也帮别人解决过问题,在解决问题的过程中,合理的提问方式等于事半功倍,提出问题的同...

851

扫描关注云+社区