Challenges in Modern Backend Courses and Proposed Solutions
Introduction
In this article, we will discuss the problems that I see in modern backend courses, specifically ASP.NET free courses, proposing an approach to this industry using the available resources.
What Problem This Article Discuss?
I am writing this article because most of the .NET backend free courses are just building CRUD projects filled with concepts that are not really explained but directly used in a way that seems strange for a beginner. You will find yourself asking, “What does dependency injection even mean? Why is the instructor declaring interfaces before extending an implementation? Why not just use it directly? Why not use static members instead of complex dependency injection magic? What is Entity Framework? How do these migrations work? How does it know the type of relationship from the model? How can I customize this?” They treat you as if you already know web development and you want to learn .NET as an additional tool. In these cases, these courses are great, but sadly not for beginners.
There are a lot of people who have no problem with this way of learning, but I was not one, and if you’ve read until here, you probably are not one either. Mostly, I can expect what type of person you are, you have strong foundations in Algorithms, Data structures, you’ve built a lot of console projects, and you’re trying to understand how everything works under the hood. This is a great mindset from my perspective, but sadly, this mindset will hold you back while trying to learn modern back-end development. So this series of articles is to help people like me and mostly you to take the first steps in this world.
One of the main problems is that most instructors do not tell you about the true prerequisites, so I will tell you. Do not start a modern backend course without understanding SOLID and the common Design Patterns. While theoretically, you can start learning without it, all the tutorials use them as if you already know it. Well, they give you an explanation, but it is useful only as a recap. Even full courses about these topics do not really help because SOLID and Design Patterns are ways to solve common problems that at your level you mostly have not faced yet. For example, using interfaces and passing the implementation with dependency injection is very helpful in real-world apps. But in beginner projects where you have only one implementation, you will never understand why the instructor is doing that because it is actually useless in this case, and worse, it can be misleading. So do a full course about SOLID, try to understand it, build some console projects with it (non-tested advice: try to find a beginner-friendly unit testing course, I think it will help a lot), take a look at some common design patterns, learn what ORMs are, and try to build your own ORMs. For example, learn ADO.NET & Dapper (supposing you already know SQL), optionally try to build a fork from Dapper using ADO.NET, then learn Entity Framework. Then you may start a backend course with ASP.NET, and you can focus on the web-specific knowledge.
To summarize the prerequisites:
- SOLID (learn it in a practical way)
- Design Patterns (only the common ones)
- Networking foundations (HTTP, OSI Model, Protocols)
- Learn the language well (learn LINQ, what is IEnumerable? Extension Classes? …)
- SQL & ORMs (better to start from the ground up)
Then start an ASP.NET Minimal API course (No MVC API, no Razor pages).
And note that learning backend for the first time is like learning to speak for the first time. You learned your first language by listening and speaking it. This is a sad truth until someone introduces a new way of learning. It may already exist, but if you are reading this, you mostly did not find it. Do not waste more time, just start and be patient.