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

file

如今的网站开发与几年前的完全不一样了; 现在有很多让网站开发者感到困惑的东西。 这是我们决定做路线图指南 step by step visual guides demonstrating the bigger picture 的原因之一,并让每个人清楚的知道应该在网站开发中处于何种角色。

一周以前, 我们发表了一篇文章 Modern Frontend Developer in 2018 ,我们承诺了为后端和DevOps发布最新的路线图。现在履行承诺, 这篇文章是关于现代后端开发者的。 如果你还没有查看前端开发者路线图的话,去看一下吧。

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

我们现在在为 DevOps 努力绘制路线图,并有希望在下周发布。届时,我们也将会发布一篇与之相关的文章, 在这里 link to the repository 你可以查看最新的更新情况。

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

file

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

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

第 1 步:学习一门语言

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

如果你已经开始做后端开发的工作并且已经掌握了一门脚本语言,我建议你不要去再学习一门新的语言了,而是挑选「功能(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 开发者社区 https://laravel-china.org/topics/13394

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,736评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,167评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,442评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,902评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,302评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,573评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,847评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,562评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,260评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,531评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,021评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,367评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,016评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,068评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,827评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,610评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,514评论 2 269

推荐阅读更多精彩内容

  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 31,789评论 2 89
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 170,566评论 25 707
  • 满心欢喜的对待 立志要呆一辈子 时间刚过三个月 这不是我想要的 我是要干大事的 这工作耗青春的 拿起纸笔写离职 我...
    折腾的那年2019阅读 138评论 0 0
  • 人,或多或少都有些自以为是,这或者也是正常的,否则,就很难果断出击,行动容易犹犹豫豫。 自以为是到了什么程度才算是...
    胡思乱想之阅读 387评论 0 0
  • 【题句】假如没有长大,我想再来一回… 【正文】长大没有机会,如果有机会我会好好珍惜“六一”再来一回,没做的补回来!...
    老区游子阅读 241评论 1 0