Software Engineering Roadmap from Beginner to Advanced (for college students)

Software Engineering Roadmap - Comprehensive Guides

This article will cover the entire roadmap that you need to follow to get from a beginner level in programming/software development to being an expert in it.


Expected Outcome


Expectations

These three things are most important to do well in any field:

This roadmap will help you provide the right direction but you need to put in hard work consistently to achieve what you want to.

Assumption: Avg. 2.4 hours/day (2 hrs/day on weekdays; 3.5 hrs/day on weekends)

Total Commitment:

We will try to become good at everything within 1 year with a consistent effort of around 2.5 hours/day. After that, we will try to become experts in at least one field. If you want, you can adjust the daily time commitment based on your preference.

If you follow this well then irrespective of your college and your branch, you will be able to get a job in any company that you want.


Foundations (22 weeks; 366 hours)

Learn to code (6 weeks; 100 hours)

Learn to code in any language of your choice with a strong focus on foundations. You should aim to become extremely comfortable in coding. If you’re told the high-level logic, you should be able to code it without much thinking.

A good practice while learning to code is to think about everything logically rather than in terms of code.

Suggested roadmap

We highly recommend

learning C and C++Click for notes and Cheatsheets
followed by learning about object-orientation and then transitioning to Java. Starting with C will help cover all major programming concepts. It will be very easy to move to any high-level language (like C++, Java, Python(Used in Data Science), Javascript, etc) quite easily if you know C. Though you can directly learn Java or any other high-level language as well if you want to.

Learn programming concepts through C (4 weeks; 70 hours)

Learn different programming concepts like input, output, variables and data types, operators, decision making, loops, arrays, strings, and functions.

While learning the language, write a lot of code for whatever you are learning to retain the syntax and the various concepts. Solve a good number of problems where you can use these concepts. This will help you get a hold of the syntax.

You can enroll in our 'Learn to Code in C/C++' program for a hands-on learning experience.

Learn about object-orientation (3 days; 6 hours)

This will require you to code in C++ (which is just C with object-orientation). Learn about classes and objects (including constructor), encapsulation (including public and private access specifiers, this pointer and getters and setters), and the static keyword. You do not need to learn any other OOP concept at this stage.

Transition to Java (12 days; 24 hours)

Once you know the common programming concepts and have an idea about classes and objects, you can learn Java pretty easily. Learn exception handling as well.

You do not need to learn multithreading or any other advanced concepts at this stage. You just need to

learn to write code in Java.Click for notes and Cheatsheet

Convert your previously created solutions from C/C++ to Java. This will help you get a hold of Java syntax.

Become a power computer user (3 weeks; 50 hours)

Google is your friend. Learn how to get answers (keep improving forever)

One of the most important skills that you need to have. Try to become a

power google userUse Google for Your Development
. Most of the issues that you face will not be new or unique. Your friend Google already knows how to fix it.

Whenever you are learning something and have a doubt, Google for the specific doubt/error. Do not search for anything that is very broad. Try to get to the specifics.

Learn regular expression (4 days; 10 hours)

This is an extremely useful skill that you should have at your fingertips. Learn the basics of regular expression (language-agnostic). Practice the learned concepts in Java (or any language that you know).

Learn the basics of command-line (2 weeks; 35 hours)

Use Linux/Mac: If you have a Windows Laptop, install Linux. If you have a Macbook then you are good to go. Start using the terminal.

Things to learn:

Learn how to use (and exit from) vim. :p

Make sure to practice using these regularly after learning.

Learn about VCS, Git, and GitHub (2 days; 5 hours)

Learn the basics of Git and GitHub. Create a repository on GitHub and upload your codes from the 'Learn to Code' section to that repository using the terminal.

Internet 101 (1 week; 16 hours)

Learn how the internet works. Learn about related concepts like HTTP, Browser, DNS, Domain Name, Hosting, Client-Server Model, HTTPS. Visualize these concepts through the terminal using commands like ping, whois, dig, wget, curl.

Frontend Development 101 (9 weeks; 150 hours)

Learn to create basic frontend-only webpages using HTML, CSS, JS. Learn-by-doing and build multiple projects using the learned concepts.

Suggested roadmap

Learn to code in JavaScript (1.5 weeks; 25 hours)

Learn programming concepts through JS.Click for Notes
If you already know another language, you just need to learn JS syntax. Solve the problems that you solved in the 'Learn to Code' section using JS. Learn error handling as well. No need to learn any other concept/syntax at this stage.

Build a basic website using only HTML (2 weeks; 35 hours)

Learn about HTML Click for Notes and Cheatsheet
which is the building block of a website.

Things to learn and use:

Build a few small webpages. These can be pretty basic and should use only HTML. Try to create at least 5 webpages using a combination of the abovementioned things.

Design websites using CSS (1.5-2 weeks; 30 hours)

Learn how to add CSS to websites. Click for Notes
This will help you design your websites and make them beautiful.

Things to learn and use:

Start by learning how to modify CSS properties directly in the browser. Then start styling your webpages (built while learning HTML) with inline styling. After that, migrate a few styles by using classes. Finally, move all the CSS to a separate CSS file

Once you have learned how to do these things, properly design all the webpages that you previously created using only HTML.

Add interactivity and logic through JavaScript (3.5 weeks; 60 hours)

Learn how to add JS to webpages to bring interactivity and logic to your website.

Things to learn and use:

Add interactivity and logic to webpages that you created using HTML and CSS.

Start building better projects after learning HTML, CSS, JS

Learn Object-Oriented Programming (3 weeks; 50 hours)

Learn Object-Oriented Programming concepts (Encapsulation, Inheritance, Polymorphism, Abstraction, and Composition) using Java.

Once you have learned OOP and created a few implementations, learn Design Principles to make your code designs better. Design Principles: DRY, KISS, YAGNI, SOLID, Separation of Concern.

After this, solve a few design problems using these concepts. Try to write structured and well-designed solutions.


Intermediate (22 weeks; 368 hours)

Backend Development 101 (5 weeks; 84 hours)

Learn about DBMS and SQL (2 weeks; 34 hours)

Learn the basics of DBMS and relational databases. Become a power user of SQL with some practice.

Build RESTful web services (3 weeks; 50 hours)

Start with basics of the language: how to add dependencies/external libraries. Then learn about the basics of APIs, JSON, REST including HTTP methods.

Once you know the concepts, start building RESTful web services using Spring Boot. You can learn more concepts as and when required.

Learn how to connect to the filesystem. Learn how to connect to the database.

Create multiple web services and connect to existing frontend projects or create basic frontend projects to make your web services demoeable.

Become an expert in Data Structures & Algorithms (17 weeks; 284 hours)

Data Structures & Algorithms (DSA) Click for DSA Videos
is one of the most foundational topics in Computer Science and is the most important topic for interviews. Job interviews require you to solve problems in the best possible manner by applying your DSA knowledge. For interview prep, the number of problems you solve does not matter a lot. Being a good problem-solver matter.

There are many topics in DSA. Implement everything covered in these topics and in parallel, try to solve a few questions related to the topics that you are learning. If you understand DSA well, you can easily become an expert with some practice. You should start by learning how to calculate the time and space complexity of a solution. Many people avoid this step and face difficulty in optimizing their solutions.

Topics to learn and practice:


Practice and Build Expertise (at least until getting a job)

You must continue doing the following until your interviews and potentially after that as well if you like doing it.

This will help you:

DSA Interview Preparation [Very Important]

Once you have a good understanding of DSA, regularly solve problems on LeetCode or InterviewBit. Try to do this regularly until you get a job.

You may start with a low frequency (7 hours/week). Increase the frequency as you get closer to interviews (30+ hours/week) depending on your comfort and preparation.

You should aim to master applying DSA concepts to almost any medium to hard problems on the above platforms.

Build side-projects

Peer-to-peer mock interviews

Do peer-to-peer mock interviews with your friends or with other job-seekers on Pramp. Start by doing a mock interview every 2 months, increase the frequency to more than once a week closer to your interviews.

Build expertise

If you do all the things well mentioned till now, you can get a job/internship quite comfortably. But why stop at this when we can be an expert in one or more fields. Everything that we do beyond this will help us become sought-after engineers in the long term. You can read about how to build expertise in the next part.

If you are at this stage, you should create a resume following the best practices.


Project - Free Education
Click Here to know about skills need for this project