如何成为一名后端开发工程师

这是一系列高赞文章,详细介绍了前端、后端、DevOps 的路线图,在 Github 上也是一个高星项目 。
现在的 Web 开发与几年前完全不同 。有很多新东西让刚进入 Web 领域的开发人员感到很困惑 。这也是我决定逐步制作这个直观的指南来展示 Web 概况的原因之一,可以让任何人都清楚他在 Web 开发中所处的角色和必备的条件 。
大约一周前,我发布了一篇文章:如何成为一名前端工程师,我在里面承诺会发布 Backend 和 DevOps 相关的路线图,这篇文章将实现这个诺言,是关于现代后端开发人员的 。

在这之前,后端路线图只是对技术的全面介绍、推荐,没有遵循明确的顺序,类似于之前的前端路线图,提供了分步指南,让你对此有一个更好的了解 。
我们还在写 DevOps 相关的路线图,希望下周能够发布,同时会发布相关文章,这里是我们存放这些项目的仓库 。
如何成为一名后端开发工程师

文章插图
 
事不宜迟,让我们开始吧 。你可以在下图中找到详细的路线图,但我也会在下文中解释说明相关步骤 。
如何成为一名后端开发工程师

文章插图
 
我们将对其进行分解,并对每个步骤做详细说明 。
在此之前,尽管上图中没有列出 html/css 相关的知识,还是建议你至少了解一些相关知识并懂得如何编写一些基本的 HTML/CSS 。
Step 1:学习一门语言语言有很多种选择,这里我将它们分为几类,以方便你做选择,对于刚开始进行后端开发的初学者,我建议你选择任何一种脚本语言,因为有很多需求需要用到它们,而且脚本语言容易快速入门 。如果你有一些前端知识,则可能发现 Node.js 更加容易,且有巨大的就业市场 。
如果你使用某种脚本语言做后端,则建议你不要选择其他的脚本语言了,而是选择其他函数式或多范式语言 。例如,你已经在使用 php 或 Node.js,不要再使用 Python 或 Ruby,而应该尝试使用 Erlang 或 Golang 。这样能够帮你拓宽思路和视野 。
Step 2:练习你所学的东西没有比练习更好的学习方法了,一旦你对所选的语言有一定的概念和基础了解,就可以开始使用了,尽可能多地写一些小型程序,这里有一些建议供你参考:
  • 实现一些自己用过的 Bash 命令,比如 ls 功能
  • 编写一个命令,获取 Reddit 上有关 r/programming 的帖子,并以 JSON 格式保存
  • 编写一个命令,将目录结构以 JSON 格式进行保存,比如: 执行 jsonify dir-name 可以保存 dir-name 文件目录结构
  • 编写一个命令,读取上面保存的 JSON 目录结构,并新建一个类似的文件目录
  • 考虑你每天要做的一些任务,并尝试用代码进行自动化
Step 3:学习使用软件包管理在了解该语言的基础知识,编写一些示例程序之后,接下来应该学习如何使用这门语言的包管理软件 。包管理可以让你使用外部代码库,或者分发你的库文件给其他人使用 。
如果你选择 PHP,则必须学习 Composer,Node.js 则需要学习 npm 或 yarn,Python 则是 pip,Ruby 则是 RubyGems,无论你选择哪种语言,都需要学习相关的包管理软件 。
Step 4:相关标准和最佳实践每种语言都有自己的标准和最佳实践,根据你选择的语言学习这些标准和实践 。例如,PHP 的 PHP-FIG 和 PSR,Node.js 的社区指南,其他语言也是如此 。
Step 5:安全确保你阅读了安全相关的最佳实践,建议你阅读 OWASP(Open Web Application Security Project) 指南,了解不同的安全问题,以及你选择的语言如何解决这些问题 。
Step 6:练习在你了解了语言、标准、最佳实践、包管理和安全相关的基础知识之后,开始创建一个软件包,并将其分发出去(确保你遵循了相关标准和最佳实践) 。例如,如果选择了 PHP,则将其发布到 Packagist 上,如果选择了 Node.js 则发布到 npm 仓库中,以此类推 。
在你完成这些步骤之后,可以在 Github 上搜索一些项目,尝试发一个 PR(pull request):
  • 用你所学的最佳实践重构一部分代码
  • 看看项目中的 open issues,尝试解决
  • 为项目添加一个拓展功能
Step 7:学习如何进行测试有几种不同的测试模式,了解这些模式的目的是什么 。从现在开始就了解如何在应用程序中编写单元测试和集成测试 。另外,你需要了解一些测试术语,比如 mocks、stubs 。


推荐阅读