Your Web News in One Place

Help Webnuz

Referal links:

Sign up for GreenGeeks web hosting
July 14, 2022 01:18 pm GMT

Backend Developer Roadmap 2022

I remember my first days when I was looking for a useful resource to learn how can I become a backend developer. So I am going to share all my knowledge and resources with you that I learned and discovered so far.
And at the same time, I am gonna write blogs about the topics in the medium in time. Ill share my blog links here too.

Our roadmap resource: https://roadmap.sh/backend

So first of all do not think that you are gonna just learn a programming language and nothing else. There are plenty of things that we learned and be sure that learning a programming language is just a part of this journey.

And trust me, this journey is so fun! After learning all these topics, all your perspective on the internet and our civilization are gonna develop so much!

So these are the main topics that you are gonna learn through this journey:

1. Internet

2. Basic Frontend Knowledge

3. OS (Operating System) and General Knowledge

4. Learn Programming

5. Version Control Systems

6. Relational Databases

7. More About Databases

8. NoSQL Databases

9. Learn About APIs (Application Programming Interface)

10. Authentication

11. Caching

12. Web Security Knowledge

13. Testing

14. CI/CD

15. Design and Development Principles

16. Architectural Patterns

17. Search Engines

18. *Message Brokers

19. Containerization vs Virtualization

20. *GraphQL

21. *Graph Databases

22. *Web Sockets

23. *Web Servers

24. *Building for Scale

25. Keep Learning

The title subtitles that I used * are the topics that you dont have to learn right now but throughout your journey, you should check them out. And I cannot share any resources for them because at the current time I am already learning about them :D

1. Internet

1.1 How does the Internet work?

1.2 What is HTTP?

1.3 Browsers and how they work?

1.4 DNS and how it works?

1.5 What is a domain name?

1.6 What is hosting?

1.1 How does the internet work?

In this section, you should be learning the fundamentals of the internet, and developing your world perspective!

My resource recommendation for this section is:

1.2 What is HTTP?

In this section, you are gonna learn one of the most common protocols on the internet that we use daily.

My resource recommendations for this section are:

1.3 Browsers and how they work?

In this section, you are gonna learn how browsers work and as a backend developer what you should know deeper.

My resource recommendation for this section is:

1.4 DNS and how it works?

In this section, you are gonna learn what DNS means and how it works.

My resource recommendation for this section is:

1.5 What is a domain name?

In this section, you are gonna learn what is a domain name and why it is important.

My resource recommendation for this section is:

1.6 What is hosting?

In this section, you are gonna get a deep dive into what is hosting, what is server, and what fundamentals you should know.

My resource recommendation for this section is:

Alright now we got the fundamentals of the internet and now we should learn the basics of the frontend so that we can understand better how the web works as a backend developer what are things that we should be careful because as a backend developer you are not gonna work alone, there will be teammates and some of them gonna be frontend developers.

2. Basic Frontend Knowledge

2.1 HTML

2.2 CSS

2.3 JavaScript

2.1 HTML

In this section, you are gonna learn what is HTML and why is it important in the modern world.

My resource recommendation for this section is:

2.2 CSS

In this section, you are gonna learn how we are making all these websites like this colorful and charming with CSS markup language.

My resource recommendation for this section is:

2.3 JavaScript

In this section, you are gonna learn how these websites are so responsive.

My resource recommendation for this section is:

Now you learned what you should about what is happening in the front-end as a backend developer, so its that you should start learning more about the backend. In the next section, we are gonna learn more about Operating systems and General Knowledge that you should know as a backend developer.

So my suggestion is that you should start using Linux operating system after now because in the servers we are always gonna use Linux and you should start using Linux in your computer after now if you are a beginner then you can start using Ubuntu operating system with Dual-Booting Ubuntu alongside your Windows, which is the most common one among the Linux Operating System Distros.

If you dont know anything about what Linux is then go ahead and start learning the fundamentals of it and how you are gonna use Linux on your machine:

What is Linux: https://www.youtube.com/watch?v=rrB13utjYV4

What is Linux#2: https://www.youtube.com/watch?v=zA3vmx0GaO8

How to Dual-Boot Ubuntu+Windows10: https://www.youtube.com/watch?v=-iSAyiicyQY

How to Dual-Boot Ubuntu+Windows11: https://www.youtube.com/watch?v=bVmTxwUuXlM

How to Dual-Boot Ubuntu+MacOS: https://www.youtube.com/watch?v=jbUulXVZIBI

*And there are so many other options that you dual-boot Ubuntu or any other Linux Distro for example Debian with your current Operating System, you should find the suitable one for you by searching about it.

*Now after you installed Linux (after now I gonna assume that you installed Ubuntu but you can search for the resources for your operating system)

Crash Course for Ubuntu: https://www.youtube.com/watch?v=ROjZy1WbCIA

3. OS (Operating System) and General Knowledge

3.1 Terminal Usage

3.2 How OSs Work in General

3.3 Process Management

3.4 Threads and Concurrency

3.5 Basic Terminal Commands

3.6 Memory Management

3.7 Interprocess Communication

3.8 I/O Management

3.9 POSIX Basics

3.10 Basic Networking Concepts

3.1 Terminal Usage

In this section, you are gonna learn how to use BASH.

My resource recommendation for this section is:

3.2 How OSs Work in General

In this section, you are gonna learn how an Operating System works.

My resource recommendation for this section is:

3.3 Process Management

In this section, you are gonna learn how to manage all these processes on your pc.

My resource recommendation for this section is:

3.4 Threads and Concurrency

In this section, you are gonna discover two very important concepts about Operating Systems: Threads and Concurrency.

My resource recommendation for this section is:

3.5 Basic Terminal Commands

You are gonna learn useful BASH commands.

My resource recommendation for this section is:

3.6 Memory Management

In this section, you are gonna learn how to manage memory.

My resource recommendation for this section is:

3.7 Interprocess Communication

In this section, you are gonna learn what is Interprocess Communication.

My resource recommendation for this section is:

3.8 I/O Management

In this section, you are gonna discover Inputs and Outputs in your machine and how to manage them.

My resource recommendation for this section is:

3.9 POSIX Basics

In this section, you are gonna learn what is POSIX and what are the basics that you should know.

My resource recommendation for this section is:

3.10 Basic Networking Concepts

In this section, you are gonna learn what is Networking and the basics that you should know as a backend developer.

My resource recommendation for this section is:

WOW, congrats! You learned so much this far. Now you know so many things about the Internet, Front-end, and Operating Systems.
Now you are ready to start learning a Programming Language and start learning the real tools and software that we use to develop backend applications. Lets start with learning a new programming language.

4. Learn Programming

4.1 Learn the basics of a Programming Language

4.2 Data Structures and Algorithms

4.3 Learn a Programming Language Completely

So I know that you are confused about which language you should learn. And it is so normal dont worry. Somebody says to start with Python and another one says to start with JavaScript. And every one of them is right, it doesnt matter which language that you are starting with, because in time you are gonna learn new languages when you need and the important thing is understanding the concepts that every programming language has in common. After you learn one of them it is so easy to learn another one, so dont worry.
If we come to my suggestion, it is Python, because I started with it and I liked it.
And I gonna share the resources that I used in the Python journey.

4.1 Learn the basics of a Programming Language

Now you are learning JUST the basics of a programming language so that you can start learning Data Structures and Algorithms.
And then you are gonna learn your programming language completely. Because Data Structures and Algorithms is one of the most important topics in programming and you just need the basics of a programming language to learn it.

My resource recommendation for this section is:

4.2 Data Structures and Algorithms

Now you should learn Data Structures and Algorithms. It doesnt matter what language you are learning with these concepts, because it is universal for all programming languages.

My resource recommendation for this section is:

4.3 Learn a Programming Language Completely

Now you should learn your language more deeply. There is plenty of resources free and paid. And you should try them and choose the one that you are comfortable with. I love reading the documentation of a language while I am learning but sometimes this is not so beginner-friendly. So try out the Udemy Courses, Coursera Courses, Youtube Courses, or complete Blog Courses. I am gonna suggest some of them but do not forget to search for them by yourself too.

My resource recommendation for this section is:

CONGRATS! You learned a programing language and most importantly Data Structures and Algorithms! Now if you think that you don't remember so much about Python don't worry, after now small by small you are gonna start developing apps so that the things that you need in real life will be practiced.

Now there is one more important topic that you should learn very quickly and that is Version Control Systems that we use so often when developing.

5. Version Control Systems

5.1 Learn a Version Control System (GIT)

5.2 Repo Hosting Service (GITHUB)

5.1 Learn a Version Control System (GIT)

In this section, you are gonna learn the GIT version control system that we use so often as developers.

My resource recommendation for this section is:

5.2 Repo Hosting Service (GITHUB)

In this section, you are gonna learn how to host your code in repo hosting services like GITHUB which is the most common one.

My resource recommendation for this section is:

6. Relational Databases

In this section, you are gonna learn how to use a relational database with Python. There are so many options when it comes to databases and I chose one of them called PostgreSQL. Just like in programming language the fundamentals are all the same.

My resource recommendation for this section is:

7. More About Databases

7.1 ORMs

7.2 ACID

7.3 Transaction

7.4 N+1 Problem

7.5 Database Normalization

7.6 Indexes and how they work

7.7 *Data Replication

7.8 *Sharding Strategies

7.9 *CAP Theorem

7.1 ORMs

In this section, you are gonna learn how to interact with the databases by decreasing the usage of SQL and using the libraries of your programming language that we called ORMs (Object-Relational Mapping).

My resource recommendation for this section is:

7.2 ACID

In this section, you are gonna learn about ACID (Atomic-Consistent-Isolated-Durable) principles that we use while we are interacting with the databases.

My resource recommendation for this section is:

7.3 Transaction

In this section, you are gonna learn about transactions that we so much while we interact with the databases.

My resource recommendation for this section is:

7.4 N+1 Problem

You are gonna learn one of the most common problems that occur while working with databases!

My resource recommendation for this section is:

7.5 Database Normalization

You are gonna learn one of the most important concepts about databases.

My resource recommendation for this section is:

7.6 Indexes and how they work

One of the biggest problems with databases is Searching and we are using Indexes for it. You are gonna learn what are Indexes and how they work.

My resource recommendation for this section is:

8. NoSQL Databases

I skipped this section while I am learning on my journey but, after a time I had to learn about NoSQL Databases, so you can take Udemy Course about it and learn now. The course is teaching MongoDB which is one of the most common databases when it comes to NoSQL Databases.

My resource recommendation for this section is:

9. Learn About APIs (Application Programming Interface)

9.1 REST

9.2 JSON APIs

9.3 *SOAP

9.4 *HATEOAS

9.5 *Open API Spec and Swagger

9.1 REST

REST is the underlying architectural principle of the web which stands for Representational State Transfer. You are gonna learn about it and gonna use this architectural principle while building APIs using Python and a framework called Flask. And thanks to a course that I gonna suggest to you, you are not gonna need to learn Flask with a separate course and you are gonna learn Flask while building real-world APIs which is the best way of learning about tech!

My resource recommendation for this section is:

9.2 JSON APIs

About this topic, I didn't take a course but I just wanted to learn about it so that if I need it in any case, I can take a more detailed course and learn about it.

My resource recommendation for this section is:

10. Authentication

10.1 OAuth

10.2 Basic Authentication

10.3 Token Authentication

10.4 JWT

10.5 *CookieBased

10.6 *OpenID

10.7 *SAML

You learned about this topic while you are building REST APIs, but there can be ones that you never heard of, so let me share with you all the Authentication technics that backend developers use so that youll know about it can use or learn more detailed about it when the time comes.

10.1 OAuth

The Authentication type that you are familiar with. It is used while you are signing in with your Google Account or Facebook Account on a different website.

My resource recommendation for this section is:

10.2 Basic Authentication

You are gonna learn what is Basic Authentication in 5 minutes.

My resource recommendation for this section is:

10.3 Token Authentication

You are gonna learn one of the most used authentication types on the web.

My resource recommendation for this section is:

10.4 JWT

Strangely named but so useful, you are gonna learn about JWTs (JSON Web Tokens).

My resource recommendation for this section is:

-https://www.youtube.com/watch?v=soGRyl9ztjI

13 11. Caching

11.1 CDN

11.2 Client-Side Caching

11.3 Server-Side Caching

You don't have to take every piece of information from the server every time, sometimes it is waste of time. Like when you refresh your Youtube homepage the structure of the page is not requested from the server every time. This technique can also be used in the backend, for example, you requested data from the server as a backend app and you served it to the user and you can hold this data in a separate place from the database so that this data whenever requested again you won't have to search all the database and waste your time and resources, you can request this information from your separate place. We are gonna learn more about this concept but I am not gonna share a huge course again if you need to learn how about this concept at a more advanced level you can decide to take a course about it.

11.1 CDN

You are gonna learn what is CDN (Content Delivery Network).

My resource recommendation for this section is:

11.2 Client-Side Caching

You are gonna learn more about how to cache on the client-side.

My resource recommendation for this section is:

11.3 Server-Side Caching

Let's learn what is Redis which is the most commonly used software when it comes to server-side caching. And you can take courses when you think you need them.

My resource recommendation for this section is:

12. Web Security Knowledge

12.1 Hashing Algorithm

12.2 MD5 and why not use it

12.3 SHA Family

12.4 scrypt

12.5 bcrypt

12.6 HTTPS

12.7 SSL/TLS

12.8 Content Security Policy

12.9 CORS

12.10 OWASP Security Risk

Now you are going to protect data, which is one of the most important things when it comes to backend development!

12.1 Hashing Algorithm

The algorithm that we use so much in the backend especially when it comes to securing passwords.

My resource recommendation for this section is:

12.2 MD5 and why not use it

An insecure algorithm that we stopped using, you should learn what is it and why we stopped using it.

My resource recommendation for this section is:

12.3 SHA Family

Learn about SHA (Secure Hash Algorithms). We are gonna use them so much!

My resource recommendation for this section is:

12.4 scrypt

What is scrypt?

My resource recommendation for this section is:

12.5 bcrypt

What is bcrypt? Check out the following link!

My resource recommendation for this section is:

12.6 HTTPS

You already know about it but take a deeper look.

My resource recommendation for this section is:

12.7 SSL/TLS

Another familiar one, check out the following video.

My resource recommendation for this section is:

12.8 Content Security Policy

You should learn about Content Security Policy while dealing with the Web.

My resource recommendation for this section is:

12.9 CORS

Take lookout very quickly what is this CORS all about.

My resource recommendation for this section is:

12.10 OWASP Security Risk

Get ready to make your web security world make 10x bigger!

My resource recommendation for this section is:

OMG! Coming this far?? You are amazing, congrats!
Now we developed apps but didn't test them, so in the following section, we are gonna learn more about testing.

13. Testing

13.1 Integration Testing

13.2 Unit Testing

13.3 Functional Testing

13.1 Integration Testing

Let's learn about Integration Testing.

My resource recommendation for this section is:

13.2 Unit Testing

Learn about Unit Testing.

My resource recommendation for this section is:

13.3 Functional Testing

Learn about Functional Testing.

My resource recommendation for this section is:

14. CI/CD

Using tools that make it possible that front-end developers and back-end developers to work simultaneously. And learn more about DevOps.

My resource recommendation for this section is:

15. Design and Development Principles

15.1 SOLID

15.2 KISS

15.3 DRY

15.4 YAGNI

15.5 *GOF Design Patterns

15.6 *Domain Driven Design

15.7 *Test Development Driven Development

Now you are gonna learn how to make your apps universal by using design and development principles, those principles are the principles that every developer should follow.

15.1 SOLID

SOLID is an acronym for the first five object-oriented design (OOD) principles by Robert C. Martin (also known as Uncle Bob)
SOLID stands for:

S Single-responsiblity Principle

O Open-closed Principle

L Liskov Substitution Principle

I Interface Segregation Principle

D Dependency Inversion Principle

from Digitalocean.com

My resource recommendation for this section is:

15.2 KISS

Keep It, Super Simple.

My resource recommendation for this section is:

15.3 DRY

Do not Repeat Your Self.

My resource recommendation for this section is:

15.4 YAGNI

You Arent Gonna Need It.

My resource recommendation for this section is:

16. Architectural Patterns

16.1 Monolitchic Apps

16.2 Microservices

16.3 SOA

16.4 Serverless

16.5 *CQRS and Event Sourcing

We have 4 essential patterns that we follow when we are developing apps.

16.1 Monolithic Apps

Everything is one. In general, we are trying to NOT use it. But sometimes it can be useful. To be able to know when to use which one, you should learn every one of them.

My resource recommendation for this section is:

16.2 Microservices

Divide every task into another microservice.

My resource recommendation for this section is:

16.3 SOA

SOA stands for Service-Oriented Architecture.

My resource recommendation for this section is:

16.4 Serverless

One of the popular ones. So many new start-ups using this pattern to develop faster their systems.

My resource recommendation for this section is:

17. Search Engines

Searching is a very important duty and the best case is instead of writing your algorithm about searching using a well-known search engine like Elastic Search. In this section, I am gonna share with you just the introduction to Elastic Search, if you think that you should learn now or when the time comes search for a Udemy or Coursera course about it and study.

My resource recommendation for this section is:

19. Containerization vs Virtualization

About this section, the summary is that you should start learning about Docker. I am gonna share a video about what is Docker, and again, if you think that you should learn it now or when the time comes, search for an Udemy or Coursera course about it and study.

My resource recommendation for this section is:

25. Keep Learning

Now, as you see there are so many parts that you should learn fully now, and also so many parts that you should learn when you need them. Now you should start building your portfolio projects and start using the concepts that you learned and start learning the concepts that I mentioned about it but didn't suggest you any advanced course.

Stay Hungry, Stay Foolish.
-Steve Jobs

For more blog about the internet, backend development, and Python check out my profile


Original Link: https://dev.to/burakuren101/backend-developer-roadmap-2022-2b6p

Share this article:    Share on Facebook
View Full Article

Dev To

An online community for sharing and discovering great ideas, having debates, and making friends

More About this Source Visit Dev To