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
Are you looking to get the maximum benefit out of your college life while preparing to be a software engineer?
This article will cover:
- Setup for maximum benefit
- Software Engineering (+ different fields)
- Mythbusters (Academics, Learning, Placements)
- Things you should do apart from coding (Bonus)
- Programming Languages to Learn (with reasons)
Laptop Setup++
Laptop Guide for Software Engineers
If you've not bought a laptop yet, buy a DOS laptop (with SSD and at least 8 GB RAM). DOS/Ubuntu laptops are generally cheaper than a Windows Laptop. It is time to stop using Windows now.
You need to start using a UNIX-based OS. If you have a Macbook then you already have a UNIX-based OS. If you have a Windows or DOS laptop, install Ubuntu.
Email Service to Use
Move to Gmail if you use any other email service. Set it up on your phone as well.
Softwares to Install
After getting the laptop setup, install the following software on your laptop:
- Google Chrome
- Sublime Text
- VSCode
- Postman
- Slack (on phone as well)
- Zoom (on phone as well)
- Discord (on phone as well)
Accounts to create
Create accounts on the following websites with your Google account/Gmail address:
Make sure to use the same (or similar) username everywhere. Prefer something professional. Cool, funky usernames might not be a good idea in the long-term.
Stay Focused, Learn and Grow
- Use apps like Forest on your phone as well as on Chrome to keep yourself focused and to avoid social media distractions.
- Install Grammarly on Chrome and do all your writing on Google Docs with Grammarly enabled. Try to learn from your mistakes and improve with time. Compounding will make you a rockstar writer.
- Subscribe to workattech's free WhatsApp newsletter to regularly receive awesome programming and interview prep resources.
- Connect with me on LinkedIn, Twitter, and Instagram.
Software Engineering
Every software that we use either through a mobile app, a website, or through a desktop application has certain components. Let's talk about them and the roles associated with those components.
Frontend Developer + Mobile Developer
What you interact with as a user is known as the frontend or the client-side application. It involves the interactivity and the look & feel of the website/app.
Most companies have separate frontend roles for different types of applications:
Backend Developer
If the website/app requires internet connectivity then it is most likely interacting with code running on the company's servers. Backend is the code/service running on the servers. This is why these services are also known as server-side applications.
This code generally transmits data between one or more databases and the clients (website/app) with a lot of processing and logic in between. Companies hire backend for this work.
Full Stack Developer/Software Development Engineer (SDE)
Many companies hire for generalist software engineer roles where you need to work on both backend and frontend. Almost all of the top product-based companies hire SDEs only.
Backend + Frontend = Full Stack. You need to be good at both backend and frontend to become a full stack developer. Generally, you can be an expert in one and novice in the other as well.
To get hired as a SDE or a backend developer, you need to focus a lot on Problem-Solving and Data Structures and Algorithms as well.
DevOps Engineer/Site Reliability Engineer (SRE)
Companies also hire DevOps Engineers or Site Reliability Engineers (SREs) who ensure that you have a smooth experience and that the servers and other systems are robust and stable.
They make sure that the backend systems is always up and running.
Other specialized roles
There are certain other specialized roles as well like ML/AI Engineer, Data Scientist, Blockchain Engineer, Game Developer, etc. These are the ones that get the most hype and in most cases with decent pay as well.
But there are not many jobs for these kinds of roles. You should not obsess about it unless you have a good backup. Pick it up only after having strong foundations.
Mythbusters
Academics
- Maintaining a decent CGPA is required (7.5+ at least. Preferred: 8+). Most companies keep a minimum GPA requirement of something between 7 and 8.
- Branch does matter. You can always learn the CS basics if you want to. It is not a big deal. Branch matters as most tech companies do not allow students from other branches during on-campus placements. Though you can always get an off-campus placement if you work hard.
Learning
- You do not need to obsess over learning multiples languages. You can always learn one when you need it. No one cares about how many languages you know.
- Doing what is hot right now will not get you the job with the highest package. Software Engineering is a fast-moving industry. What is hot right now may not be 3-4 years from now.
- Only Competitive Programming or only development might not get you an awesome job. A mix of both is required.
- Talent is not sufficient. Hard work is important as well. Hard work is also not sufficient unless put in the correct direction. Follow the right people and the right resources. Do not go behind the crowd.
- Do active learning instead of passively consuming content or you will end up in tutorial hell. Hands-on learning and Learning-by-doing is the key.
Placements
- Do not focus on "cracking" the interview. Focus on your skills and learnings. Do the right things and companies would be more than happy to hire you.
- Doing well in academics will not be sufficient for getting a good job. Most of the things that are expected of a software engineer are not taught inside the classroom in any Indian engineering college.
- Not everyone gets a high-paying job as advertised. No one gets a 1 crore job. The package that you hear is stuffed with a lot of components that one gets spread across 4-5 years.
- Do not obsess over FAANG companies. Facebook, Apple and Google hires very few freshers in/from India. Netflix does not hire freshers anywhere. Amazon hires a lot of freshers but it is mostly on-campus. It is easier to get into Amazon after college. A lot of companies in India pay more to a fresher than Amazon does.
Things you should try apart from coding
Upskill
Get out of your comfort zone. That is how you will learn. Challenge yourself all the time.
Being good in English is a huge advantage. If you are not good at it then you have 3 years to work on it. With consistent effort in the correct direction, you can do it in a few months. Use Grammarly for improvement as mentioned in the setup section.
Personality Development
- Try to be a part of at least one club/society. It might help you in your overall development.
- If possible, try to create a community based on your interest and find like-minded people to collaborate with.
- Participate in events and contests. Not for the certificates but for fun and learning.
Companies don't give a shit about certificates. - Warning: Avoid wasting most of your time in these things.
Follow your passion
- This is the best time to explore and do things you might never get a chance to do otherwise. Just make sure to keep a backup though.
- Try building a startup. After college, the opportunity cost of starting up can be very high. College is the best time to start up. It does not matter if it succeeds or fails. The learning would be enormous.
Become a learned person
- Spend time reading: books, blogs, documentation, etc. Some of the best content in the world is in written format. Supplement it with videos, podcasts and audiobooks.
- Share your learnings. Become a creator.
- Writing is a great skill. Create a blog and start writing. You can learn stuff during the process.
- Create a YouTube channel and try creating videos. This is something that you should explore. I never did this myself. I wish I did.
Programming Languages to learn
There are certain languages that we recommend you learn. You do not need to learn all of these at once. More details covered in the subsequent articles on Software Engineering Roadmap.
Do not obsess over multiple languages. You can always learn one when you need it. No one cares about how many languages you know.
Highly recommended
These are the languages that we highly suggest you learn over the next two years. If you build expertise over these you can learn any other language easily as and when required within a few days.
I do not recommend you to learn one language after another. Start with the first language. Learn the next one only when it is required. The roadmap will help you determine that.
- First Language (for concepts)
- Object-Oriented Programming Language (for backend)
- Java
- Command Line Language (for being a power terminal user)
- Bash
- Markup Language (for building websites)
- HTML
- Style Sheet Language (for styling websites)
- CSS
- Language of the web
- JavaScript
Optional
There are certain optional languages that you might learn when you want to specialize in a field or while making projects. These can be learned very easily if you know JavaScript and a strongly-typed object-oriented language like Java/C++/C#.
We recommend trying these out only when you are doing a project which requires them. You won't be able to retain the syntax unless you use it for some time.
Languages that you might learn while building projects:
- TypeScript (JS with types)
- React (JS library for building UI components)
- Python (for basic scripting and trying out ML/DS stuff)
- Kotlin (for Android)
- Swift (for iOS)
- Flutter/React Native (for cross-platform native apps)
- Go/Scala (for highly scalable systems)
Anything else not mentioned here is generally not required. You can learn any other language pretty fast on the job if required.
Now that you are ready, let's go through the second part of the software engineering roadmap. If you follow it, it will help us become an awesome software engineer.
Please reach out to me on WhatsApp at
-----
Join our discord community to have healthy discussions on programming, interviews and job search.
Further Reading:
- Get a Software Engineering Job/Internship - Ultimate Guide
- SDE I Interview Preparation: The Ultimate Guide
- How to crack interviews at product-based companies?
- Resume best practices for product-based companies
- How to get job referrals on LinkedIn?
- How to get a recruiter's attention on LinkedIn?
If you prefer video then you may want to watch this webinar where I've used this article as reference:



