后端学习之路

后端学习之路

翻译软件为:有道词典、百度词典
原文:developer-roadmap

原图

翻译

1. 选择一种语言

有无数不同的选择

脚本语言

  • Python
  • Ruby
  • PHP
  • Node.s
  • TypeScript(Optional)

函数式语言

  • Elixir
  • Scala
  • Erlang
  • Clojure
  • Haskell
  • Java
  • .NET

其他选项
对于初学者,如果您刚刚进入后端开发,我建议您选择一种脚本语言。为了快速和简单,使用Node.js或PHP。如果你已经在做后台,用一些脚本语言,不要选择其他脚本语言,看看Go,Rust或Clojure,它会给你一个新的视角

2. 练习你所学到的
使用选定的语言练习并编写一些命令行应用程序

范例

  • 实现一些你使用的命令比如“ls”
  • 获取reddit(社交新闻站点)并保存在/r/programming的命令
  • 在JSON格式中体提供目录结构的命令
  • 从上面读取json并创建direcror结构的命令
  • 想一些你每天都要做的任务,试着把它们自动化

3. 学习包管理器
学习如何将包管理器用于您选择的语言,例如php有composer、node.js有npm和yarn、python有pip、ruby有gems等

包管理器帮助您在应用程序中引入外部依赖项并分发自己的包

4.标准和最优做法
每种语言都有自己的标准和最优做法。为你所选的语言学习它们。例如php有php-fig和psr,node.js有很多不同的社区驱动等。

确保阅读有关安全的最优做法。阅读owasp指南,了解不同的安全问题以及如何用您选择的语言避免这些问题

5. 制作和分发一些包/库

现在,创建一个包并将其分发给其他人使用,并确保遵循到目前为止您所学到的标准和最优做法

贡献一些开源项目

在github上搜索一些项目,在开源项目中打开一些pull requests。一些想法:

  • 重构并实施您所学到的最优做法
  • 调查那些悬而未决的问题(issues)并设法解决
  • 添加任何额外的功能

6. 学习测试

有几种不同的测试类型,但是现在学习如何用您选择的语言编写 单元测试和集成测试

理解不同的测试术语,如mock - 模拟, stubs - 存根等。

7. 为上面的实践编写测试

继续编写您在前面步骤中实现的实践任务的单元测试

学习如何计算测试转换

8. 了解关系数据库

这里有几个选项。然而,如果你学了一个,其他的应该是相当容易的。现在选择MySQL,但要了解它们的不同之处和用法

  • Oracle
  • MySQL MariaDB
  • PostgreSQL
  • MSSQL

9. 实践时间

创建一个简单的应用程序,使用到目前为止你所学的一切。它应该有注册、登录和CRUD。例如,创建一个博客。在这里,任何人都可以注册并获得一个公共简介页面,创建、更新和删除帖子,公共页面将显示他们创建的帖子。

确保编写测试,遵循标准和最优做法。同样对于数据库,添加索引,使用适当的存储引擎,并确保在应用程序中使用查询之前对其进行分析。

10. 学习框架

根据项目和您选择的语言,您可能需要也可能不需要框架。有几种不同的选择

  • 对于PHP - Laravel或Symfony和Slim或Lumen用于微框架
  • 对于Node.js - Express。js, Hapi.js
  • 对于Go -我更喜欢没有框架的代码
  • 对于其他,搜索并找到适合您选择的语言的

11. 实践时间

在你选择的框架中做出与9中相同的应用程序

12. 学习NoSQL数据库

首先了解它们是什么,它们与关系数据库有什么不同,以及为什么需要它们。有几种不同的选择
看看不同的选择,看看它们有什么不同。如果你必须选择一个,选择MongoDB

13. 缓存

  • Memcached - 内存缓存
  • Redis

一旦你学会了,在步骤11中构建的应用程序中实现缓存策略

14. 创建RESTful api

了解REST并学习如何创建RESTful api,确保阅读Roy Fielding的原始论文中关于REST的部分

15. 身份验证/授权方法

了解它们的区别以及如何实现它们

  • OAuth
  • 基本身份验证
  • 令牌验证
  • JWT
  • OpenID

16. 消息代理

了解消息代理,理解“为什么”并选择一个。有多种选择,但我会选择RabbitMQ或Kafka。如果你想选择一个,学习如何使用RabbitMQ。

  • RabbitMQ
  • Kafka

17. 学习搜索引擎

随着应用程序的增长,对数据库的简单查询不女能满足它,您将不得不求助于搜索引擎。有多种选择,每个都有自己的不同。

  • ElsticSearch
  • Solr
  • Sphinx

18.学习如何使用Docker

19. Web服务器知识
这里有几种不同的选择,看看不同的选择,了解它们的差异和局限性。

  • Apche
  • Nginx
  • Caddy
  • MS IIs

20. 了解如何使用Web套接字

21. 学习图形

虽然这不是必需的,但是你可以随便看看它,看看它是关于什么的,为什么他们称它为新的REST

22.查看图形数据库

同样不是必需的,但是你应该对他们提供的东西有一点了解

23.上面没有提到的所有事情

Profiling - 剖析、Static Analysis - 静态分析、DDD、SOAP、想想看吧!

24.继续探索

英文

1. Pick a Language
there are myriads of different options

Scripting Languages

  • Python
  • Ruby
  • PHP
  • Node.s
  • TypeScript(Optional)

Functional Languages

  • Elixir
  • Scala
  • Erlang
  • Clojure
  • Haskell
  • Java
  • .NET

Other Options
For the beginners, if you are just getting into backend development, I would recommend you to pick one of the scripting languages. For the quick-and-easy, go with Node.js or PHP. If you have already been doing backend, with some scripting language the don’t pick another scripting language and have a look at Go, Rust or Clojure, it will difinitely give you a new perspective

2. Practice what you learnt

Excercise and make some command line applications with picked language

Sample Ideas
Implement some command that you use e.g. ‘ls’
Command that fetches and saves reddit posts on /r/programming
Command that gives you directory structure in JSON format
Command that reads JSON from above and creates director structure
Think of some task that you do every day and try to automate that

3. Learn Package Manager

Learn houw to use package manager for the language that you picked, e.g. PHP has composer, Node.js has NPM and yarn, Python has pip, Ruby has gems etc

package managers help you bring external dependencies in your application and to distribute your own packages

4. Standards and best practices

Each of the language has its own standards and best practices of doing things. Study them for your picked language. For example PHP has PHP-FIG and PSRs, with Node.js there are many different driven by community etc.
Make sure to read about the best practices for security. Read the OWASP guidelines and understand different security issues and how to avoid them in language of your choice

5. Make and Distribute Some Package/Library

Now go ahead and create a package and distribute it for others to use, and make sure to follow the standards and best practices that you have learnt this far.

Contribute to Some Opensource Project

Search for some projects on github and open some pull requests in opensource projects. Some ideas for that:

Refactor and implement the best practices that you learnt
Look into the open issues and try to resolve
Add any additonal functionality

6. Learn about Testing

There are several different testing types, but for now learn about how to write Unit and Intergration tests in the language you picked.
Understand different testing terminologies such as mocks, stubs etc

7. Write Tests for the practical above

Go ahead and write the unit tests for the practical tasks that you implemented in the steps before

Learn how to calculate test converage

8. Learn Relational Databases

There are several options here. However if your learn one, others should be fairly easy. Pick MySQL for now but learn how they are different and the usecases

  • Oracle
  • MySQL MariaDB
  • PostgreSQL
  • MSSQL

9. Practical time

Create a simple application using everything that you have learnt this far. It should have registration, login and CRUD. Create a blog, for example. Where anyone can register and get a public profile page create, update and delete posts and public page will show the posts created by them.

Make sure to write tests, follow the standards and best practices. Also for the database, add the indexes, use proper storage engines and make sure to analyze the queries before using them in the application.

10. Learn a Framework

Depending upon the project and the language you picked, you might or might not need a framework. There are several different options

For PHP - Laravel or Symfony and Slim or Lumen for micro-frameworks
For Node.js - Express.js, Hapi.js
For Go - I prefer to code without framwork

For others, search and find the suitable ones for the language you picked

11. Practical time

Make the same application you made in 9 to the framework of your choice

12. Learn a NoSQL Database

First understand what they are, how they are diffrernt from relational databases and why they are needed. There are several different options
Have a look at different options and see how they differ. If you have to pick one, pick MongoDB

13. Caching
Memcached
Redis

Once you have learnt, implement caching strategy in application you built in step 11

14. Creating RESTful APIs

Understand REST and learn how to make RESTful APIs and make sure to read the part about REST from the original paper of Roy Fielding

15. Authentication / Authorization Methodologies

Learn about the difference and how to implement them

  • OAuth
  • Basic Authentication
  • Token Authentication
  • JWT
  • OpenID

16. Message Brokers

Learn about the message brokers, understand the “Why” and pick one.There are multiple options but I would go for RabbitMQ or Kafka. Learn how to use RabbitMQ of now, if you want to pick one.

  • RabbitMQ
  • Kafka

17. Learn a Search Engine

As the application grows, simple queries on your databases aren’t going to cut it out and you will have to resort to a search engine. There are multiple options, each having it’s own differences.

  • ElasticSearch
  • Solr
  • Sphinx

18. Learn How to Use Docker

19. Knowledge of Web Servers

There are several different options here, look at the different options, understand their differences and limitations

  • Apche
  • Nginx
  • Caddy
  • MS IIS

20. Learn how to use Web Sockets

21. Learn GraphQL

While it is not required, feel free to have a look at it and see what it is all about and why they are calling it the new REST

22. Look into Graph Databases

Again not required but you should have a little understanding of what they have to offer

23. All the things that weren’t mentioned above
Profilling, Static Analysis, DDD, SOAP, Go Figure!

24. Keep Exploring

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值