那时的 Web 合作开发与一两年前完全相同了,有许多相同的小东西能轻而易举地把人拉入,这也是她们下定决心制做那个渐进手册的其原因众所周知,并让其它人能确切地介绍她们在 web 合作开发中饰演的配角。
能在上面的相片中找出详尽的蓝图,而我也将在上面的叙述中说明每两个关键步骤。
在已经开始以后,尽管她们没在上面的蓝图中列举 HTML / CSS 的科学知识,但提议听众最少要介绍许多基本上的 HTML / CSS 科学知识。
Step 1 —— 自学两门词汇(Learn a Language)
词汇有许多优先选择,我早已将它分为四类,以期更容易作出下定决心。对刚已经开始步入后端合作开发的新手,我提议你优先选择任何人JavaScript,即使它有许多机能,能让你加速起跑。假如你有许多前端科学知识,你可能会辨认出 Node.js 更容易(除了两个非常大的劳工消费市场消费市场)。
假如你早已是后端合作开发并介绍许多JavaScript,我提议千万别优先选择其它JavaScript,而要从「表达式式(Functional)」或「多本体论(Multiparadigm)」中优先选择。比如,假如你早已在采用 PHP 或Node.js,请千万别采用 Python 或 Ruby,而如果试著采用 Erlang 或 Golang。它一定会帮助你延伸思维,并将你的思想带到新的视野。
Step 2 —— 练习你学到的小东西(Practice what you have Learnt)
没比实践更快的自学方式了。一旦你优先选择了词汇,并且对这些概念有了基本上的介绍,就能采用它,尽你所能制做尽可能多的小应用。上面是许多让你已经开始的 Idea:
在 bash 中实现许多你自己采用的命令,比如试著实现 ls;
文章的命令,并保存为 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觉得有用就转发分享一下吧
往期所推荐
【2】Spring Boot & Cloud 最强教程