2018, how to become a modern back-end developer

Source: Internet
Author: User
Tags knowledge base rabbitmq

File
Today's web development is completely different from what it was a few years ago; there are a lot of things that make Web developers feel confused. This is one of the reasons we decided to do a roadmap guide to step by step visual guides demonstrating the bigger picture, and let everyone know exactly what role they should be in web development.

A week ago, we published an article modern Frontend Developer in 2018, and we promised to release the latest roadmap for backend and DevOps. Now fulfill the promise that this article is about modern back-end developers. If you haven't seen the front-end developer roadmap, check it out.

The previous back-end roadmap was just a purely technical recommendation, with no clear direction and the order that should be followed. So we re-sketched it like the front-end roadmap so that it can be guided step-by-stage to give you a better idea.

We are now working on a roadmap for DevOps and hopefully it will be released next week. At that time, we will also publish an article related to it, where you can view the latest updates on the link to the repository.

Come on, let's get started. You can see the detailed roadmap in, and I'll explain each step in a later description.

File

Chinese pictures from Developer-roadmap-chinese
Let's break it down and explain each step in the following sections.

Before we begin, although we have not listed HTML/CSS's knowledge on the roadmap, it is recommended that you know at least one point and know how to write some basic html/css.

1th Step: Learn a language

When we talk about language, you have countless choices. In order to make your decision easier, I divide them into several categories. For beginners who are just beginning to get into backend development, I suggest you choose a scripting language to learn, they have a lot of needs, but also allows you to grow quickly. If you already have some knowledge of front-end development, you might find node. js easier, plus it has a great job market.

If you are already working on back-end development and have mastered a scripting language, I suggest that you do not learn a new language, but rather choose "Functional (functional)" and "Multi-Paradigm" (MULTIPARADIGM) to learn some of the content. For example, if you're already developing with PHP or node. js, you don't need to learn Python or Ruby, but try Erlang or Golang. This will certainly help you expand your mind and broaden your horizons.

2nd Step: Practice What you have learned

There is no better way to learn than to practise. When you learn your language and have a basic understanding of its concepts, apply them to practice. To do as many small applications as possible. Here are just a few ideas to get you started:

    • Implement some of the commands you run in bash. For example, try to implement ls the functionality.
    • Write a command from /r/programming get Reddit posts and save it in JSON file format.
    • Write a command that represents the structure of a directory in JSON format. For example, jsonify dir-name you can give you a dir-name JSON file with an internal structure.
    • Write a command that reads the JSON file for the above steps and creates such a directory structure.
    • Consider some of the things you do every day and try to get them done automatically.

3rd Step: Learning Package Manager

Once you have a language base and have done some sample programs, you should learn to use the Package manager for the language of your choice. The Package Manager can help you use an external library in your app or publish your own library for others to use.

If you choose PHP, you have to learn Composer. node. JS has npm,python with Pip, and Ruby has RubyGems. Whichever language you choose, you should learn more about how to use its package manager.

4th Step: Standards and best practices

Each language has its own standards and best practices. Learn them for the language you choose. For example, PHP has a php-fig and PSR specification, and node. JS has many different community-driven guides, as do other languages.

5th Step: Security

Be sure to read the best practices in security. Read the OWASP guide to learn about the different security issues and circumvent them in the language of your choice.

6th step: Practice

Now you know the language basics, standards and best practices, security, and how to use the Package Manager. Now start creating a package and publish it for others to use, and then confirm that you've followed the standards and best practices that you've learned today. For example, if you choose PHP, you can publish it to packagist, and if you choose node. js, you can publish it to NPM Registry, and so on.

If you have already done this, search for some items on Github and initiate pull requests. Some of the ideas for this are:

    • Refactor and implement the best practices you've learned
    • Study the open issues and try to solve
    • Add additional Features

7th Step: Learning Test

There are several different types of tests used to test. Understand the respective intentions of these types. But now you'll learn how to write unit tests and integration tests. Also, learn about different test terms, such as mocks,stubs and more.

8th Step: Practice

As for practice, continue to write unit tests that you have completed, especially in the 6th step.

Also learn and calculate the coverage of the tests you write.

9th Step: Learning relational database

Learn how to persist your data to a database. Before you choose the tools you want to learn, understand some of the database terminology, such as keys, indexes, paradigms, tuples, and so on.

The database has some options here. If you learn a database, other databases are easier to learn. The database you want to learn has mysql,mariadb (mostly the same and is a branch of the MySQL database), PostgreSQL. You can choose MySQL to start learning.

The 10th step: actual combat time

It's time to put everything you've learned into practical use.

Create a simple application that uses the knowledge you have learned in the application. Can choose any idea to achieve, or it may be to create a blog to implement the function points mentioned below

    • User account Management---registration and login
    • Registered users can post a blog
    • Users can browse all blogs they post
    • Users can delete their own blogs
    • Make sure that users can only see their own personal blogs and can't see other people's
    • Write the application's unit/integration test
    • You should add an index to some query data. Parse the query statement to make sure that the index is useful.

11th Step: Learn a framework

Depending on the project and language you choose, you may need a framework. Each language has several different options for this, and continue to look at the optional frameworks for the language you choose, and then pick one from there.

If you choose PHP, then I suggest you use Laravel or Symfony and the micro-frame lumen or Slim. If you choose node. js, there will be a couple of different options, but the better is express.js.

12th Step: Practice Time

To do this, refactor the application that you completed in step 10th with the framework of your choice. and confirm that everything was migrated, including testing.

13th step: Learn a NoSQL database

The first thing to understand is what they are, how they differ from relational databases, and why they are needed. Here are a few different options to study to see their characteristics and differences. Some of the common choices are mongodb,cassandra,rethinkdb and couchbase. If you have to choose one, start with MongoDB.

14th Step: Caching

Learn to implement application-level caching in your application. Learn how to use Redis or Memcached and implement caching for apps you build in step 12th.

15th step: Create a RESTful API

To learn about rest and learn how to create RESTful APIs, be sure to read the rest related sections from the original article of Roy Fielding. You can then confirm that if someone says REST is just an HTTP API, you will be able to argue with them.

16th Step: Learn the different authentication methods

Learn different authentication and authorization methods, you should know their differences and pros and cons, when it is more appropriate in what way to achieve.

    • OAuth---Development certification
    • HTTP Basic Authentication
    • Token Certification
    • JWT---JSON Web Tokens authentication
    • Openid

17th Step: Message Subscription Publishing system

Understand the various message subscription publishing system, know when what the scene is suitable for what technology, now there are many kinds of technology can choose, the most prominent is RabbitMQ and Kafka, you can start learning RabbitMQ or Kafka.

18th Step: Search engine

As the application grows, simple queries to relational databases or NoSQL databases are not enough to meet your needs, so you have to turn to search engines. We have a lot of different choices for search engines, and each has its own characteristics.

19th step: Learn how to use Docker

Docker can greatly facilitate your development, whether it is replicating the same environment as the production environment, keeping the operating system neat or speeding up coding, testing, or deployment. I will leave you with the answer to "how it will help me". In this step, continue learning and how to use Docker.

20th step: Web Server knowledge

If you have already learned this, you may have used the server in the previous steps. The main task of this step is to find out the differences between different Web servers, to understand some of the limitations of the server and the available configuration of different servers, and finally to maximize the use of these restrictions to program.

21st Step: Learn how to use the Web Sockets

Web sockets are not something you have to master, and it is good for you to have this knowledge in your knowledge base. Learn how to use Web-sockets to write a live WEB application and use it to create some sample applications. You can use the blog in the application, to achieve a blog post list of real-time updates.

22nd Step: Learning GRAPHQL

Learn how to create an API with GRAPHQL. Understand the difference between rest and graphql, and why GRAPHQL is called Rest 2.0.

23rd Step: Study the graph database

The graph model represents a very flexible way of handling data relationships, and the graphical database provides fast and efficient storage, recovery, and querying. Learn how to use neo4j or ORIENTDB.

24th Step: Continuous exploration

Once you start learning and practicing, you will inevitably encounter things that are not in the road map. But it's good to keep an open mind and a positive interest in learning new things.

Remember, the key is to practise as best you can. It will look scary at first, and you may feel that you don't understand everything, but it's normal and you'll feel better over time.

This is the end of this article. You can make friends with me on Twitter, or contact me via email. And don't forget to watch the repository to see some future updates. Keep your eye on it!

Transfer from Php/laravel developer Community https://laravel-china.org/topics/13394

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.