Disclaimer: This article was written few years ago and may no longer be relevant as software engineering has changed a lot in the last few years. This is what may be more relevant now: Future of Software Engineering - Gaurav Chandak
Software Engineering Roadmap - Comprehensive Guides
Most software engineers in India join a service-based company after graduation. While there is nothing wrong with working in a service-based company, many want to switch to product-based companies mostly for the following reasons:
- Extremely better pay
- Better work
- More ownership
Let's take the example of the difference in salary at service-based companies vs product-based companies. Freshers at service-based companies are mostly paid 3-5L per year whereas most product-based companies easily pay double of that. The big tech product-based companies and top startups pay 4-5 times of that. It is obvious for most engineers to look up to joining a product-based company.
But it is not easy to get there. It is not very difficult as well. It requires a different kind of preparation and a lot of hard work. The right amount of hard work in the right direction can make it easy to achieve that if done consistently.
Let's look at the different interview rounds and a roadmap on how to prepare for these rounds to switch from a service-based company to a product-based company.
This document is for self-preparation. Check out SDE Bootcamp if you want to:
- fast-track your preparation through hands-on learning, and,
- have engineers from top product-based companies teach and mentor you
Interview Stages for SDE-1 roles at product-based companies
Resume Shortlisting
Most job openings receive 100s to 1000s of applications. It is not possible for a company to interview everyone who applies. To reduce the number of interviews, Recruiters and Hiring Managers shortlist only those resumes which stand out or match the most to the job roles.
Most applicants get rejected at this stage.
If you have done decent projects, have created a good resume, and applied for the correct role, you should be able to get through.
Exploratory Call
This stage generally involves talking to a recruiter regarding past experience and current expectations. If you have done good development work either on your job or through self-projects and have done sufficient research about the company and the roles before the call, this round should be pretty easy to clear.
Machine Coding Round/LLD/Take-Home Assignment
Companies like Uber, Flipkart, Swiggy, Udaan, etc have started hiring through the machine coding round as the first round. This round checks your coding and low-level design skills. It requires you to design and code a solution to a generic problem using best coding practices especially object-oriented programming. Most candidates get eliminated in this round.
Problem-Solving, Data Structures and Algorithms Round/Online Coding Round
Most product-based companies hire primarily through a data structure and algorithm interview. The basic idea of this interview is to test your problem-solving skills through your ability to figure out the right data structures and algorithms to solve logical problems. It is highly unlikely to get into a product-based company without being decent at DSA.
Hiring Manager/Bar Raiser/HR/Behavioral Round
This is usually the final round in most cases. You are judged on a mix of technical and non-technical competencies. Good projects and articulating your experience the right way may help you clear this round easily. Make sure to do sufficient research about the role before this round. Apart from the in-depth discussion on your projects, you might be asked puzzles, basic DSA questions, SQL queries, basic OOP, and other theoretical concepts
How to prepare for product-based companies?
Learn to Code + Practice online coding
Learn to code with a strong focus on foundations. Suggested Languages: C++ or Java. You should aim to get so comfortable in coding that if you’re told the high-level solution, you should be able to code it without much thinking.
Online coding is very different from how we are generally used to code in college classes or on the job. Practice a few basic questions on an online coding platform to build comfort.
Learn Object-Oriented Programming (OOP)
OOP is a very important programming paradigm that is generally used in almost all product-based companies. It is also tested in the machine coding and low-level design rounds. Having a good understanding of OOP concepts and some hands-on practice can help you get prepared.
Learn DSA Foundations
DSA Foundations is one of the most important topics in Data Structures and Algorithms.
You should learn how to calculate the time and space complexity of a solution. Many people avoid this step and face difficulty in optimizing their solutions.
Also, learn how to think and code recursively as recursion is a concept used in many algorithms and with almost all major data structures. Divide and Conquer is the next topic that you should learn next after recursion. Practice questions that require you to use recursion and divide and conquer.
Learn Basic DSA + Practice
Spend most of the time learning and practicing DSA.
Try to learn concepts and build comfort in these topics by practicing questions related to:
- Array, Linked List, Stack, Queue, Binary Tree
- Searching, Sorting, Hashing, 2 pointers
Do not memorize stuff. Do not read solutions to increase coverage. Build foundations and try to solve problems yourself.
Learn Development + Build Projects
If you are not already developing software in your current job then learn to develop software. That's what you are going to do on the job as well. Good projects also help your resume get shortlisted and gives you an edge in Hiring Manager interviews.
Try to build good projects that help you learn as well as help your resume stand-out. You do not want to build projects that are there on everyone's resume.
You can do fullstack web development or mobile development. I suggest doing fullstack development in the interest of time and also because most of the open roles are for fullstack developers.
Build your resume and LinkedIn profile the right way
Once you've learned and practiced basic DSA and made a few development projects, you can start applying to startups and mid-sized companies. To get calls from these companies make sure that your resume and LinkedIn is built the right way.
Learn Intermediate DSA + Practice
For the top tech companies, you need to be good at intermediate DSA as well.
Intermediate DSA topics:
- Greedy, Backtracking
- Strings, Tries & Bit Manipulation
- Set, Map, Heap
- Dynamic Programming
- Graph
These topics are considerably difficult. If you do it well, you can easily get into one of the top tech companies.
Learn Theory (DBMS, OS, Networks)
Learn other core CS topics like DBMS, OS and Networks. These are essential topics and may be asked in any interview. You would not want to get rejected in an interview because of that. Learn Intermediate SQL as well while learning DBMS.
Practice Machine Coding and SQL
Once you are done with DSA, OOP, core CS and projects, start preparing for other interview types. Practice 5-7 Machine Coding Questions in a timed-manner to easily clear the machine coding rounds at Uber, Flipkart, Swiggy, Udaan, etc.
Also, get your hands dirty with SQL. Hiring Managers or other interviewers might ask you to write some SQL queries.
Interview Practice (timed tests, whiteboard/paper, and mock interviews)
When you are almost about to start giving interviews, it is timed to prepare in a setting that mimics an actual interview. There are 3 things that you need to do for the same:
- Timed tests: You will get 30-45 minutes for a question during the interview. It is better to practice a good number of questions through timed tests to get used to solving problems fast.
- Code on whiteboard/paper: During onsite interviews, in most cases, you won't get access to a computer. You will have to write code on a whiteboard or a paper. Coding on it is very different from coding on an IDE. Practice on either of the two for a couple of days.
- Peer-to-peer mock interviews: Mock interviews can help you find and fix all the common mistakes before going for an actual interview, You can give peer-to-peer mock interviews on Pramp or InterviewBit or you can find a helpful friend.
Start Applying (Referrals, Job Portals, Email, etc)
Start applying in parallel with the above step. Look for referrals on LinkedIn or through your connections. You can also look for jobs on popular job portals or company career pages. Another effective method is to find the email addresses of recruiters (in the case of big companies) and founders (in the case of startups) and sending them a cold email with your application.
You can read more about getting off-campus placements here: How to apply for off-campus placements (jobs/internships)?
This document is for self-preparation. Check out SDE Bootcamp if you want to:
- fast-track your learning through hands-on learning, and,
- have engineers from top product-based companies teach and mentor you
Please reach out to me on WhatsApp at
If you prefer video then you may want to watch this webinar where I've used this article as reference:



