开端以前,尽管我们没有将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跟GooglePython代码标准。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(notonlySQL)数据库
首要了解什么是NoSQL,以及它们与联系型数据库的差异,一块儿为何需求它们。NoSQL数据库也有多种挑选,了解并比较它们之间的特性以及不一样之处。经常使用的有MongoDB,Cassandra,RethinkDB,Couchbase。主张挑选MongoDB开端。
14.缓存
学习怎么在你的程序中完成使用级的缓存。了解怎么使用Redis或Memcached完成缓存,一块儿在你的博客使用中完成缓存功用。
15.创立RESTfulAPIs
了解REST,学习怎么编写RESTfulAPIs,阅览关于REST的白皮书。(ByRoyFielding)。理解REST不只仅是HTTPAPIs。
16.学习不一样的认证办法
学习不一样的认证以及认证方法。你需求明白它们是什么,它们的不一样点,以及它们适用的场景。
*OAuth--OpenAuthentication
*BasicAuthentication
*TokenAuthentication
*JWT--JSONWebTokens
*OpenID
17.消息代理
学习消息代码,了解什么时分以及为何使用它们。有许多可供挑选,最知名的是RabbitMQ&Kafka。主张从RabbitMQ开端学习。
18.搜索引擎
跟着使用程序规模的增长,简略的查询现已没法知足要求。这个时分,你需求用到搜索引擎。一样有多种挑选,每一种有本身的特色。
19.学习使用Docker(容器)
Docker可以为你的开发供给巨大的便利。它可以让你的开发环境与出产环境保持一致,可以让你的体系保持干净,可以加快你的编码,可以测验布置。Docker的好处,请自行google。从如今开端,学习Docker。
20.Web服务器的知识
到了这个时分,你可能现已处理过服务器相关的问题。这一过程主要是了解不一样的服务器之间的差别,限制,以及不一样的调优办法。
21.学习WebSockets
尽管不是必须,但是具备WebSockets的技能是有好处的。学习编写实时的web使用。可以在博客使用中,完成即时更新blog列表。
22.学习GraphQL
学习GraphQl的APIs。了解它与REST的不一样,而后为何它被称之为REST2.0。
23.研究Graph数据库
Graph模型具备很是好的灵活性——在处理数据间的联系的时分。Graph数据库供给高速&高效的存取以及查询。学习了解Neo4j或许OrientDB。
24.不停探索
在你的学习以及实践过程当中,确定会碰到道路图里没有说起的东西。你只需求保持敞开以及饥渴去学习新的东西。
时刻谨记,学习的关键是实践。多着手!刚开端的时分,你可能会感受不大好,跟着你的坚持以及时间的推移,你会变得愈来愈好。
**web