您当前的位置:首页 > 电脑百科 > 程序开发 > 程序员

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

时间:2021-04-21 15:10:54  来源:今日头条  作者:Python小叮当

这是一系列高赞文章,详细介绍了前端、后端、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。

Step 8:实践

为目前已完成的任务编写单元测试,尤其是 Step 6 中的任务。

学习如何计算代码的测试覆盖率。

Step 9:学习关系型数据库

了解如何将数据持久化到关系型数据库中,在继续学习之前,先了解相关数据库术语,例如:键、索引、规范化、元组(tuples)等。

这里有几种数据库供选择,不过你学会了一个,学习其他数据库应该很容易。如果你想学的 MySQL、MariaDB(Mysql 一个分支)、PostgreSQL,可以先从 Mysql 入手。

Step 10:练习时间

是时候实际应用你所学的知识了。

用目前所学的内容创建一个简单的应用程序。随便挑一个 idea 进行实现,比如创建一个简单的博客,实现如下功能:

  • 用户账号:登陆和注册
  • 注册者可以发布一个帖子
  • 用户可以查看他所发布的所有帖子
  • 他们可以删除自己的帖子
  • 确保用户只能看到自己发布的帖子,不能看到其他人的
  • 为这个应用编写单元测试和集成测试
  • 为这些查询服务做索引,分析这些查询索引,确保已经使用了索引优化

Step 11:学习一个框架

根据项目和所选的语言,你可能需要一个框架,不同语言有不同的选择,请根据所选语言和适用范围进行选择。

如果你选择 PHP,我建议你使用 Laravel 或者 Symfony,对于微框架,建议你使用 Luman 或者 Slim。如果你选择 Node.js,则有不同的选择,不过最主要的是 Express.js。

Step 12:练习时间

为了完成这个步骤,你必须确保完成了步骤 10 的内容,以及选择了特定框架,实现相关测试。

Step 13:学习一个 NoSQL 数据库

首先了解 NoSQL 数据库是什么,和关系型数据库有什么不同,以及为什么需要它们。有几种不同的数据库可供选择,先稍微研究一下,对比它们之间功能和差异。常见的 NoSQLogic 数据库有:MongoDB、Cassandra、RethinkDB 和 Couchbase。如果你想选一个,可以先从 MongoDB 入手。

Step 14:缓存

了解如何在程序中实现应用级的缓存。了解如何使用 redis 或 Memcached,以及如何在 Step 12 中构建的应用程序内实现缓存。

Step 15:创建 RESTful API

阅读 Roy Fielding 的论文中有关 REST 的部分,了解 REST 概念,并学习如何开发 RESTful API,如果别人说 REST 只适用于 HTTP API,你要能与之辩论。

Step 16:学会不同的授权方法(Auth Methods)

你应该了解身份验证和授权方法,它们是什么,有何不同以及何时应该优先选择哪种?

  • OAuth - Open Authentication
  • Basic Authentication
  • Token Authentication
  • JWT - JSON Web Tokens
  • OpenID

Step 17:消息中间件

了解消息中间件,以及何时如何使用它们,这里有多个选择,不过比较突出的就是 RabbitMQ 和 Kafka。如果你想选择一个,可以从 RabbitMQ 入手。

Step 18:搜索引擎

随着应用增长,关系型数据库和 NoSQL 数据库的简单查询功能以及不能满足应用需求,你不得不使用搜索引擎,上图有几个选项,每个选项都有自己的差异。

Step 19:学习使用 Docker

无论是生产环境还是镜像环境,保持一致的操作系统(类型、版本)可以加快编码、测试或部署速度,Docker 可以帮你实现这部分工作,极大提高开发效率,在这个步骤中你需要学习如何使用 Docker。

Step 20:Web 服务器相关知识

如果你已经到了这一步,之前的步骤中你可能就需要 Web Server 相关的知识了。这个步骤主要是了解不同 Web 服务器直接的差异、限制和不同的可选配置选项,以及如何利用这些限制来优化编码。

Step 21:学会如何使用 Web Sockets

虽然这部分不是必须的,但在学会相关的知识是有益的。了解如何使用 Web Socket 实现实时 Web 服务,并实现一个简单的程序。你可以在上面的博客应用程序中使用 Web Socket 来实时更新文章列表。

Step 22:学习 GraphQL

学习如何使用 GraphQL 开发 API,了解它和 REST的差异,以及为什么 GraphQL 被称为 REST 2.0

Step 23:学习图数据库(Graph Databases)

图模型可以以一种非常灵活的方式来处理数据中的关系,图数据库提供了快速、有效的存储、检索、数据查询的方式,了解如何使用 Neo4j 或 OrientDB。

Step 24:保持探索精神

在你学习和练习的过程中肯定会遇到本文路线图中未涵盖的内容,保持开放的心态学习新事物。

记住关键是尽可能多地练习,一开始可能比较困难,你觉得自己什么都没有掌握,但这是正常现象,随着时间流逝,你会觉得自己越来越好。



Tags:后端开发   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
1.MSDN站内有不少资源,经常用的有各个版本的Sqlserver的数据库 https://msdn.itellyou.cn/2.jQuery插件库站内有不少前端很不错的前端页面,特效等等,如果需要找前端一些资源,这...【详细内容】
2021-09-16  Tags: 后端开发  点击:(86)  评论:(0)  加入收藏
这是一系列高赞文章,详细介绍了前端、后端、DevOps 的路线图,在 Github 上也是一个高星项目。现在的 Web 开发与几年前完全不同。有很多新东西让刚进入 Web 领域的开发人员感...【详细内容】
2021-04-21  Tags: 后端开发  点击:(237)  评论:(0)  加入收藏
接下来我应该学习什么?如果你是一名开发人员,这个问题应该一直在你的脑海中。每天都有新的技术问世,也有对现有技术的改进。由于我们无法学习所有这些技术,所以决定下一步应该...【详细内容】
2020-12-25  Tags: 后端开发  点击:(190)  评论:(0)  加入收藏
前端开发和后端开发的区别有哪些?前端开发和后端开发哪个做起来更累?对于刚接触开发的朋友可能会有这样的疑问,下面就一起来了解下吧! 1、前端开发:网站的“前端”是与用户直接交...【详细内容】
2020-08-07  Tags: 后端开发  点击:(118)  评论:(0)  加入收藏
后端程序员常常需要登陆到生产环境上去分析问题,熟悉几个常用的sehll命令必不可少的了。 跳转目录cd 对应的目录查看磁盘空间,文件夹大小df -h 查看碰盘空间du -sh dir1 查...【详细内容】
2020-08-06  Tags: 后端开发  点击:(73)  评论:(0)  加入收藏
程序员小乐(ID:study_tech)第 910 次推文 图源:百度往日回顾:JVM 史上最最最完整深入解析 正文前言日志文件记录了影响MySQL数据库的各种类型活动,MySQL数据库中常见的日志文件...【详细内容】
2020-07-07  Tags: 后端开发  点击:(70)  评论:(0)  加入收藏
Dcat Admin v1.5.2 更新内容:本次版本没有包含不兼容改动,适合所有用户升级。功能优化部分1、增加文件表单自动上传功能开启这个功能之后选择完文件会立即自动上传,页面将不再...【详细内容】
2020-06-26  Tags: 后端开发  点击:(72)  评论:(0)  加入收藏
引言不太清楚前端和后端是什么意思?您是否想学习更多关于编程技术的知识,但又不确定从哪里开始?一个好的开始是了解前端开发和后端开发之间的区别。 一些专业的技术术语可能会...【详细内容】
2020-06-22  Tags: 后端开发  点击:(60)  评论:(0)  加入收藏
多年前在 TechEd Developers 大会上,被视为屈指可数的优秀软件销售大师——微软前 CEO 鲍尔默曾汗流浃背、振臂高呼如是道。作为一名个性 CEO,这一喊就是 14 声!在...【详细内容】
2020-03-22  Tags: 后端开发  点击:(101)  评论:(0)  加入收藏
RestFul API 是每个程序员都应该了解并掌握的基本知识,我们在开发过程中设计API的时候也应该至少要满足RestFul API的最基本的要求(比如接口中尽量使用名词,使用POST 请求创建...【详细内容】
2019-08-12  Tags: 后端开发  点击:(264)  评论:(0)  加入收藏
▌简易百科推荐
JAVA开发工程师(北京)本科 3-5年经验 面议 (招1人)岗位职责:1.负责我行应用系统的设计,完成软件编码工作,负责管理代码设计规范等工作;2.根据应用需求分析说明书,评估需求研发的可行...【详细内容】
2021-12-27  just do丶IT公众号    Tags:国企   点击:(1)  评论:(0)  加入收藏
今天聊聊编程的本质。程序就是数据结构+控制+逻辑,程序员编程工作的本质是翻译,翻译机要来了,程序员怎么办?黑客帝国中的程序黑客帝国4就要上映了,不知道前三部你看懂了么?值得多...【详细内容】
2021-12-17  博士聊IT    Tags:程序员   点击:(8)  评论:(0)  加入收藏
梦醒之后,每个人对于这份职业的未来、互联网行业的未来,以及更重要的,自己的未来都有了更现实的判断 文 | 祝颖丽编辑 | 黄俊杰一个生于 1986 年的人,他所走过的前半生:从出生起,...【详细内容】
2021-12-03    财经杂志  Tags:程序员   点击:(15)  评论:(0)  加入收藏
前些天在头条看到一个八二年的哥们,述说自己找工作屡次被拒的问题,在网上引起了广泛的讨论,这件事给我留下了很深的印象,因为这哥们和我同是程序员,都人到中年,上有老下有小。唯一...【详细内容】
2021-12-01  云南贤哥在深圳    Tags:程序员   点击:(20)  评论:(0)  加入收藏
很多读者都问过一个问题:程序员如何实现高速成长?之前也写过相关的文章,强调的主要是夯实计算机体系基础知识。 再说另一个诀窍:多看经典开源项目,这些项目大多是众多顶尖程序员...【详细内容】
2021-11-30  findyi    Tags:程序员   点击:(14)  评论:(0)  加入收藏
近日,一位45岁的网民在中国政府网留言求职,引发关注。该网民自称是一名软件开发人员,今年45岁,精通各种技术体系,“而我辞职回家半年后再回来寻找工作机会的时候,却发现连个面试...【详细内容】
2021-11-17  郭主任    Tags:程序员   点击:(42)  评论:(0)  加入收藏
即使在安全技术取得进步之后,网络犯罪仍在不断增加。据统计,网络犯罪每分钟给企业造成约 290 万美元的损失。主要是因为新技术不断涌现,难以维护安全。随着网络威胁的增加,网络...【详细内容】
2021-11-04  章大千    Tags:编程语言   点击:(40)  评论:(0)  加入收藏
北漂小伙李强(化名),在北京互联网大厂工作7年,月薪3万,离职回老家开摄影店,亏了200万。李强出生于山西一座名不经传的小城市,互联网专业大学毕业的他,没有听父母的劝言回到家乡考公...【详细内容】
2021-10-29  霸王课  今日头条  Tags:程序员   点击:(51)  评论:(0)  加入收藏
程序员是青春饭,这在国内似乎是公认的。所以很多公司不愿招大龄程序员,很多程序员也“知趣”地及早转型。有的做管理,有的做架构,我还见过改行卖保险的。总之,年龄大了不想敲代码...【详细内容】
2021-10-27  编程的艺术    Tags:   点击:(29)  评论:(0)  加入收藏
软件工程专业有Web开发、移动终端开发、大数据开发、计算机系统工程师、视频开发工程师、计算机软件应用工程师等就业方向。第一,Web开发。Web开发包括前端开发和后端开发。...【详细内容】
2021-10-19  辰新   企鹅号  Tags:软件工程   点击:(79)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条