The guide to becoming a knowledgeable backend developer.

Must-Have Skills for Backend Developers:

I will try to share where is the best to learn the particular tech.

  1. Programming Language
    1.1. Scripting Language: Python or Node.js. PHP is optional.
    1.2. Functional Language: Choose the language that on-demand on your area. You can start in Clojure or Erlang.
    1.3. Other Language: Go - Go is an open-source programming language that makes it easy to build simple, reliable, and efficient software.
  2. Practice what you learned: Exercise and make some command line or CRUD application with your picked language.
    Task: Simple website with login and CRUD pages with users and post table.
  3. Learn Package Manager: Learn how to use a 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.
  4. Coding Standard and Best Practices: Each of the languages has its 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 the community. For Javascript, there is Airbnb Javascript style guide.
  5. Make and Distribute Some Package/Library.
  6. Learn about Testing: There are several different testing types, but for now, learn about how to write Unit and Integration test in the language you picked. Understand different testing terminologies such as mocks, stubs, etc.
    PHP: PHPUnit - Learn some PHP unit testing here in Laracast.
    Node.js: Mocha - Mocha is a feature-rich JavaScript test framework running on Node.js and in the browser, making asynchronous testing simple and fun. Jest is a delightful JavaScript Testing Framework with a focus on simplicity.
    All: 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 the language of your choice.
  7. Write Test for the Practical Steps Above: Go ahead and write unit tests for the practical task that you implemented in the steps before.
  8. Practical Time: Create a simple application using everything that you have learned this far. It should have registration, login, and CRUD.  Create a blog for example, where anyone can register and get a public profile page to create, update, and delete posts, and the public page will show the posts created by them.
  9. 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.
    9.1. PHP - Laravel or Symfony, and Lumen or Slim for micro-frameworks.
    9.2. Node.js - Express.js, Nest.js (for building efficient, reliable and scalable server-side applications), Hapi.js
  10. Learn Relational Databases: Choose MySQL first, then switch to MariaDB (Why MariaDB?) or PostgreSQL.
    There are several options here. However, if you learn one, others should be fairly easy to pickup. Pick MySQL for now then learn how they are different and the usecases of MySQL, PostgreSQL, etc.
  11. Learn a NoSQL Database: First understand what they are, how they are different from the relational database 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.
    My suggestion is to learn MongoDB first, then make sure to look how it compares with others.
  12. Caching: Learn how to implement app-level caching using Redis or Memcached.
    Choose Redis first - I suggest you always try to implement Redis in your caching function.
  13. 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.
  14. Authentication/Authorization Methodologies: Learn about the differences and how to implement them.
    Oauth - Introduction to OAuth 2
    JSON Web Tokens (JWT)  - Introduction to JSON Web Tokens
    Others: Basic Authentication, Token Authentication, OpenID, etc.
  15. Message Brokers: RabbitMQ.
    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 for now, if you want to pick one.
  16. Learn a Search Engine: ElasticSearch or AWS Elasticsearch.
    As the application grows, simple queries on your database 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.
  17. Learn How to Use Docker: Docker Get Started.
    This is a must have skill that will help you and your development.
  18. Knowledge of Web Servers: Nginx and Apache - This two is a must learn web server technologies.
  19. Learn how to use Web Sockets: Socket.io
    Learn Socket.io here at Socket.io Get Started.
  20. 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.
    Look into Graph Database: Again not requred but you should have a little understanding of what they have to offer.
    GraphQL Get Started and GraphQL Best Practices

Go to Roadmap Backend page for detailed information of the roadmap images.

**Bookmark or pin this page so you can easily pick it up and read it again. :)