来源:https://github.com/kamranahmedse/developer-roadmap
其中包含前、后端和开发运维,下面只译了后端路线。
-
选择语言
- 脚本语言:Python, Ruby, PHP, Node.js( TypeScript可选 )
- 函数式编程语言:Elixir, Scala, Erlang, Clojure, Haskell..
- 其他选择:Java, .NET, Golang, Rust..
初学者,如果刚刚进入后端,我会推荐你选择一种脚本语言
。快速而容易入门,请学习Node.js
或者PHP
。如果你已经从事后端使用了某种脚本语言,那就不要再选择其他脚本语言了,可以看看Golang
,Rust
或Clojure
,它肯定会给你一个新的视角
。
实践所学
练习
,使用所选语言做一些命令行的应用程序,实现一些你使用的命令,如:"ls" .
想想你每天所做的任务,尝试将他们自动化
。学习包管理
学习如何使用你学习语言的包管理, 例如:PHP有composer
, Node.js有NPM
、Yarn
, Python有pip
,Ruby有gems
等等。
包管理会给你的应用程序带来外部依赖, 去发布你自己的包
标准与最佳实践
每种语言都有自己的标准和最佳实践。例如:PHP 有 PHP-FIG 和 PSRs 等等。制作并发布一些包/库,贡献一些开源项目
制作并发布包给其他人使用,且确保遵循了你目前所学的标准和最佳实践。
搜索一些github上的项目,在开源项目中打开一些Pull requests
。 一些想法是:重构
和实施
你学到的最好的实践。 查看进入公开issues
并尝试解决。添加任何其他功能。学习测试
测试类型有很多,现在学习如何写所选语言的单元测试
和集成测试
。要理解不同的测试术语。
PHP,有PHPUnit, PHPSpec...
Node.js,有Mocha,Chal,Sinon....为上面的实践步骤写测试
学习关系型数据库
种类有很多,如:Oracle、Mysql
、MariaDB
、PostgreSQL
、MSSQL。学习一个,其他应该也会容易。现在使用MySQL学习
, 当然也要学习它们之间的区别和使用案例。实践实践
创建一个简单应用,使用你所学的知识。它应该含有,登录注册,以及CURD。例如:创建一个博客
,任何人都可以注册,登录发帖,修改,帖子列表等。学习一个框架
这取决于你选择的项目以及语言,你也可能不需要框架。
PHP,流行的Laravel
框架,或Symfony
,Slim,lumen等,(国产ThinkPHP
,YII2
等)。
Node.js,Express.js
, Hapi.js
Golang,更偏爱直接编写。
11.实践实践
运用你选择的框架
,实现步骤9相同的应用。
12.学习一个Nosql数据库
首先理解Nosql是什么,它与关系型数据库的区别,为什么它们会被使用。如果要选择学习,那就选MongoDB
,不要问为什么,问就是...
学习MongoDB
的同时,也要知道与其他RethinkDB
, Cassandra
,Couchbase
的区别。
13.缓存
学习如何使用Redis
或Memcached
,实现应用级缓存。
如果你学会了,别忘记应用到步骤11
的实践中。
14.创建RESTful APIs
理解REST
,学习如何创建RESTful
风格的APIs,读读原文介绍。
- 认证/授权方式
- OAuth
- Basic Authentication
- Token Authentication
- JWT
- OpenID
Message Brokers消息代理
学习消息代理,理解为什么,然后选择一个。当然,选择的种类有很多,但我会用RabbitMQ
或者Kafka
。如果你想选一个,现在那就学习用RabbitMQ
吧。学习搜索引擎
随着应用的发展,数据库上简单的查询已经不能胜任, 你不得不求助搜索引擎。选择有很多,它们都有各自的不同之处。
ElasticSearch
,Solr
或 Sphinx学习如何使用Docker
Web服务器的学习
有很多的不同选择,理解它们的区别。
Apache
,Nginx
, Caddy, MS IIS学习使用Web Sockets
学习GraphQL
虽然它不是必需的,但随便看看它,看看它是什么以及它们为什么称它为新的REST
看看图形数据库
虽然也不是必须的,但应该做点了解所有以上没有提到的事
Profiling,Static Analysis,DDD,SOAP. 搞清楚它们
继续探索
生命不息,学习不止~