2018最新后端开发人员的路线图

现在的 Web 开发与几年前完全不同了,有很多不同的东西可以轻易地把人拒之门外,这也是我们决定制作这个循序渐进指南的原因之一,并让任何人可以清楚地了解他们在 web 开发中扮演的角色。

可以在下面的图片中找到详细的路线图,而我也将在下面的描述中解释每一个步骤。

在开始之前,虽然我们没有在下面的路线图中列出 HTML / CSS 的知识,但建议读者至少要了解一些基本的 HTML / CSS 知识。

Step 1 —— 学习一门语言(Learn a Language)

语言有很多选择,我已经将它们分成几类,以便更容易做出决定。对于刚开始进入后端开发的初学者,我建议你选择任何脚本语言,因为它们有很多功能,可以让你快速起步。如果你有一些前端知识,你可能会发现 Node.js 更容易(还有一个很大的就业市场)。

如果你已经是后端开发并了解一些脚本语言,我建议不要选择其他脚本语言,而是从「函数式(Functional)」或「多范式(Multiparadigm)」中选择。例如,如果你已经在使用 PHP 或Node.js,请不要使用 Python 或 Ruby,而应该尝试使用 Erlang 或 Golang。它一定会帮助你延伸思维,并将你的思想带到新的视野。

Step 2 —— 练习你学到的东西(Practice what you have Learnt)

没有比实践更好的学习方式了。一旦你选择了语言,并且对这些概念有了基本的了解,就可以使用它们,尽你所能制作尽可能多的小应用。下面是一些让你开始的 Idea:

在 bash 中实现一些你自己使用的命令,比如尝试实现 ls;

编写一个获取和保存 reddit 上 /r/programming 文章的命令,并保存为 JSON;

编写一个以 JSON 格式列出目录结构的命令,例如 jsonify dir-name 返回一个带有 dir-name 内部结构的 JSON 文件;

编写一个读取从上面的步骤得到的 JSON 的命令,并创建目录结构;

考虑将每天做的一些任务,并尝试将其自动化。

Step 3 —— 学习软件包管理器(Learn Package Manager)

了解该语言的基础知识并制作了一些示例应用之后,需要了解如何使用该语言的软件包管理器,包管理器可帮助在应用程序中使用外部库,并分发你自己的库供其他人使用。

如果你选择了 PHP,你将学习的是 Composer,Node.js 有 NPM 或 Yarn,Python 有 Pip,Ruby 有 RubyGems。无论选择什么,请继续学习如何使用其包管理器。

Step 4 —— 标准和最佳实践 ( Standards and Best Practices)

每种语言都有自己的标准和开发的最佳实践,例如 PHP 有 PHP-FIG 和 PSR,使用 Node.js 有许多不同的社区驱动指南,其他语言也有相同的指导。

Step 5 —— 安全(Security)

请务必阅读有关安全的最佳实践,阅读 OWASP 指南并了解不同的安全问题以及如何以选择的语言避免它们。

Step 6 —— 实践(Practice)

你已经掌握了语言、标准和最佳实践的基础知识,安全性以及如何使用软件包管理器。现在开始创建一个包并分发给其他人使用,并确保遵循迄今为止学到的标准和最佳实践。例如,如果您选择了 PHP,那么可以在 Packagist 上发布,如果选择了Node.js,那么可以在 Npm 上发布,等等。

如果完成了,在 Github 上搜索一些项目,并在某些项目中提一些 PR。下面是一些 Idea:

重构并实现学到的最佳实践

查看未解决的 issue 并尝试解决

添加任何附加功能

Step 7 —— 了解测试(Learn about Testing)

了解如何在应用程序中编写单元测试和集成测试,另外,了解不同的测试术语,如mocks, stubs 等

Step 8 —— 练习(Practical)

为目前为止所做的实际任务编写单元测试,尤其是步骤 6 中所做的练习。还要学习和计算编写的测试的覆盖率。

Step 9 —— 了解关系数据库(Learn about the Relational Databases)

了解如何将数据保存在关系数据库中。在选择要学习的工具之前,请先了解不同的数据库术语,例如键,索引,规范化,元组等。

这里有几个选项,但如果你学习一个,其的应该也是相当容易去学。你想学习的应该是 MySQL,MariaDB 和 PostgreSQL。可以选择 MySQL。

Step 10 —— Practical Time

现在是时候把学到的东西拿来用了,使用迄今为止学到的所有内容创建一个简单的应用程序。选择任何一个 idea,可以是创建一个简单的博客,并实现其中的以下功能:

用户帐户 —— 注册和登录

注册用户可以创建博客文章

用户应该能够查看他创建的所有博客文章

用户应该能够删除他们的博客文章

确保用户只能看到他的个人博客文章(而不能看其他人的)

编写单元/集成测试

应该为查询应用索引,分析查询以确保索引有作用。

Step 11 —— 学习框架( Learn a Framework)

根据选择的项目和语言,可能需要也可能不需要框架。每种语言都有几个不同的选项,继续看看选择的语言有哪些选项可供选择,然后选择一个。

如果选择了 PHP,我会建议使用 Laravel 或 Symfony 以及微架构(Lumen 或 Slim),如果你选择 Node.js,有几种不同的选择,但突出的是 Express.js。

Step 12 ——  Practical Time

将 step10 中创建的应用程序转换为使用选择的框架,还要确保移植包括测试在内的所有内容。

Step 13 —— 学习 NoSQL 数据库(Learn a NoSQL Database)

首先了解它们是什么,它们与关系数据库有什么不同以及为什么需要它们。 有几种不同的选择,稍微研究下看看,并比较它们的特点和差异。 可以选择的一些常用选项有 MongoDB,Cassandra,RethinkDB 和 Couchbase,如果必须选择一个,请使用 MongoDB。

Step 14 —— 缓存(Caching)

了解如何在应用程序中实现应用程序级缓存,了解如何使用 Redis 或 Memcached,并在 step 12 中创建的应用程序中使用缓存。

Step 15 —— 创建 RESTful API(Creating RESTful APIs)

了解 REST 并学习如何制作 RESTful API,在 Roy Fielding 的文章中阅读关于 REST 的部分,如果他们说 REST 只适用于 HTTP API,那么确保你能够与他人争论。

Step 16  —— 了解不同的认证方法(Learn about Different Auth Methods)

了解不同的认证和认证方法,你应该知道他们是什么,有什么不同以及什么时候使用偏好。

OAuth — Open Authentication

Basic Authentication

Token Authentication

JWT — JSON Web Tokens

OpenID

Step 17  ——  消息代理(Message Brokers)

了解消息代理并了解何时以及为何使用它们。同样有多种选择,但突出的是 RabbitMQ 和Kafka,如果你想选择一个的话,可以先从 RabbitMQ 开始。

Step 18 —— 搜索引擎(Search Engines)

随着应用程序的增长,关系数据库或 NoSQL 数据库的简单查询不能够满足要求,而不得不求助于搜索引擎。

Step 19 —— 了解如何使用Docker( Learn how to use Docker)

无论是在复制与生产环境相同的环境,保持操作系统清洁或加快编码、测试或部署,Docker 可以在开发过程中大大方便工作,学习如何使用 Docker。

Step 20 —— Web 服务器知识(Knowledge of Web Servers)

如果你已经走到这么远了,你可能已经在前面的步骤中使用了服务器,这一步主要是找出不同Web 服务器之间的差异,了解限制和不同的可用配置选项,以及如何最好地利用这些限制编写应用程序。

Step 21 —— 了解如何使用Web Scoket(Learn how to use Web Sockets)

虽然不是必需的,但在工具带中有这些知识是有益的,学习如何使用 web-sockets 编写实时Web 应用程序并使用它创建一些示例应用程序。可以在上面制作的博客应用程序中使用它来实现博客文章列表中的实时更新。

Step 22 —— 学习 GraphQL(Learn GraphQL)

学习如何使用 GraphQL 制作 API,了解它与 REST 的不同之处,以及它为什么被称为 REST 2.0。

Step 23 —— 看看图数据库(Look into Graph Databases)

图模型代表了一种非常灵活的处理数据关系的方式,图数据库为其提供了快速高效的存储、检索和查询方式,学习如何使用 Neo4j 或 OrientDB。

Step 24 —— 继续探索(Keep Exploring)

一旦你开始学习和练习,你一定会遇到我们在这个路线图中没有涉及的东西,只要保持开放的心态和对新事物的渴望就好。

关键是要尽可能多地练习,起初你可能会觉得你并没有抓住任何东西,但这是正常的,随着时间的推移,你会觉得越来越好。


这里推荐一个大数据学习交流群:806025609,群里都是学大数据开发的,如果你正在学习大数据 ,欢迎你加入,群内还会不定期分享干货(只有大数据软件开发相关的),进群即可获取一份免费大数据学习资料~

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 151,511评论 1 330
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 64,495评论 1 273
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 101,595评论 0 225
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 42,558评论 0 190
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 50,715评论 3 270
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 39,672评论 1 192
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,112评论 2 291
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 29,837评论 0 181
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 33,417评论 0 228
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 29,928评论 2 232
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,316评论 1 242
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 27,773评论 2 234
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,253评论 3 220
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 25,827评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,440评论 0 180
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 34,523评论 2 249
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 34,583评论 2 249

推荐阅读更多精彩内容