让我们成为2018年的顶尖后端工程师

前端工程师 / 后端工程师 / DevOps工程师@poly_soft

我最近翻译了一篇关于如何成为2018年最前沿的前端工程师的文章,但在该存储库中还有放置了后端和DevOps的路线图图片。
然而,后端的文本只有一行待办事项,没有任何说明。
我一直期待着能有解释的加入,结果却发现有其他人在做这个了。

以下是2018年的现代后端开发者的日语翻译。

2018年的现代后端开发者

当今的Web开发形态和数年前完全不同。
Web开发有太多选择,让人迷茫,不知道该怎么做。
这也是我们考虑创建这些步骤的可视化表格并逐步进行Web开发的指南的原因之一。

最近,有一个题为“2018年现代前端开发者”的帖子。
在那里,承诺提供有关后端和DevOps的最新路线图。
本文根据这个承诺描述了最新的后端开发者路线图。
如果您还没有看过前端路线图,请先看一下。

我们也在处理DevOps,并希望能在下周发布它。相关仓库请参考此处,并计划单独发布一篇文章。

我们不要再继续冗长地谈论了,让我们立即开始吧。
所有的路线图都已在图像中显示,但我们将在下面逐步解释每个步骤。

01.png

建议你了解基本的HTML/CSS语法,尽管这张图片上没有提及HTML/CSS的知识。

步骤1- 学习一门语言

当选择语言时,存在着很多选择。我们首先将其分为不同的类别,以便更容易做出决定。如果你是刚开始学习后端开发的初学者,我们建议你从脚本语言中进行选择。因为它们有着很大的需求,并且你可以很快地学习它们。如果你已经有前端知识,学习Node.js将会很容易。那里也存在着很多市场。

如果您已经从事过后端开发,并且正在使用脚本语言,那么我建议您在选择下一个语言时不要再选用另一种脚本语言,而是尝试选择函数式编程语言或多范式语言。
例如,如果您正在使用PHP或Node.js,那么我建议您尝试使用Erlang或Golang,而不是Python或Ruby。
这将无疑有助于提升您的能力,并为您打开新的视野。

第二步:实践你所学的内容。

要学习就只有练习。
选择一门语言,理解基础后,请用该语言进行实践。
我们可以制作许多小型应用程序。
下面只列举一些想法。

・编写一个功能相当于bash命令的功能,例如ls。
・创建一个命令,用于将Reddit中的帖子提取出来并以JSON格式保存至/r/programming。
・创建一个命令,将目录结构写入JSON格式。
・创建一个命令,可以根据JSON重新生成目录结构。
・思考每天需要执行的任务,并将其自动化。

第三步 – 学习包管理器

了解语言的基础并创建一些示例应用程序后,接下来要研究如何使用包管理器。
包管理器对于在自己的应用程序中使用外部库非常有用,也对于将自己的库发布给其他用户非常有用。

如果选择了PHP,那么就用Composer;如果选择了Node.js,就用NPM或者Yarn;如果选择了Python,就用Pip;如果选择了Ruby,就用RubyGems。
无论选择哪种语言,都应该学习如何使用该语言的包管理器。

第四步-标准和最佳实践

请先了解您选择的编程语言的实现标准和最佳实践。例如,PHP有PHP-FIG和PSRs。Node.js有许多不同的社区指南,其他语言也有类似的情况。

步骤五-安全

请务必阅读与安全相关的最佳实践。阅读OWASP指南,并理解各种安全问题以及避免它们的方法。

第六步-练习

通过学习至今,我已经了解了语言本身、标准和最佳实践、安全性以及包管理器的使用方法。
下一个步骤是创建一个包,并尝试将其分发给其他人使用。
在创建时,请务必遵循标准和最佳实践。
例如,如果选择PHP,可以在Packagist上发布,如果选择Node.js,则可以在Npm注册表上发布。

如果可以的話,接下來我會從GitHub上挑選一些專案,嘗試發送合併請求。
例如像下列這樣的。

– 根据学习到的最佳实践对代码进行重构。
– 解决未解决的问题。
– 实现额外的功能。

第七步 – 了解测试相关知识

在测试中存在几种类型,请理解它们的不同目的。
首先,我们要了解如何在自己编写的应用程序中引入单元测试和集成测试。
此外,让我们理解各种测试术语,如存根(stub)、模拟(mock)等。

第八步 – 实际操作

我要为之前编写的实用应用程序,尤其是Step6的目标,引入单元测试。

此外,我们将分析所写测试的覆盖率。

步骤九-了解关系数据库。

让我们学习如何将数据存储到关系型数据库中。
在选择学习对象之前,您需要了解一些数据库术语。
例如,键、索引、规范化、元组等。

在数据库中有很多选择。
然而,由于还在学习语言,所以最好选择一个简单的数据库。
有希望的选择是MySQL、MariaDB(几乎与MySQL相同的分支)和PostgreSQL,但MySQL可能是最好的选择。

第十步-实践时间

现在是时候运用我之前所学的一切了。

请利用您所拥有的全部知识,创建一个简单的应用程序。
无论选择什么样的想法都可以,比如选择创建一个博客,那么请实现以下的功能。

・用户帐号。注册和登录。
・用户可以发布自己的博客。
・用户可以查看自己发布的所有博客。
・可以删除自己的博客发布。
・私密博客发布只有自己可以查看,他人无法看到。
・已编写单元测试、集成测试。
・通过查询分析确认查询中应用了索引。

步骤11 – 学习一个框架

根据选择的语言和项目的不同,可能需要或者不需要使用框架。

请检查所选语言中的可用选项,并从众多选择中选择一种。

如果选择了PHP,推荐使用Laravel或Symfony,如果需要微型框架,则推荐使用Lumen或Slim。

对于Node.js,有几个强大的选项,其中最突出的是Express.js。

步骤十二 – 实际时间。

请将在Step10中创建的应用程序转移到选择的框架上运行。请确认所有包括测试在内的内容已经成功迁移。

第13步 – 学习无SQL数据库

首先,您需要了解NoSQL是什么,它与关系型数据库有什么区别,以及为什么需要它们。
虽然有几个选项可供选择,但建议您进行一些研究,并比较它们的功能和区别。
一般来说,您可以选择MongoDB、Cassandra、RethinkDB或Couchbase等。如果只能选择一个,那么MongoDB可能是较好的选择。

第14步 – 缓存

学习在应用层面上实现缓存的方法。可以使用Redis或Memcached在Step12创建的应用程序中进行缓存。

第十五步 – 创建RESTful API

请理解REST,并学习创建RESTful API的方法,务必阅读Roy Fielding关于REST的原始论文。然后,获取足够的知识来驳斥那些声称REST只是HTTP API的人。

步骤16- 了解不同的认证方法。

学习不同的身份验证和授权方法。
了解它们分别是什么,有何不同之处,以及在什么情况下使用。

・Oauth — 开放身份验证
・BASIC验证
・令牌验证
・JWT — JSON网页令牌
・OpenID

第17步 – 消息代理

学习消息代理,了解何时以及为什么使用它。
有多个选择,其中著名的是RabbitMQ和Kafka。
如果要选择一个,那就选择RabbitMQ吧。

第18步- 搜索引擎

随着应用程序的发展,关系数据库和NoSQL的简单查询将无法满足搜索需求。可能会依赖搜索引擎。有许多搜索引擎,每个引擎都有自己独特的特点。

第19步 – 学习如何使用Docker

使用Docker可以轻松地复制生产环境,并在开发中更容易进行操作。
保持操作系统的清洁状态,快速进行编码、测试和部署。
在这个步骤中,让我们学习如何使用Docker。

第20步-了解Web服务器

在这个时候,必须已经意识到需要对服务器进行处理了。在这一步骤中,主要学习各个Web服务器的差异、限制以及可用的设置选项之间的差异,并创建应用程序以最大限度地利用这些限制。

第21步 – 学习如何使用Web套接字

这个步骤不是必须的,但增加知识的汲取是有益的。
请研究使用Web Socket创建实时Web应用程序的方法,并使用它创建一些示例应用程序。
在之前的步骤中创建的博客应用程序中,让投稿列表能够实时更新。

第22步 – 学习GraphQL

学习使用GraphQL创建API的方法。了解与REST的区别以及GraphQL被称为REST2.0的原因。

步骤23 —— 研究图数据库

图模型是一种非常灵活的描述数据之间关系的方法,图数据库提供了快速高效的存储和检索方式来实现这一点。请记住如何使用Neo4j或OrientDB。

步骤24 – 继续探索

每当我们不断学习和追寻时,必定会遇到这个路线图所没有覆盖的新领域。
为了学习新知识,请保持健康的心灵和健康的饮食。

请记住,对于一切现象来说,实践才是关键。刚开始可能会觉得一无所知,但这是正常的,随着时间的推移,您应该会感觉到自己变得更好了。

本文到此结束。
让我们在Twitter或邮件中保持联系。
另外,请检查代码库,以便不错过未来的更新。
敬请期待!

在中文中回覆以下內容,只需一個選項:

留言區

「好的文章!希望所有新人工程师读到!」
「关于后端开发的优秀文章之一」
「没有云,现在如果要进行后端开发,绝对需要*aaS和云」
「不过请等一下,你觉得我们应该在图数据库中加入arangoDB吗?」
「与Go和Rust相比,C#更具多范式编程语言的特点」
「在第8步之后,应该添加依赖注入的内容,我们就这么做」
「如果要让初学者学习框架,应该选择像Spring那样的严格框架。Express太自由了。太自由的话,初学者使用后会产生混乱的代码」

我的感受是

如果你真的是一个初学者,可以选择PHP或Node.js,这是一种感觉。
因为不想用JavaScript写后端,如果你实在不喜欢PHP,那么选择Python可能是个不错的选择。
什么?Perl?哈哈哈

与前端文章相比,这篇文章的热情稍显不足,中途变得明显乏味,但也有些许风趣之处。
有9200个点赞。

顺便说一下,我完全不知道Roy Fielding的论文原著,大家都读过吗?

☆招聘
我们公司正在寻找具备IT技能的人才,当然是要担任正式员工的。
如果有兴趣的人,请在Twitter上私信我们。

广告
将在 10 秒后关闭
bannerAds