现代后端开发者必备技能——2018 版

今天的Web开发与几年前完全不同,有很多不同的东西可以很容易地阻止任何人进入Web开发。这是我们决定制作这些循序渐进的视觉指南的原因之一,这些指南展示了更大的图景,并让任何人清楚了解他们在网页开发中扮演的角色。

这是我们决定制作这些循序渐进的视觉指南的原因之一,这些指南展示了更大的图景,并让任何人清楚了解他们在网页开发中扮演的角色。毫不迟疑,让我们开始吧。你可以在下面的图片中找到详细的路线图,但是我也将在下面的描述中解释每一步。

下图如果看着不清楚,可以看这里 -> 原图地址

我们来分解它,并解释下面部分中的每一步。

在我们开始之前,虽然我们没有在上面的路线图中列出 HTML/CSS 的知识,但建议您至少了解一些基本的 HTML/CSS 并了解如何编写基本的 HTML/CSS。

第1步 - 学习一门语言

谈到选择语言有很多选择。我已经将它们分成几类,以便你更容易做出决定。对于刚开始进入后端开发的初学者,我建议你选择任何脚本语言,因为它们有很多需求,它可以让你快速起步。如果你有一些前端知识,你可能会发现Node.js更容易,再加上有一个很大的就业市场。

如果你已经在做后端开发并且知道一些脚本语言,我建议你不要选择另一种脚本语言,并从“功能”或“多参数”部分中选择一些。 例如,如果你已经在使用PHP或Node.js,请不要使用Python或Ruby,而应尝试使用Erlang或Golang。它肯定会帮助你延伸思维,并开启你的思想到新的视野。

第2步 - 练习你学到的东西

没有比实践更好的学习方式。一旦你选择了你的语言,并且对这些概念有了基本的了解,就可以使用它们。尽你所能制作尽可能多的小应用程序。尽你所能制作尽可能多的小应用程序:

  • 在bash中实现一些你自己使用的命令尝试实现 ls 的功能
  • 编写一个命令,为你提供JSON格式的目录结构,例如 jsonify dir-name 给你一个带有 dir-name 内结构的JSON文件
  • 编写一个从上面的步骤读取JSON的命令并创建目录结构
  • 想想你每天都在做的一些任务,并尝试将其自动化

第3步 - 学习软件包管理器

了解了该语言的基础知识并制作了一些示例应用程序后,请了解如何使用你选择的语言的软件包管理器。软件包管理器可帮助你在应用程序中使用外部库,并分发你的库供其他人使用。

如果你选择了PHP,你将不得不学习 Composer,Node.js 有 NPM 或 Yarn,Python 有 Pip,Ruby 有 RubyGems。无论你选择什么,请继续学习如何使用其包管理器。

第4步 - 标准和最佳实践

每种语言都有自己的标准和做事的最佳实践。研究他们为你挑选的语言。例如 PHP 有 PHP-FIG 和 PSR 。使用 Node.js 有许多不同的社区驱动指南,其他语言也有相同的指导。

第5步 - 安全

请务必阅读有关安全的最佳做法。阅读 OWASP 指南并了解不同的安全问题以及如何以你选择的语言避免它们。

第6步 - 练习

现在你已经掌握了语言,标准和最佳实践的基础知识,安全性以及如何使用软件包管理器。现在开始创建一个包并分发给其他人使用,并确保遵循你迄今为止学到的标准和最佳实践。例如,如果你选择了PHP,那么你将在Packagist上发布它,如果你选择了Node.js,那么你将在Npm注册源中发布它,等等。

一旦你完成了,在Github上搜索一些项目,并在某些项目中打开一些pull请求。对此的一些想法:

  • 重构并实施你学到的最佳实践
  • 查看未解决的问题并尝试解决
  • 添加任何附加功能

第7步 - 了解测试

测试有几种不同的测试类型。了解这些类型它们的目的是什么。了解如何在应用程序中编写单元测试和集成测试。另外,了解不同的测试术语,如 mocks, stubs 等。

第8步 - 实践

对于练习,继续编写单元测试,以完成目前为止所做的实际任务,特别是你在步骤6中所做的练习。

还要学习和计算你编写的测试的覆盖率。

第9步 - 了解关系数据库

了解如何将数据保存在关系数据库中。在你选择要学习的工具之前,请先了解不同的数据库术语,例如键,索引,规范化等。

这里有几个选项。但是,如果你学习一个,其他的应该相当容易。你想学习的是MySQL,MariaDB(大部分是相同的,是MySQL的分支)和PostgreSQL。选择MySQL开始。

第10步 - 实践时间

现在是时候把你所学到的一切都用到这里去了。

使用你迄今为止学到的所有内容创建一个简单的应用程序。可以选择任何想法,也许创建一个简单的博客应用程序,并实现其中的以下功能。

  • 用户帐户 - 注册和登录
  • 注册用户可以创建博客文章
  • 用户应该能够查看他创建的所有博客文章
  • 他们应该能够删除他们的博客文章
  • 确保用户只能看到他的个人博客帖子,而不能看到他人
  • 编写应用程序的单元/集成测试
  • 你应该为查询应用索引。分析查询以确保正在使用索引

第11步 - 了解一个框架

根据你选择的项目和语言,你可能需要也可能不需要框架。每种语言都有几个不同的选项,继续看看你选择的语言有哪些选项可供选择,然后选择相关的一个。

如果你选择了PHP,我会建议你使用 Laravel或Symfony,如果是为框架的话,使用Lumen或Slim。如果你选择Node.js,有几种不同的选择,但突出的是Express.js。

第12步 - 实践时间

为了实现此步骤,请将你在 步骤10 中创建的应用程序转换为使用你选择的框架。还要确保移植包括测试在内的所有内容。

第13步 - 学习NoSQL数据库

首先了解它们是什么,它们与关系数据库有何不同以及为什么它们是需要的。有几种不同的选择,研究一点看看,并比较它们的特点和差异。你可以选择的一些常用选项是Rdeis,MongoDB,Cassandra,RethinkDB和Couchbase。如果你必须选择一个,请使用Redis。

第14步 - 缓存

了解如何在你的应用程序中实施应用程序级缓存。了解如何使用Redis或Memcached并在你在 步骤12 中创建的应用程序中实施缓存。

第15步 - 创建RESTful API

了解REST并学习如何制作RESTful API,并确保从 RoyFielding 的原始文章中阅读关于REST的部分。如果他们说REST仅适用于HTTP API,请确保你能够与其他人对战。

第16步 - 了解不同的身份验证方法

了解不同的身份验证和授权方法。你应该知道他们是什么,他们有什么不同以及什么时候偏好某一个

  • OAuth - 开放认证
  • 基本认证
  • 令牌认证
  • JWT - JSON Web令牌
  • OpenID

第17步 - 消息代理

了解消息代理并了解何时以及为何使用它们。有多种选择,但突出的是 RabbitMQKafka。现在学习如何使用 RabbitMQ,如果你想选择一个。

第18步 - 搜索引擎

随着应用程序的增长,对关系数据库或NoSQL数据库的简单查询不会将其切断,你将不得不求助于搜索引擎。有多种选择,每种选择都有自己的差异。比如 Solr, Sphinx, ElasticSearch,Xapian等。

第19步 - 了解如何使用Docker

无论你是在复制与生产环境相同的环境,还是保持操作系统清洁或加快你的编码,测试或部署,Docker都可以在开发过程中大大方便你的工作。在这一步中,继续学习如何使用Docker。

第20步 - 关于Web服务器的知识

如果你已经走到这么远,你可能不得不在前面的步骤中使用服务器。这一步主要是找出不同Web服务器之间的差异,了解限制和不同的可用配置选项,以及如何最好地利用这些限制编写应用程序。

第21步 - 了解如何使用Web Sockets

虽然不是必需的,但在工具带中有这些知识是有益的。学习如何使用 Websockets 编写实时Web应用程序并使用它创建一些示例应用程序。你可以在上面制作的博客应用程序中使用它来实现博客文章列表中的实时更新。

第22步 - 学习GraphQL

学习如何使用GraphQL制作API。了解它与REST的不同之处,以及它为什么被称为 REST2.0

第23步 - 研究Graph数据库

Graph 模型代表了一种处理数据中关系的非常灵活的方式,图数据库为其提供了快速高效的存储,检索和查询。学习如何使用 Neo4jOrientDB

第24步 - 保持探索

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

记住关键是要尽可能多地练习。它在开始时看起来更加可怕,你可能会觉得你并没有抓住任何东西,但这是正常的,随着时间的推移,你会觉得自己越来越好。

好了,就这么多。感谢阅读。

原文发布于微信公众号 - 程序员宝库(chengxuyuanbaoku)

原文发表时间:2018-05-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏FreeBuf

看我如何发现Google生产网络SSRF漏洞获取$13337赏金

今年3月份时,我曾上报过Google的任意html/javascript网页在线嵌入工具Caja的一个XSS漏洞,到5月份时,这个漏洞才被修复。之后,我想看看谷...

1622
来自专栏移动开发试验田

【移动开发】市面上主流「移动推送服务」的体验比较

推送服务基本上是每个 App 的刚需,自己也用过许多家推送服务,最近腾讯云上线了一个类似于 firebase 的移动开发平台,上面集成了很多的移动服务,包括推送...

3837
来自专栏IT技术精选文摘

10个最重大的Web应用风险与攻防

先来看几个出现安全问题的例子 ? ? ? ? ? OWASP TOP10 ? 开发为什么要知道OWASP TOP10 ? TOP1-注入 ? TOP1-注入的示...

2539
来自专栏张善友的专栏

老桂.net core系列课程

2545
来自专栏杨建荣的学习笔记

脚本改进的一点体会(r12笔记第60天)

一直以来我们想要推进内部的自动化系统,但是总是会遇到各种各样具体的问题,有时候我们准备好了,但是总是会有一些因素的干扰,再加上工作时间的安排,有些事情就一...

3459
来自专栏架构说

分布式配置中心架构与实战

声明:信息来源 docker.io 分享主题:分布式配置中心架构与实战 分享主题:分布式配置中心架构与实战 声明 信息来源docker.io 今天的大规模...

1.1K8
来自专栏移动端开发

iOS 即时通讯 + 仿微信聊天框架 + 源码

更新:2017年8月1日 实在是抱歉,git上的Demo这么久,有问题自己没有发现!肯定给大家造成过不方便,抱歉!git上Demo刚重新上传,要有需要的可以去...

8785
来自专栏ImportSource

微服务与API 网关(上): 为什么需要API网关?

本文是来自于Macro在一次大会上的一个分享。 本系列共有两个部分,主要关注我们如何以及为什么要在我们的微服务应用中部署API 网关。第二部分主要关注我们如何把...

7196
来自专栏Crossin的编程教室

【我问 Crossin】Crossin 这个名字是什么意思?

1 新建 git 项目是用 git init 还是 git clone,git init 和 git clone 都是创建新仓库,两个有什么区别? git in...

3709
来自专栏美团技术团队

前端工程化开发方案app-proto

什么是前端工程化?根据具体的业务特点,将前端的开发流程、技术、工具、经验等规范化、标准化就是前端工程化。它的目的是让前端开发能够“自成体系”,最大程度地提高前端...

5523

扫码关注云+社区