Hi everyone, welcome to the learning path for becoming a complete and job-ready backend developer.
This roadmap is in a step-by-step format. Each step includes the next thing that you should learn and the technologies I recommend for that step.
How does the Internet work?
Learning the basic, theoretical knowledge of HTTP, browsers, DNS, domain names, and how they all work is a step people tend to overlook, but it is crucial.
Resources: https://www.youtube.com/watch?v=zN8YNNHcaZc
Use of terminal/command line:
Backend developers interact with the server a lot of the time. Servers do not provide a GUI for you to interact with them so you need to learn the LINUX command line. Start with basic file/directory creation, removal, updating, deletion. After that, you should become comfortable with using the following commands: grep, awk, sed, lsof, curl, wget, tail, head, less, find, ssh, kill.
You don’t need to be an expert in these right away, the best way to learn them is to incorporate them into your daily computer usage.
Resources: Linux terminal commands.
Learn a language:
Here we are entering a more technical category. You can choose any language that fits your use case, but I recommend JavaScript.
You can learn JavaScript on the Topcoder Thrive platform: Thrive articles for Javascript or at the MDN docs.
Basic frontend skills:
I am not instructing you to master HTML, CSS, DOM manipulation, and Frontend frameworks. What I am asking you is to learn basic HTML and DOM manipulation skills.
Resources: Short HTML crash course, DOM crash course.
Version control system:
This is a system you will use to manage various versions of your software, primarily during development. It’s like checkpoints in video games. This is fundamental to any software role you choose and the only option you should go with here is GIT. For the remote repositories, you can go with GITHUB or GitLab.
Resources: Link to Gitlab thrive article, Link to Git crash course
Databases:
Learning how to use a database directly when you want to utilize it in an app is not a good idea. First, you need to learn about various relational database concepts like SQL, joins, transactions, deadlocks ACID properties, normalization indexes, etc. After that, you can learn about NoSQL databases, but these are easier to grasp once you are familiar with SQL databases.
The best database to choose for your app (for SQL) is PostgreSQL, and for NoSQL is MongoDB. Of course, you can choose others depending on your use case.
Once you are confident with databases, I recommend using an ORM, especially with an SQL database, as it is much easier and saves you from attacks like SQL injection.
There are dedicated courses for databases in most computer science school settings; you can also take a look at the resources here: Thrive article on database paradigms, Thrive article on SQL, Thrive article on Sequelize ORM, Interactive SQL tutorial
Core backend technologies:
Nodejs is a JavaScript framework that allows you to run JavaScript on the server directly. This has made JavaScript very popular for backend devs. I would recommend learning vanilla nodejs at first and then learning expressjs. It will become easier for you to create requests/responses and set up a server. After that, you can learn how to create APIs.
Resources: Here I recommend watching a short crash course like this to get the basic idea. After that, head to the official documentation of node and express.
Checkpoint 1 achieved: By this point, you know enough to get started with a project. It can be a simple CRUD application or maybe a Yelp/Airbnb clone. Do whatever you feel like doing and put all your effort into it. While you are doing this make sure to use GitHub to publicly show your progress. Once your project is done you can use Heroku to host your project, for free.
Now, you can use this project to get internships. I will recommend two websites that can help with this. The first one is AngelList, which is used in a lot of countries, and the second one is Internshala. Although the second one is more specific to the Indian market, you can use whichever platform is more popular in your country.
Now, we will discuss more advanced topics that are usually learned by new developers while they are on the job.
Caching:
Caching is a simple way of storing information to access quickly, using frameworks like Redis.
Resources: Thrive article on Redis
System design
This is a very broad step, it includes the design and development principles of various architectural patterns, such as choosing a database and its scaling and design. This is learned best at a job or an internship.
Resources: Gaurav sen System design playlist
Containerization:
Sometimes an app can work on your machine but not on the server, so we use docker to pack everything that is helping it on your machine and run it on the server.
Resources: Docker thrive article
Web sockets:
Maintaining continuous communication between the client and the server is very important in modern-day applications. Sockets help you do that.
Resources: You can read about the basics here in this Thrive article. Once you are done with that I recommend taking a look at the socket.io library.
Final steps:
Now, you can call yourself a pro backend dev. From this point onwards your journey will continue with the refinement of design patterns and learning newer technologies.
Extras: I recommend keeping a look at our Thrive community here for backend articles and following these YouTubers - Codedamn, Fireship, Gaurav sen.