想成为现代后端开发工程师吗?24步就可以搞定!

描述

今天的网站开发已经大不同以往,有很多的东西会对进入此领域的人造成困惑,这就是我们写这系列文章的原因——给大家指导如何在开发过程中胜任特定的角色。

大约1周以前,我们发布了一篇名为“现代前端开发--2018”,同时我们承诺了会发布一篇“后端以及开发运维路线图”。兑现这一承诺,这篇文章就是关于现代后端开发者的。如果你还没有查看过前端开发路线图,可以去瞧瞧先。

在此之前,后端路线图就是简单粗暴的给出了你需要掌握的技术,而没有清晰的方向以及学习的合理顺序。我们像前端一样以循序渐进的方式重绘了后端路线图,希望给你更好的指导。

言归正传,我们开始吧。详细的路线图在下面的图片中,同时我会逐步的详细讲解。

HTML

HTML

HTML

HTML

HTML

下面的章节,我们将之分解开来逐步讲解。

开始之前,虽然我们没有将HTML/CSS列举在路线图中,但是我们还是建议用户具备基础的HTML/CSS技能,至少能够写一些基本的HTML/CSS。

1. 学习一门语言

语言的选择有很多种,为了方便您的选择,我将它们进行了分类。对于刚接触后端开发的新手,我强烈建议你们选择一门脚本语言,因为它们的需求很多且上手较快。最好的选择当然是Python,它的需求正在急速增长,有大量的职位可供选择。

2. 学以致用

最后的学习方法就是动手实践。一旦你选择了语言,然后对其有了基本的了解,开始使用它。运用它进行尽可能多的练习,写一些小程序练手,熟悉它。下面是一些小例子,可以帮助你开始。

*  实现一些bash中你常用的命令, 比如ls的功能

*  写一个从reddit的/r/programming频道抓取数据并将之保存为JSON格式的小程序

*  写一个程序将目录结构保存为JSON文件。

*  根据上面生成的JSON文件,生成目录结构。

*  想想日常工作中的任务,尝试将之自动化。

3. 学习包管理器

一旦你了解了语言的基础,同时用它写过些示例程序,接着学习该语言的包管理器。包管理器可以帮助你使用第三方库,同时你也可以通过它发布自己的库以供他人使用。

假设你选择的是Python,你应该已经学习了Pip。Node.js有NPM或Yarn、PHP有Composer,Ruby有RubyGems。无论你选择了什么,进一步去学习它的包管理。

4. 规范以及最佳实践

每一种语言有其规范以及最佳实践。你需要掌握这个东西。比如Python有PEP8跟Google Python代码规范。Node.js各社区有不同的规范。其他语言的状况也大同小异。

5. 安全

务必要掌握安全最佳实践。读读OWASP指南,了解不同的安全问题,同时要知道如果避免这类问题。(你选择的语言)

6. 实践

现在你已经掌握了语言基础,最佳实践,安全相关以及包管理,你可以去开发自己的库供他人使用了。如果你用Python,你需要发布在Pypi,如果是Node.js,你需要发布在Npm。

到此,你可以在Github上找一些项目,参与进去。

*  重构,实现你学到的最佳实践

*  修复已知的问题

*  添加新的功能

7. 测试

测试分很多种,要了解每一种测试的类型以及其目的。但是现在,首先学习单元测试以及综合测试,应用在你的程序中。此外,还要了解不同的测试术语,比如mocks,stubs等等。

8. 实践-测试

为你所写的所有程序编写单元测试,特别是在Github上参与的项目。

同时,学习覆盖率的概念,计算测试代码的覆盖率。

9. 关系型数据库

学习利用关系型数据库保存你的数据。在学习之前,首先掌握数据库相关的术语。比如: keys,indexes,normalization,tuples等。

可供选择的数据库很多,你只需要掌握一个,其他的也会变得很简单。流行的有MySQL,MariaDB(MySQL分支,与之非常相似),PostgreSQL。推荐选择MySQL开始。

10. 动手时间 - 实践

到了将所学融合的时候了。

创建一个简单的应用,运用你所学的一切。实现一个想法,可能是创建一个简单的博客站点,实现一下的特性:

*  账户系统——注册&登陆

*  注册用户可以创建blog

*  用户可以查看自己创建的所有的blog

*  用户可以删除自己发布的blog

*  保证用户只能看到自己发布的blog,不能看其他人的

*  为应用编写单元/综合测试

*  为查询创建索引。分析查询,确保索引生效

11. 学习一个框架

根据你的项目类型以及你的语言的不同,你可能会需要一个框架辅助开发。(也可能不需要)。每种语言都有不同的选择,选择一个合适的即可。

如果你选择了Python,建议你选择Django,对于微框架,建议Flask。

对于Node.js,最知名的框架是Express.js。

12. 实践-框架

利用选择的框架重构你的博客应用。不要忘记了集成测试代码进来。

13. 学习NoSQL(not only SQL)数据库

首先了解什么是NoSQL,以及它们与关系型数据库的差别,同时为什么需要它们。NoSQL数据库也有多种选择,了解并比较它们之间的特性以及不同之处。常用的有MongoDB,Cassandra,RethinkDB,Couchbase。建议选择MongoDB开始。

14. 缓存

学习如何在你的程序中实现应用级的缓存。了解如何利用Redis或Memcached实现缓存,同时在你的博客应用中实现缓存功能。

15. 创建RESTful APIs

了解REST,学习如何编写RESTful APIs,阅读关于REST的白皮书。(By Roy Fielding)。理解REST不仅仅是HTTP APIs。

16. 学习不同的认证方法

学习不同的认证以及认证方式。你需要明白它们是什么,它们的不同点,以及它们适用的场景。

*  OAuth--Open Authentication

*  Basic Authentication

*  Token Authentication

*  JWT--JSON Web Tokens

*  OpenID

17. 消息代理

学习消息代码,了解什么时候以及为什么使用它们。有很多可供选择,最知名的是RabbitMQ & Kafka。建议从RabbitMQ开始学习。

18. 搜索引擎

随着应用程序规模的增长,简单的查询已经无法满足要求。这个时候,你需要用到搜索引擎。同样有多种选择,每一种有自己的特点。

19. 学习使用Docker(容器)

Docker可以为你的开发提供巨大的便利。它可以让你的开发环境与生产环境保持一致,可以让你的系统保持干净,可以加速你的编码,可以测试部署。Docker的好处,请自行google。从现在开始,学习Docker。

20. Web服务器的知识

到了这个时候,你可能已经处理过服务器相关的问题。这一步骤主要是了解不同的服务器之间的差异,局限,以及不同的调优方法。

21. 学习Web Sockets

虽然不是必须,但是具备Web Sockets的技能是有好处的。学习编写实时的web应用。可以在博客应用中,实现即时更新blog列表。

22. 学习GraphQL

学习GraphQl的APIs。了解它与REST的不同,然后为什么它被称之为REST 2.0。

23. 研究Graph数据库

Graph模型具备非常好的灵活性——在处理数据间的关系的时候。Graph数据库提供高速&高效的存取以及查询。学习了解Neo4j或者OrientDB。

24. 不停探索

在你的学习以及实践过程中,肯定会碰到路线图里没有提及的东西。你只需要保持开放以及饥渴去学习新的东西。

时刻谨记,学习的关键是实践。多动手!刚开始的时候,你可能会感觉不大好,随着你的坚持以及时间的推移,你会变得越来越好。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分