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

简介: 简评:之前,后端开发路线图仅仅是一个技术推荐,且没有明确的方向指明应该遵循的顺序,这份重新制作的指南将会给你一个更好的方向。现在的 Web 开发与几年前完全不同了,有很多不同的东西可以轻易地把人拒之门外,这也是我们决定制作这个循序渐进指南的原因之一,并让任何人可以清楚地了解他们在 web 开发中扮演的角色。可以在下面的图片中找到详细的路线图,而我也将在下面的描述中解释每一个步骤。

简评:之前,后端开发路线图仅仅是一个技术推荐,且没有明确的方向指明应该遵循的顺序,这份重新制作的指南将会给你一个更好的方向。

现在的 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)

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

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

原文:https://medium.com/tech-tajawal/modern-backend-developer-in-2018-6b3f7b5f8b9

译文:https://zhuanlan.zhihu.com/p/35620194

相关实践学习
MySQL数据库快速部署实践
本场景主要介绍如何在一台配置了CentOS 7.7版本的ECS实例(云服务器)上安装mysql,执行mysql的常用操作,学习基本的SQL语句。
相关文章
|
22天前
|
Linux 程序员 数据格式
【2026最新】Notepad++下载、安装和使用一篇搞定(附中文版安装包)
Notepad++ 是一款免费开源、轻量高效的 Windows 文本编辑器,支持 C/Python/HTML 等 80+ 语言语法高亮、代码折叠、正则替换、编码转换及插件扩展,专为程序员与文本处理用户打造,完美替代系统记事本。(239字)
|
7天前
|
人工智能 缓存 安全
Claude Code 封号真实原因曝光,这次彻底不装了,直接针对国内开发者的账号下手?
Claude Code 封号潮背后:逆向扒出客户端隐写区域标记,Anthropic 政策收紧叠加 DeepSeek 7 月涨价,国产替代更紧迫。
|
13天前
|
人工智能 JSON 自然语言处理
让教学更智慧:用阿里云百炼工作流,自动生成中小学教材内容#小有可为#有温度的AI
通过可视化工作流编排,将大模型推理能力转化为标准化的教学内容生成引擎。教师只需输入教材标题和适用学段,即可自动获得结构完整、符合课程标准的章节内容,大幅降低备课门槛,助力教育资源均衡化。
496 127
|
17天前
|
存储 人工智能 监控
QoderWork完全指南:从入门到精通,把“AI实习生”变成你的全能工作搭档
阿里云2026年推出的桌面端AI工作助手QoderWork,不止聊天,更可动手干活:本地运行、安全可控,支持文件整理、数据分析、PPT生成、网页开发等;内置专家套件、多Agent协作与自定义Skills,让AI真正成为你身边的“AI实习生”。
|
8天前
|
人工智能 安全 程序员
终于,Claude Code 封号的原因被曝光了!竟然针对中国用户,植入隐形代码?!
通俗易懂地揭秘 Claude Code 封号的手段,分享一些自己对 AI 编程困境的思考,Codex、Cursor、DeepSeek、智谱 GLM、甚至是豆包,都有所行动了
461 1
|
9天前
|
人工智能 安全 Cloud Native
Higress 新发布:AI Gateway 能力增强,Gateway API 及其推理扩展持续打磨
增强 AI 网关能力,持续打磨 Gateway API 及其推理扩展。
393 125
|
6天前
|
人工智能 编解码 物联网
2026 最新Stable Diffusion 本地部署教程 下载安装使用详细图解(含官网安装包)
Stable Diffusion(SD)是2022年发布的开源文生图模型,由Stability AI等联合开发。支持文生图、图生图、局部重绘等,依托VAE降低算力需求,可在消费级显卡运行。本文提供秋葉aaaki制作的Windows整合包(含图形界面与插件),开箱即用,零配置启动。