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

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

如果小伙伴想成为一个全栈 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 条评论
登录 后参与评论

相关文章

来自专栏织云平台团队的专栏

自研路由如何解决运维六大挑战?

腾讯内部一些基础服务比如统一鉴权登录、社交关系链、支付被内部很多其他业务调用,调用方往往横跨几个事业群,几十个部门,有数百个模块,上万台设备。

40512
来自专栏恰同学骚年

《大型网站技术架构》读书笔记一:大型网站架构演化

此篇已收录至《大型网站技术架构》读书笔记系列目录贴,点击访问该目录可获取更多内容。

781
来自专栏phodal

RePractise: 从真实世界到前后端的设计

RePractise终于又迎来了新的一篇,要知道上一篇可是在半年前呢——《Repractise前端篇: 前端演进史》。照RePractise惯例,这又是一篇超长...

1807
来自专栏ThoughtWorks

登录工程:现代Web应用的典型身份验证需求|洞见

朋友就职于某大型互联网公司。前不久,在闲聊间我问他日常工作的内容,他说他所在部门只负责一件事,即用户与登录。 ? 而他的具体工作则是为各个业务子网站提供友好的登...

2835
来自专栏携程技术中心

干货 | 携程第四代架构探秘之运维基础架构升级(上)

作者简介 本文由携程技术中心框架研发部吴其敏、王兴朝,技术保障中心高峻、王潇俊、陈劼联合撰写。 作为国内最大的OTA公司,携程为数以亿计的海内外用户提供优质的旅...

32710
来自专栏IT大咖说

苏宁易购:前后端分离架构的落地思考

1683
来自专栏ThoughtWorks

TW洞见 | 刘冉:QA应该更新的测试工具

作为一名QA,过去一年是我的软件质量知识体系和自动化测试知识体系收获最丰的一年,让我对于软件质量和自动化测试有了一个更高层次的认识。所以我写下了一些自己更新了的...

3617
来自专栏SeanCheney的专栏

《Learning Scrapy》(中文版)第1章 Scrapy介绍HelloScrapy喜爱Scrapy的其它理由关于此书:目标和用法掌握自动抓取数据的重要性开发高可靠高质量的应用 提供真实的开发进

本书作者使用的Scrapy版本是1.0.3。感兴趣的话,还可以看看Scrapy1.4最新官方文档总结。 ---- ? 下载本书代码:https://git...

2614
来自专栏Java架构

学Java分布式和高架构,必懂的两大知识点!

2204
来自专栏IT大咖说

一文通晓私有云构建之道

摘要 服务化在云计算中是非常重要的部分,所有组件以服务的方式去提供,而很多企业的数据库都还在构建当中。今天聊的就是私有云数据库构建的过程。如果大家有这方面的打算...

3386

扫码关注云+社区