Backend Developer Roadmap 2021 | How to Become a Backend Developer
Tags: backend, graphql, http, linux
Published: 2021-09-07 02:52:15

## 1) HTTP
HTTP stands for HyperText Transfer Protocol, a widely understood acronym, but do you know what this protocol is and why it is required. Think that you are only given a terminal with Curl or NetCat installed. Will you be able to send a raw HTTP Request without any help? It doesn't mean that you have to memorize the format of an HTTP Request. It simply means whether you are capable of sending a request without any help.‌
‌You must have a semantic understanding of HTTP Object & its method, status code, headers & body of an HTTP Object. You should understand the different types of content types in the response headers. You should not only understand the syntax level, but you must also understand the technical level about what HTTP is.
## 2) REST
REST is another popular term among beginner devs that stands for Representational State Transfer, but it is essential to understand to perform HTTP requests better. While many people continue to use the terms REST and HTTP interchangeably, the truth is that they are two different things. REST refers to a set of attributes of a particular architectural style, while HTTP is a well-defined protocol that happens to exhibit many features of a RESTful system.
![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zi9y3n8astreoq4enj3k.png)
REST architecture states different status codes and using the correct method names. You should be familiar with the different types of HTTP Methods and their use cases. The most important HTTP methods are GET, POST, PUT & DELETE. Also, you should know about the JSON response from the server and how to handle it.‌
![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/acat0lt3uv35zhq3a5dy.png)
Similarly, you can also learn GraphQL. It is technically not an alternative to REST but has advantageous features over REST. While using GraphQL, you don't need to care about the different HTTP Methods. Your focus will be on the Schema of the GraphQL Query.

## 3) Programming Language
The most important is to have a solid grip on a programming language that can run on a server. This does not include HTML as it is a Markup language and not a programming language. You can learn many languages here, namely, Node.JS (a runtime environment to run JavaScript in the server), Python, Rust, PHP & Golang. These are the most used languages for the back-end of your web application.
![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ygl0koaspkkym5adfb2d.png)
A solid understanding of programming languages is very necessary. This doesn't mean learning how the loops, variables, functions works. This also includes creating HTTP requests & servers using the programming language and having good fundamentals in the networking (which is covered in the next point).

## 4) Networking & Linux Fundamentals
You need to have a good understanding of how networks work on any operating system level. You'll primarily be working with the TCP, a 4th level protocol as per the OSI Model.
![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/u58o0q52v5pa445y5g7y.png)
Understanding the basics of Linux Fundamentals is essential as when you are working with a server, you most probably won't have interactive Graphical User Interfaces to handle the server. Therefore, it is very important to find your way around the terminal or command line, which is probably "bash" if you use Linux servers.‌
‌Also, networking is important at the Operating System level as it is sometimes essential to communicate and retrieve and insert data into a database which brings us to the following necessary things, Databases.

## 5) Database
Databases are very essential to maintain and organize the data generated by the users. This could be a SQL (Structured Query Language) or a NoSQL (Not Only Structured Query Language) database. Both have a lot in common, for example, indexing is a common concept in both kinds of databases.
![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ujkdrsn0lqurkpjoyh5n.png)
The most common SQL databases would be Postgres or MySQL, and for NoSQL databases, it would be MongoDB or Cassandra or Redis.
## 6) Caching
Caching data is important because it helps speed up application performance and increase efficiency. It stores data locally, which means browsers and websites will load faster because access elements like homepage images have previously been downloaded.
![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5glxvk9o65d0kr5l2tep.png)
The most common caching technologies that are used are Redis & Memcached. Another promising technology that helps you with caching is AWS ElastiCache, which brings us to our following topic, cloud providers.

## 7) Cloud Providers
When it comes to Cloud Providers, the most resonating names are Amazon Web Services, Google Cloud Platform, and Microsoft Azure, among others like Digital Ocean.
![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3cw4xqsjwui43m2dugt9.png)
You have to pick any one of the cloud providers and get into their ecosystem and understand their embedded features for explicable use. Most of them also provide some free credits for you to use their cloud service. Cloud provides increased amounts of storage and processing power to run the applications & it's easy to access information, process and analyze data, and connect people and resources from any location anywhere in the world. So it's vital to have some fundamental understanding of any cloud provider.

## 8) Web Security
![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/a9gr1rg1pf3t3no13tdh.png)
Anyone can code but is your code secure enough that it's not vulnerable, and the data you are capturing is safe, probably!. So it's very, very important to understand web security before developing scalable applications.
![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qyigrgo6bp96cfnt0o9h.png)
You probably don't want your database to be corrupted or just got cloned and getting dumped by the hacker. Any back-end developer can make and manage servers, but a good back-end engineer can write secure code that keeps the collected data and the users' privacy safe. More about web security can be read [here](https://codedamn.com/news/5-web-security-tips-for-web-apps).

## 9) Containerization & Testing
Containerization and Testing are optional technologies for you to learn as a beginner. As a beginner, you can choose Docker to learn Containerization. You can also prefer Kubernetes but it is overkill. For testing, you can use Jest for your back-end testing and Postman for your API testing.

You can watch the YouTube video [here](https://www.youtube.com/watch?v=aZkG0b6oi4s)