2018年,如何成为现代化的后端开发者

file
现在的网站开发与几年前的彻底不同了; 如今有不少让网站开发者感到困惑的东西。 这是咱们决定作路线图指南  step by step visual guides demonstrating the bigger picture 的缘由之一,并让每一个人清楚的知道应该在网站开发中处于何种角色。

一周之前, 咱们发表了一篇文章 Modern Frontend Developer in 2018 ,咱们承诺了为后端和DevOps发布最新的路线图。如今履行承诺, 这篇文章是关于现代后端开发者的。 若是你尚未查看前端开发者路线图的话,去看一下吧。前端

以前的后端路线图只是一个纯粹的技术推荐,没有明确的方向和应该遵循的顺序。因此咱们像前端路线图那样从新绘制了它,让它能够一步一步的引导以给你一个更好的建议。laravel

咱们如今在为 DevOps 努力绘制路线图,并有但愿在下周发布。届时,咱们也将会发布一篇与之相关的文章, 在这里 link to the repository 你能够查看最新的更新状况。git

言归正传,让咱们开始吧。你能够在下图中看到详细的路线图,同时我也将在后面的描述中解释每一步。github

file

中文图片来自 developer-roadmap-chinese 让咱们把它分解一下并在下面的部分对每一步进行解释。数据库

在咱们开始以前, 尽管咱们没有把 HTML/CSS 的相关知识列在路线图上面,可是建议你至少了解一点而且知道怎么编写一些基本的 HTML/CSS。编程

第 1 步:学习一门语言

当咱们谈到语言时,你会有无数种选择。为了方便你作决定,我把它们分红几类。对于刚开始进入后端开发的初学者,我建议你随便选一门脚本语言去学,它们都有大量的需求,也能让你很快地成长。若是你已经有了前端开发的一些知识,你可能会发现 Node.js 会比较容易,再加上它有很大的就业市场。json

若是你已经开始作后端开发的工做而且已经掌握了一门脚本语言,我建议你不要去再学习一门新的语言了,而是挑选「功能(Functional)」和「多范例(Multiparadigm)」的一些内容去学。举个例子,若是你已经在用 PHP 或者 Node.js 开发了,不须要再学 Python 或者 Ruby,而是去尝试 Erlang 或者 Golang。这必定会帮助你扩展思惟、开阔眼界。后端

第 2 步:练习你所学

没有比练习更好的学习方式了。当你学习了你的语言而且对它的概念有了最基本的理解时,请把它们应用到实践。要作尽量多的小应用。下面只是一些能让你开始的想法:缓存

  • 实现你在 bash 中运行的一些命令。例如,尝试去实现 ls 的功能。
  • 写一个命令,从 /r/programming 获取 reddit posts 并用 JSON 文件的格式保存。
  • 写一个命令,用 JSON 格式表示一个目录的结构。例如,jsonify dir-name 可以给你一个带有 dir-name 内部结构的 JSON 文件。
  • 写一个命令,可以读取上面步骤的 JSON 文件,而且建立这样的目录结构。
  • 考虑一些你天天作的事情,而且尝试让它们自动完成。

第 3 步:学习包管理器

一旦你已经有了语言基础,而且作过了一些示例程序,那么你就该为选择的语言学习使用包管理器。包管理器能够帮助你在你的应用中使用外部的库或者发布你本身的库以供他人使用。安全

若是你选择了 PHP,你就必须学习 Composer。Node.js 则有 NPM,Python 有 Pip,以及 Ruby 有 RubyGems。不管你选择了哪种语言,都应该进一步学习如何使用它的包管理器。

第 4 步:标准和最佳实践

每一门语言都有本身的标准和最佳实践。为你选择的语言学习它们。好比 PHP 有 PHP-FIG 和 PSR 规范, Node.js 则有不少不一样的社区驱动指南,其余语言也是如此。

第 5 步:安全

务必阅读安全方面的最佳作法。阅读 OWASP 指南,了解不一样的安全问题并在您选择的语言中规避它们。

第 6 步:练习

如今你已经知道了语言基础、标准和最佳实践、安全以及怎么使用包管理器。如今开始建立一个包并发布给他人使用,而后确认遵循了你目前学习到的标准和最佳实践。例如,若是选择了 PHP,你能够把它发布到 Packagist 上;若是选择了 Node.js,你能够把它发布到 NPM Registry 上,等等。

若是你已经作完了这些,请在 Github 上搜索一些项目并发起 Pull 请求。对此的一些想法,有:

  • 重构并实现你学到的最佳实践
  • 研究公开的 Issues 并尝试解决
  • 添加其余的附加功能

第 7 步:学习测试

有几种用来测试的不一样测试类型。了解这些类型各自的意图。但如今先学习如何编写单元测试和集成测试。此外,了解不一样的测试术语,好比 Mocks,Stubs 等等。

第 8 步:实践

至于实践, 请继续编写你已经完成任务的单元测试,尤为是在第 6 步中所作的练习。

还要学习和计算你所写测试的覆盖率。

第 9 步:学习关系型数据库

学习如何将你的数据持久化到数据库。在你选择要学习的工具以前,先理解一些数据库的术语,好比说键,索引,范式,元组等等。

数据库在这里有一些选择。若是你学会了一个数据库,其余的数据库也学起来比较容易。你想学习的数据库有 MySQL,MariaDB (大部分相同而且是 MySQL 数据库的一个分支),PostgreSQL 。你能够选择 MySQL 开始学习。

第 10 步:实战的时间

是时候把你目前所学的一切,去实际中应用了。

建立一个简单的应用程序,把你目前所学的知识都用到这个应用里面去。能够选择任何想法去实现,也可能就是建立一个 blog 去实现下面提到的功能点

  • 用户帐号管理--- 注册和登录
  • 已经注册的用户能够发表博客
  • 用户能够浏览本身发布的全部博客
  • 用户能够删除本身的博客
  • 确保用户只可以看到本身我的的博客并且不能看到其余人的
  • 编写应用程序的单元/集成测试
  • 你应该为一些查询数据添加索引。分析查询语句确保有用到索引。

第 11 步:学习一款框架

根据你选择的项目和语言,你可能须要一款框架。每一门语言对此都有几个不一样的选择,继续来看你所选择的语言有哪些可选的框架,而后从中挑选一个。

若是你选择了 PHP,那么我建议你使用 Laravel 或者 Symfony 以及微框架 Lumen 或 Slim。若是你选择了 Node.js,将会有几个不一样的选择,但比较好的是 Express.js。

第 12 步:练习时间

为了实现这一步,请用你选择的框架对你在第 10 步完成的应用进行重构。并确认移植了一切内容,包括测试。

第 13 步:学习一款 NoSQL 型数据库

首先要理解它们是什么,它们与关系型数据库有什么不一样,以及为何须要它们。这里有几个不一样的选择,研究看看它们的特色和差别。一些常见的选择是 MongoDB,Cassandra,RethinkDB 和 Couchbase。若是你必须选择一个,请从 MongoDB 开始。

第 14 步:缓存

学习在你的应用程序中实现应用级缓存。了解怎样使用 Redis 或 Memcached 并对你在第 12 步中构建的应用实现缓存。

第 15 步:建立 RESTful API

了解 REST 和学习如何建立 RESTful API,请务必从 Roy Fielding 的原始文章中阅读 REST 相关部分。而后能够确认,若是有人说 REST 只是 HTTP API,你将可以与他们争论。

第 16 步 : 学习不一样的认证方法

学习不一样的认证和受权方法,你应该知道他们的不一样和优劣,何时更适合用什么方式去实现。

  • OAuth  ---  开发认证
  • HTTP Basic 认证
  • Token 认证
  • JWT --- JSON Web Tokens 认证
  • OpenID

第 17 步:消息订阅发布系统

理解各类消息订阅发布系统,知道何时什么场景适合用什么技术,如今有不少种技术能够选择,最突出的是 RabbitMQ 和 Kafka,你能够先开始学习 RabbitMQ 或者 Kafka。

第 18 步 : 搜索引擎

随着应用程序的增加,对关系数据库或者 NoSQL 数据库简单的查询已经没法知足你的需求,因此你不得不求助于搜索引擎。对于搜索引擎咱们有不少种不一样的选择,而且每一种都有它本身的特性。

第 19 步  :学习如何使用 Docker

Docker能够极大的促进你的开发,不管是复制与生产环境相同的环境,保持操做系统的整洁仍是加快编码、测试或部署的速度。我将把 “ 它将如何帮助我 ” 的答案留给大家去搜索。在这一步中,继续学习和如何使用 Docker。

第 20 步:Web 服务器知识

若是你已经学到了这里,你可能已经在前面的步骤中使用过服务器了 。这一步的主要任务是找出不一样 Web 服务器之间的差别,了解服务器的一些限制以及不一样的服务器的可用配置,最后最大限度的利用这些限制去编程。

第 21 步:学习如何使用 Web Sockets

Web Socket 不是必需要掌握的,在你的知识库中有这些知识,对你来讲是颇有好处的。学习如何使用 Web-sockets 编写实时 Web 应用程序并使用它建立一些示例应用程序。你能够用在 blog 的应用程序中,实现 blog文章列表的实时更新。

第 22 步:学习 GraphQL

学习如何利用 GraphQL 建立 API 。理解 REST 和 GraphQL 的不一样,以及为何 GraphQL 被称做 REST 2.0 。

第 23 步:研究 图形数据库

图模型表明了一个很是灵活的处理数据关系的方式, 而且图形数据库为它提供了快速高效的存储,恢复和查询 。 去学习一下怎么使用 Neo4j 或者 OrientDB 吧。

第 24 步: 持续探索

一旦你开始了学习和练习,你必然的会遇到一些不在路线图里面的事物。不过只要对学习新事物保持一个开放的心态和积极的兴趣就好。

记住,关键是尽你所能的去练习。刚开始会看起来很吓人,你可能会以为对全部东西都不理解,可是这是正常的,随着时间的推移,你会感受好一点的。

就这样, 这篇文章到这就结束了。 你能够在 twitter 和我作朋友,或者经过邮件 email和我联系。固然也别忘了去 watch the repository 查看将来的一些更新。 请继续关注!

转自 PHP / Laravel 开发者社区 laravel-china.org/topics/1339…

相关文章
相关标签/搜索