Curriculum for Every Self-Taught Developer: Part 1
Your step-by-step guide to become a software engineer
Becoming a software engineer is not only fulfilling, but it also exposes you to a plethora of possibilities, not to mention that it’s high in demand and it pays extremely well.
If you didn’t manage to hop on the bandwagon back then, fret not; this is the step-by-step guide for you to become a self-taught developer in 2022.
Overview
The curriculum will take around eight months, depending on the time you spend studying each day.
Before diving in, let’s enumerate the topics that you are going to cover in the next few months
- Computational thinking, General programming language
- Algorithms, Data structures
- Web development
- Personal projects
- System design
- Computer networking, Operating system, Database management
- Object-oriented programming, Design pattern, SOLID principle
- LeetCode
It seems daunting at first, if not impossible, knowing that you are required to cover tons of topics before getting job-ready.
However, stick to the following curriculum, and you will be impressed with how far you have gone by the end of these eight months.
Let’s get started!
1st month: Computational thinking, General programming language
- CS50 (2 weeks)
- Python Course (1 week)
- Pygame Project (1 week)
In the first month, I assume that you have no prior knowledge of programming AT ALL.
If you already have a good grasp on a general programming language, for instance, Python, JavaScript, etc., go ahead and jump straight to the second month.
In CS50, David J Malan will walk you through the basics of computational thinking and pique your interest in the world of programming.
The exercises in CS50 demand mammoth effort. Hence, you can ignore the exercises and focus primarily on the lectures for now.
What ensues after CS50 is a Python course that doesn’t take more than a week. Your goal is to understand the basic syntax of Python to start tinkering with projects.
You will dedicate your last week to get your hands dirty. Pygame allows you to have fun while picking up concrete coding experiences. You can build anything small like Space Invaders to give yourself the gist of coding.
2nd month: Algorithms and Data Structures
- AlgoExpert Data Structures Crash Course (1 week)
- Algorithms (2 weeks)
- AlgoExpert Easy & Medium Questions (2 weeks)
- LeetCode Top 100 Liked Questions (Reference)
In the second month, you are going to do some heavy liftings.
Algorithms and Data Structures are the topics that will make or break your journey to become a software engineer.
AlgoExpert is, in my opinion, one of the best resources out there. It offers
- High-quality conceptual overview and coding walkthrough
- Clean and quality sample solutions
- Comprehensive time and space complexity analysis
In short, it lowers the inertia and increases the efficiency of learning. Considering the high return on investment, it’s definitely worth the price.
Slow and steady wins the race.
Once you have completed the easy and medium questions, you will allocate a portion of your time in the next six months to tackle one coding question a day on AlgoExpert or LeetCode.
3rd month: Web development
Here comes the bread and butter of our curriculum — Full stack web development.
You will familiarize yourself with everything from frontend to backend, followed by database.
By the end of the month, you should be able to build a full-fledged web application on your own and showcase it on your resume.
Angela Yu’s web development course is comprehensive and it offers the right amount of information to kickstart your journey in full stack development.
4th month: Full stack projects
- Two full stack projects (4 weeks)
- Algorithm Visualisers (Reference)
- Netflix App (Reference)
The best way of learning is by doing.
In the fourth month, you will take a break from online courses and get your hands dirty.
You will muster everything that you have learnt, regurgitate those concepts, stitch them together, and come up with two full stack projects yourself.
You can work on any ideas, but you should strive to include these features in your project
- Login and logout flow
- User authentication via cookies (JWT/ session cookies)
- Google OAuth for authentication and authorisation
- User push notifications via web socket
- Upload and retrieval of image files
These are the significant concepts that are often tested in an interview and they are best learnt via projects.
Break time
To keep things bite-sized, I’m going to continue the second half of our journey in the next blog post!
If you have managed to finish the first four months, you have come a long way and you are just a few steps away from your dream job! Hang in there and keep the momentum going!
If you have yet started,
What are you waiting for? Grab yourself a cup of coffee, sit back and kickstart your learning journey TODAY!
Ciao for now!