An Interest In:
Web News this Week
- April 26, 2024
- April 25, 2024
- April 24, 2024
- April 23, 2024
- April 22, 2024
- April 21, 2024
- April 20, 2024
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:
- https://medium.com/@burakuren101/internet-backend-developer-roadmap-7fbacc356061
- https://www.youtube.com/watch?v=zN8YNNHcaZc
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:
- https://medium.com/@burakuren101/internet-2-what-is-http-bb3534c4a4d3
- https://www.youtube.com/watch?v=iYM2zFP3Zn0
- https://www.youtube.com/watch?v=uEmF74eHRO8 (watch 0:0:000:30:00 and you can see the sections of this lecture in the description.)
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:
- https://www.youtube.com/watch?v=uEmF74eHRO8 (watch 0:0:000:30:00 and you can see the sections of this lecture in the description.)
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:
- https://www.youtube.com/watch?v=uEmF74eHRO8 (watch 0:0:000:30:00 and you can see the sections of this lecture in the description.)
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:
- https://www.youtube.com/watch?v=uEmF74eHRO8 (watch 0:30:001:00:00 and you can see the sections of this lecture in the description.)
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:
- https://www.youtube.com/watch?v=uEmF74eHRO8 (watch 1:00:001:16:00, and you can see the sections of this lecture in the description.)
2.3 JavaScript
In this section, you are gonna learn how these websites are so responsive.
My resource recommendation for this section is:
- https://www.youtube.com/watch?v=uEmF74eHRO8 (1:16:00-end and, you can see the sections of this lecture in the description.)
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:
- Python Basics: https://www.youtube.com/watch?v=kqtD5dpn9C8
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:
- https://www.youtube.com/playlist?list=PLeo1K3hjS3uu_n_a__MI_KktGTLYopZ12
- https://www.youtube.com/watch?v=pkYVOmU3MgA
- https://www.youtube.com/watch?v=8hly31xKli0
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:
- Official Documentation:https://docs.python.org/3/tutorial/index.html
- https://www.youtube.com/watch?v=XKHEtdqhLK8
- https://www.udemy.com/course/complete-python-developer-zero-to-mastery/
- https://www.udemy.com/course/100-days-of-code/
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:
- https://www.udemy.com/course/complete-python-postgresql-database-course/*Jose is a really nice teacher and I loved taking courses from him. You can search about this topic and find different resources but my suggestion is this course.
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:
- https://www.youtube.com/watch?v=pTB30aXS77U
- https://www.digitalocean.com/community/conceptual_articles/s-o-l-i-d-the-first-five-principles-of-object-oriented-design
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:
- What is Elastic Search: https://www.youtube.com/watch?v=ZP0NmfyfsoM
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
Dev To
An online community for sharing and discovering great ideas, having debates, and making friendsMore About this Source Visit Dev To