Essential Skills for Modern Backend Developers - 2018 Edition

Web development today is completely different than it was a few years ago, and there are a lot of different things that can easily deter anyone from getting into web development. That's one of the reasons we decided to make these step-by-step visual guides that show the bigger picture and give anyone a clear idea of ​​the role they play in web development.

That's one of the reasons we decided to make these step-by-step visual guides that show the bigger picture and give anyone a clear idea of ​​the role they play in web development.

illustration

Without further ado, let's get started. You can find the detailed roadmap in the image below, but I'll also explain each step in the description below.

route map

Let's break it down and explain each step in the following sections.

Before we start, while we don't list HTML/CSS knowledge in the roadmap above, it is recommended that you know at least some basic HTML/CSS and understand how to write basic HTML/CSS.

Step 1 - Learn a language

There are many options when it comes to choosing a language. I've grouped them into categories to make it easier for you to decide. For beginners just getting into backend development, I would recommend you to choose any scripting language as they have a lot of requirements and it will get you started quickly. If you have some front-end knowledge, you may find Node.js easier, plus there is a large job market.

If you are already doing backend development and know some scripting languages, I suggest you don't choose another scripting language and choose some from the "features" or "multiparameters" section. For example, if you're already using PHP or Node.js, don't use Python or Ruby, try Erlang or Golang. It will definitely help you stretch your mind and open your mind to new horizons.

Step 2 - Practice what you have learned

There is no better way to learn than practice. Once you have chosen your language and have a basic understanding of these concepts, you can use them. Make as many applets as you can. Make as many applets as you can:

  • In bash to implement some lsof
  • Write a command that gives you the directory structure in JSON format, e.g. jsonify dir-namegives you a dir-nameJSON file with the structure inside
  • Write a command that reads the JSON from the steps above and creates the directory structure
  • Think of some tasks you do every day and try to automate them

Step 3 - Learn Package Manager

Once you've learned the basics of the language and made some sample applications, learn how to use the package manager for the language of your choice. Package managers help you use external libraries in your application and distribute your libraries for others to use.

If you choose PHP, you will have to learn Composer, Node.js has NPM or Yarn, Python has Pip, Ruby has RubyGems. Whatever you choose, go ahead and learn how to use its package manager.

Step 4 - Standards and Best Practices

Each language has its own standards and best practices for doing things. Research the language they picked for you. For example PHP has PHP-FIG and PSR. There are many different community-driven guides for using Node.js, and the same guides are available for other languages.

Step 5 - Safety

Be sure to read about security best practices. Read the OWASPguide and learn about the different security concerns and how to avoid them in the language of your choice.

Step 6 - Practice

Now you have the basics of the language, standards and best practices, security and how to use the package manager. Start now to create a package and distribute it for others to use, making sure to follow the standards and best practices you've learned so far. For example, if you choose PHP then you will publish it on Packagist, if you choose Node.js then you will publish it in the Npm registry source, etc.

Once you're done, search for some projects on Github and open some pull requests in some projects. Some thoughts on this:

  • Refactor and implement the best practices you've learned
  • View open issues and try to fix them
  • add any additional features

Step 7 - Understanding the Test

There are several different test types for testing. Learn about these types what their purpose is. Learn how to write unit and integration tests in your application. Also, learn about different test terms such as mocks, stubsetc.

Step 8 - Practice

For the exercises, go ahead and write unit tests for the actual tasks you've done so far, especially the exercises you did in step 6.

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

Step 9 - Understanding Relational Databases

Learn how to save data in a relational database. Before you choose a tool to learn, learn about different database terms such as keys, indexes, normalization, etc.

There are several options here. However, if you learn one, the other should be fairly easy. The ones you want to learn are MySQL, MariaDB (mostly the same, a fork of MySQL) and PostgreSQL. Select MySQL to get started.

Step 10 - Practice Time

Now is the time to put everything you've learned to use here.

Create a simple application using everything you've learned so far. Pick any idea, maybe create a simple blogging application and implement the following features in it.

  • User Account - Register and Login
  • Registered users can create blog posts
  • User should be able to view all blog posts he has created
  • They should be able to delete their blog posts
  • Make sure the user can only see his personal blog posts and not others
  • Write unit/integration tests for your application
  • You should apply indexes for queries. Analyze queries to ensure indexes are being used

Step 11 - Understanding a Framework

Depending on the project and language you choose, you may or may not need a framework. There are a few different options for each language, go ahead and see what options are available for the language of your choice and choose the relevant one.

I would recommend Laravel or Symfony if you choose PHP, or Lumen or Slim if it's a framework. If you choose Node.js, there are a few different options, but the one that stands out is Express.js.

Step 12 - Practice Time

To implement this step, convert the application you created in Step 10 to use the framework of your choice. Also make sure to port everything including the tests.

Step 13 - Learn NoSQL Databases

First understand what they are, how they differ from relational databases and why they are needed. There are several different options, research a little to see and compare their features and differences. Some common options you can choose from are Rdeis, MongoDB, Cassandra, RethinkDB, and Couchbase. If you have to choose one, use Redis.

Step 14 - Cache

Learn how to implement application-level caching in your application. Learn how to use Redis or Memcached and implement caching in the application you created in Step 12.

Step 15 - Create RESTful API

Learn about REST and learn how to make RESTful APIs, and be sure to read the section on REST from Roy Fieldingthe original article at . If they say REST is only for HTTP API, make sure you can play against other people.

Step 16 - Understand the Different Authentication Methods

Learn about the different authentication and authorization methods. You should know what they are, how they differ and when to prefer one over the other

  • OAuth - Open Authentication
  • Basic Authentication
  • token authentication
  • JWT - JSON Web Token
  • OpenID

Step 17 - Message Broker

Learn about message brokers and understand when and why to use them. There are several options, but the ones that stand out are RabbitMQand Kafka. Now learn how to use RabbitMQif you want to choose one.

Step 18 - Search Engine

As your application grows, simple queries to relational or NoSQL databases won't cut it, and you'll have to turn to search engines. There are multiple options, each with their own differences. Such as Solr, Sphinx, ElasticSearch, Xapian, etc.

Step 19 - Learn how to use Docker

Whether you're replicating the same environment as your production environment, keeping your operating system clean or speeding up your coding, testing, or deployment, Docker can greatly facilitate your work during development. In this step, continue to learn how to use Docker.

Step 20 - Knowledge About Web Servers

If you've gotten this far, you probably had to use the server in the previous steps. This step is primarily about finding out the differences between the different web servers, understanding the limitations and the different configuration options available, and how best to write applications that take advantage of those limitations.

Step 21 - Learn How to Use Web Sockets

While not required, it is beneficial to have this knowledge in your tool belt. Learn how to Web socketswrite a real-time web application using and create some sample applications with it. You can use it in the blogging application made above to achieve real-time updates in the list of blog posts.

Step 22 - Learn GraphQL

Learn how to make APIs with GraphQL. Learn how it's different from REST and why it's called it REST 2.0.

Step 23 - Research the Graph Database

Graph models represent a very flexible way of dealing with relationships in data, and graph databases provide them with fast and efficient storage, retrieval, and querying. Learn how to use Neo4jor OrientDB.

Step 24 - Keep exploring

Once you start learning and practicing, you're bound to come across things we didn't cover in this roadmap. Just keep an open mind and a healthy desire for new things.

The key to remember is to practice as much as possible. It looks scarier in the beginning and you may feel like you're not grabbing anything, but that's normal and over time you'll feel better and better.

OK, that's all. Thanks for reading.

For more PHP knowledge, go to PHPCasts

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325989072&siteId=291194637