Roadmap

The C# Academy Full-Stack Developer Roadmap

I’m live proof that a progamming job can be obtained without a college degree. I landed a job as a software engineer at a large company at the age of 39, after learning online for less than two years.

One day in 2019, I was exploring possibilities of remote work. I considered teaching languages, content creation, becoming a personal assistant, and a few other options, but I quickly realised that these fields were already crowded and the average salary wasn't great. I needed a highly skilled, high in demand, well-paid skill that would lead to my financial freedom.

I found an online web developer course and in a matter of hours, I was hooked. The course had a very clear, organised curriculum and the feedback loop was immediate. Writing code and seeing the results of my work in real time was incredible. After that, the rest is history. I was addicted. Programming was in the back of my mind 24/7 for two years and now I’m employed and have a promising career ahead of me. And I believe that everyone can do it.

But enough about me. I wanted to give you some background so you realize anyone can do it. But let's move on. Before jumping onto our road map, let's examine a very important question: should you learn back-end or front-end?

Front-end or back-end?

If you're reading this you're probably interested in learning a back-end language. But it's still a good question: when starting, which one should you learn? There's isn't an absolutely correct answer to this, but we at The C# Academy do have an opinion about it.

The first criteria to make this decision is: what do you enjoy the most? Are you more interested in creating beautiful designs and a great user experience? Or you like the processing and analysis of data more? This will play a big role on your decision. Don't ignore your inclinations. It's unlikely you'll get far if you choose something you ultimately don't like.

We think that you should learn both. The reason is simple. You're stacking the deck in your favor and increasing your chances of getting your foot in the door if you're able to demonstrate full-stack skills. That doesn't mean you wouldn't be able to get a job with just front-end or just back-end but it will definitely be harder.

Now that you know where we stand, which one should you learn first? While starting with front-end is perfectly fine, we advocate starting with back-end because the competition for purely front-end jobs is not as fierce as for purely back-end. You'll find hundreds of applications for the latter while that's almost never the case for back-end jobs.

Learn a Back-End Language

Pick any of the most used languages. Really. Don’t overthink it. Read a few articles just to see what’s out there and start learning a programming language, TODAY. You can do it for free. There are abundant beginner resources for the most common languages out there, and you can make a lot of progress without spending a cent. If you can afford a course, even better.

There are, however, a few criteria you can use to help pick a language. The main thing would be to start with a language that someone you know can help you with. I started learning Java but switched early to C# because a close friend was a senior C# developer and he was willing to help. I got unstuck many times by asking him questions and seeing him work helped me shape the way I think about code.

Something else you have to do while thinking about your first programming language is to research what's being used in your area. It's unlikely your first programming job will be remote, so make sure the language you choose is in demand in your city or in the places you would be willing to relocate to.

Another criteria is community support. Super common languages such as Python, Java, C#, Javascript and PHP have so many users that most of your questions for the first few years of learning will already have been answered online. And most of the time you’ll be looking for answers in forums, so it pays off to start with a widely-used language.

You don’t need to become an expert in this first language. You’ll be able to build interesting applications with beginner knowledge and very cool stuff just getting to intermediate. And even when you get a job, you’ll keep learning this language, so don’t worry too much about trying to learn EVERYTHING about it.

Learn front-end technologies

I included Javascript in the back-end languages because you can do a lot of ‘under the hood’ work with JS these days, but it’s very important that you learn how to interact with a browser, so Javascript is the way to go.

You’ll be building very interesting applications with only a little knowledge of javascript. Even if you don’t plan to become a web developer, I would still learn it so I can quickly build projects that are out in the world for people to use. Javascript will allow that.

Of course, you’ll also need to learn basic HTML and CSS, but the learning curve isn’t so steep and you can learn the basics in a matter of hours.

Build stuff

Your knowledge will only be solid once you build applications. You’ll never get the knowledge necessary to succeed in an enterprise environment without creating stuff that works and works well. And I doubt you’ll get a job without it anyways.

Start Small: In the process of learning the technologies we talked about above, you’ll be building small applications, using one or a few libraries. These small projects are very important for understanding how these things work in isolation. They should definitely be part of your library of projects.

Complex Tutorials: On top of that, it’s very important to build applications that involve dozens of technologies tied together. That’s a bit closer to the world of enterprise applications you’ll have to navigate when getting a job. Many tutorials have this approach, using many libraries and design patterns.

In my view, It’s a big mistake to start with complex tutorials. Not only the chances are higher that you’ll feel overwhelmed and might end up quitting, but you might also not understand how each piece of the puzzle works before getting them to work in unison.

If you escalate the complexity of your projects and still find yourself overwhelmed, you don’t need to quit them, just take a step back and start a little side project to understand how one of the pieces of the big tutorial work separately. Everything will make more sense after taking that step. Do it as many times as necessary until you get comfortable with all the concepts.

The first Udemy course I bought to learn Asp.Net overwhelmed me because there were so many things to learn at the same time. I ended up stepping back and approaching each subject separately and the tutorial was very useful later on, with a bit more experience in each part of that stack.

Tweaking: Once you complete a complex tutorial, try to create something based on that, adding, subtracting or modifying features to suit your own needs. Think of applications you can actually use, or something you can build for someone. I recommend you build an application for someone else, as you’ll get used to the constant back and forth of feedback that happens in the real world. You’ll have to get used to another person’s needs and learn to communicate with them, which is really important for a developer.

Create a Portfolio

After you build your first big project, you can build a portfolio. It’s ok to just have one thing in there. You can also add a few of the other smaller ones to have some more content, but I suggest you curate your public portfolio with solid projects. You need things that will stand out and impress your recruiters. You could even have two sections, something like “Small Projects” and “Big Projects”.

If you have just one project, you’ll feel the urge to build more. An empty portfolio will give you extra motivation to build things to fill it with. Also, you’ll inevitably raise the bar for what you’ll build, paying more attention to detail, knowing it will be out in the world for people to see.

Apply for Jobs

If you’re consistent with your training, you should be ready to apply for jobs in six months. It could be faster or slower depending on how much time you dedicate to it, but the reality is that stage five can come faster than you imagine. You just have to free yourself from the idea that you need to get to a certain stage before applying for jobs.

The objective here isn’t to get a job as soon as you start applying. More likely than not, you’ll get a lot of rejections and that’s fine. But getting yourself out there and sending resumes will make you feel it’s real. It will force you to take a closer look at your material. You’ll scrutinise your knowledge, your projects, your portfolio, your CV. Knowing it will be looked at by recruiters will make you push yourself harder.

Don’t worry too much about the job prerequisites. Apply for jobs in your two main areas of expertise: The languages you chose for front-end and back-end. There will usually be a list of other technologies and that can be disheartening. Start tackling them one by one, making small projects in each of them, and then trying to add them to your bigger projects. By the end of a year, you’ll notice that you have some experience in most items on most jobs’ list of requirements.

Don’t give up

I know you’ve heard this gazillions of times: “Don’t give up and you’ll get there”. It’s obvious, but it’s true. By showing up and studying every day, you’ll get increasingly comfortable. After a few months of looking at it, the things that initially overwhelmed you will feel easy.

Spending an hour in front of the computer will be difficult for the first week, but if you push yourself a little more every day, you’ll be able to train for several hours and crave more after a few months.

If you set your expectations correctly, you won’t be beaten into quitting before getting to where you want. You have to expect to be rejected many times, to have lazy days where you are unmotivated, to feel hopeless and stupid because you can’t understand a concept or a piece of code, to get stuck for weeks trying to solve an issue. These are all normal and it happens to every single programmer.

Enjoy the journey

You might find out this is not for you. If after a few months, every day you dread sitting down to study, you probably don’t like it enough to keep going. And that’s perfectly fine. But you have to know that the better we get, the more motivated we’re likely to be. That’s why it’s important to start with easy small projects and get a few wins in the beginning.

After that, think that whatever happens, you’ll have fun. I just loved sitting down and coding, regardless of getting a job or not. If I never got a job, I wouldn’t think of my time as having been wasted. I learned a new skill, I learned how to learn, I grew. And I gave it a solid try. Way better than not doing anything. In the worst case scenario, you lose nothing. In the best case scenario, you get your dream job and change your life.

The C# Academy Full-Stack Developer Roadmap

I’m live proof that a progamming job can be obtained without a college degree. I landed a job as a software engineer at a large company at the age of 39, after learning online for less than two years.

One day in 2019, I was exploring possibilities of remote work. I considered teaching languages, content creation, becoming a personal assistant, and a few other options, but I quickly realised that these fields were already crowded and the average salary wasn't great. I needed a highly skilled, high in demand, well-paid skill that would lead to my financial freedom.

I found an online web developer course and in a matter of hours, I was hooked. The course had a very clear, organised curriculum and the feedback loop was immediate. Writing code and seeing the results of my work in real time was incredible. After that, the rest is history. I was addicted. Programming was in the back of my mind 24/7 for two years and now I’m employed and have a promising career ahead of me. And I believe that everyone can do it.

But enough about me. I wanted to give you some background so you realize anyone can do it. But let's move on. Before jumping onto our road map, let's examine a very important question: should you learn back-end or front-end?

Front-end or back-end?

If you're reading this you're probably interested in learning a back-end language. But it's still a good question: when starting, which one should you learn? There's isn't an absolutely correct answer to this, but we at The C# Academy do have an opinion about it.

The first criteria to make this decision is: what do you enjoy the most? Are you more interested in creating beautiful designs and a great user experience? Or you like the processing and analysis of data more? This will play a big role on your decision. Don't ignore your inclinations. It's unlikely you'll get far if you choose something you ultimately don't like.

We think that you should learn both. The reason is simple. You're stacking the deck in your favor and increasing your chances of getting your foot in the door if you're able to demonstrate full-stack skills. That doesn't mean you wouldn't be able to get a job with just front-end or just back-end but it will definitely be harder.

Now that you know where we stand, which one should you learn first? While starting with front-end is perfectly fine, we advocate starting with back-end because the competition for purely front-end jobs is not as fierce as for purely back-end. You'll find hundreds of applications for the latter while that's almost never the case for back-end jobs.

Learn a Back-End Language

Pick any of the most used languages. Really. Don’t overthink it. Read a few articles just to see what’s out there and start learning a programming language, TODAY. You can do it for free. There are abundant beginner resources for the most common languages out there, and you can make a lot of progress without spending a cent. If you can afford a course, even better.

There are, however, a few criteria you can use to help pick a language. The main thing would be to start with a language that someone you know can help you with. I started learning Java but switched early to C# because a close friend was a senior C# developer and he was willing to help. I got unstuck many times by asking him questions and seeing him work helped me shape the way I think about code.

Something else you have to do while thinking about your first programming language is to research what's being used in your area. It's unlikely your first programming job will be remote, so make sure the language you choose is in demand in your city or in the places you would be willing to relocate to.

Another criteria is community support. Super common languages such as Python, Java, C#, Javascript and PHP have so many users that most of your questions for the first few years of learning will already have been answered online. And most of the time you’ll be looking for answers in forums, so it pays off to start with a widely-used language.

You don’t need to become an expert in this first language. You’ll be able to build interesting applications with beginner knowledge and very cool stuff just getting to intermediate. And even when you get a job, you’ll keep learning this language, so don’t worry too much about trying to learn EVERYTHING about it.

Learn front-end technologies

I included Javascript in the back-end languages because you can do a lot of ‘under the hood’ work with JS these days, but it’s very important that you learn how to interact with a browser, so Javascript is the way to go.

You’ll be building very interesting applications with only a little knowledge of javascript. Even if you don’t plan to become a web developer, I would still learn it so I can quickly build projects that are out in the world for people to use. Javascript will allow that.

Of course, you’ll also need to learn basic HTML and CSS, but the learning curve isn’t so steep and you can learn the basics in a matter of hours.

Build stuff

Your knowledge will only be solid once you build applications. You’ll never get the knowledge necessary to succeed in an enterprise environment without creating stuff that works and works well. And I doubt you’ll get a job without it anyways.

Start Small: In the process of learning the technologies we talked about above, you’ll be building small applications, using one or a few libraries. These small projects are very important for understanding how these things work in isolation. They should definitely be part of your library of projects.

Complex Tutorials: On top of that, it’s very important to build applications that involve dozens of technologies tied together. That’s a bit closer to the world of enterprise applications you’ll have to navigate when getting a job. Many tutorials have this approach, using many libraries and design patterns.

In my view, It’s a big mistake to start with complex tutorials. Not only the chances are higher that you’ll feel overwhelmed and might end up quitting, but you might also not understand how each piece of the puzzle works before getting them to work in unison.

If you escalate the complexity of your projects and still find yourself overwhelmed, you don’t need to quit them, just take a step back and start a little side project to understand how one of the pieces of the big tutorial work separately. Everything will make more sense after taking that step. Do it as many times as necessary until you get comfortable with all the concepts.

The first Udemy course I bought to learn Asp.Net overwhelmed me because there were so many things to learn at the same time. I ended up stepping back and approaching each subject separately and the tutorial was very useful later on, with a bit more experience in each part of that stack.

Tweaking: Once you complete a complex tutorial, try to create something based on that, adding, subtracting or modifying features to suit your own needs. Think of applications you can actually use, or something you can build for someone. I recommend you build an application for someone else, as you’ll get used to the constant back and forth of feedback that happens in the real world. You’ll have to get used to another person’s needs and learn to communicate with them, which is really important for a developer.

Create a Portfolio

After you build your first big project, you can build a portfolio. It’s ok to just have one thing in there. You can also add a few of the other smaller ones to have some more content, but I suggest you curate your public portfolio with solid projects. You need things that will stand out and impress your recruiters. You could even have two sections, something like “Small Projects” and “Big Projects”.

If you have just one project, you’ll feel the urge to build more. An empty portfolio will give you extra motivation to build things to fill it with. Also, you’ll inevitably raise the bar for what you’ll build, paying more attention to detail, knowing it will be out in the world for people to see.

Apply for Jobs

If you’re consistent with your training, you should be ready to apply for jobs in six months. It could be faster or slower depending on how much time you dedicate to it, but the reality is that stage five can come faster than you imagine. You just have to free yourself from the idea that you need to get to a certain stage before applying for jobs.

The objective here isn’t to get a job as soon as you start applying. More likely than not, you’ll get a lot of rejections and that’s fine. But getting yourself out there and sending resumes will make you feel it’s real. It will force you to take a closer look at your material. You’ll scrutinise your knowledge, your projects, your portfolio, your CV. Knowing it will be looked at by recruiters will make you push yourself harder.

Don’t worry too much about the job prerequisites. Apply for jobs in your two main areas of expertise: The languages you chose for front-end and back-end. There will usually be a list of other technologies and that can be disheartening. Start tackling them one by one, making small projects in each of them, and then trying to add them to your bigger projects. By the end of a year, you’ll notice that you have some experience in most items on most jobs’ list of requirements.

Don’t give up

I know you’ve heard this gazillions of times: “Don’t give up and you’ll get there”. It’s obvious, but it’s true. By showing up and studying every day, you’ll get increasingly comfortable. After a few months of looking at it, the things that initially overwhelmed you will feel easy.

Spending an hour in front of the computer will be difficult for the first week, but if you push yourself a little more every day, you’ll be able to train for several hours and crave more after a few months.

If you set your expectations correctly, you won’t be beaten into quitting before getting to where you want. You have to expect to be rejected many times, to have lazy days where you are unmotivated, to feel hopeless and stupid because you can’t understand a concept or a piece of code, to get stuck for weeks trying to solve an issue. These are all normal and it happens to every single programmer.

Enjoy the journey

You might find out this is not for you. If after a few months, every day you dread sitting down to study, you probably don’t like it enough to keep going. And that’s perfectly fine. But you have to know that the better we get, the more motivated we’re likely to be. That’s why it’s important to start with easy small projects and get a few wins in the beginning.

After that, think that whatever happens, you’ll have fun. I just loved sitting down and coding, regardless of getting a job or not. If I never got a job, I wouldn’t think of my time as having been wasted. I learned a new skill, I learned how to learn, I grew. And I gave it a solid try. Way better than not doing anything. In the worst case scenario, you lose nothing. In the best case scenario, you get your dream job and change your life.

An error has occurred. This application may no longer respond until reloaded. Reload 🗙