Software engineers after graduating have two options to choose from – getting into a service-based company or getting into a product-based company. While both places are great for showcasing your capabilities as an engineer, product-based companies are better suited if you are looking for better pay and a better work-life balance.
Not only this, several incentives are provided in product-based companies in addition to your regular pay scale which makes it even more interesting to get up and go to work each day. It is said that when you are not loving the job you are doing, there is no point in continuing. While the job profile plays a major role in making an employee interested in his role, the role of the work environment can also not be ignored.
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.
These companies provide services to other companies. They can have their own products as well. For example – Infosys, Wipro, TCS, HCL, Cognizant etc. are some of the top IT service-based companies.
They offer services like –
• Software Development
• Maintenance
• Consulting Services
• Business Performance Management
Service-based companies provide lesser salaries than product-based companies.
As the name suggests, product-based companies are companies that have a certain product that they wish to sell in the market. For example – Facebook, Adobe, Apple, Microsoft, Google etc. are some of the best product-based companies.
Product-based companies hire selectively and take a few candidates for different roles.
Almost every employee of a service-based company who wants to make the switch to product-based companies comes across the question that, how hard is it to make the switch from service-based companies to product-based companies?
It is not easy to get there. It is not very difficult either. 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.
Although, being a worker of a service-based company, you might be at a bit of a disadvantage as most recruiters from product-based companies search for candidates who are already working in some product-based company. But if you know the right way to grab the eyes of recruiters, then it will be only a matter of execution. If you have friends in product-based companies who can refer you or have a stunning LinkedIn profile that can influence seniors, it will make the process a lot easier.
🚀 Focus on learning the right skills
Knowing exactly what skills are expected from you in an interview will help you a lot in structuring your preparation. This will also save you from spending your time on skills that are not important from a tech interview perspective.
The skills required to crack tech interviews are:
Problem-Solving skills in DSA: Given a hypothetical problem ( that may occur in real life ) how would you approach problems & solve them correctly and efficiently. This basically revolves around mastering Data structures and algorithms and using them to solve problems in the most optimal way.
Ability to architect Scalable systems: If you work at a decent company, then it’s your job to build services that are able to scale well. You have to make the decisions that can help a company reach 100 to 100 million users or just break. Therefore, companies care about this & hence, it’s an important part of their interview process.
🚀 Interview Process
• 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.
• Online Coding Round/Phone Screen
Questions related to basic aptitude, technical subjects, and coding questions. This round might not be included in the interview process of experienced professionals. This round is to test whether you are the right fit for the role or not.
Some companies prefer taking a machine coding round, some prefer taking around which involves low-level system design whereas some companies provide take-home assignments to the candidates.
• Technical Interviews 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. Also Be prepared to the questions related to data structures and algorithms, core technical subjects, previous experience, and side projects.
• System Design Round 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.
• 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
Now that you are aware of what you have to prepare for, let’s have a look at how you have to prepare. This is an important section for the topic – how to switch from a service-based company to a product-based company.
Learn to Code + Practice online coding
To enhance your coding skills, you need to select one language (C++ / Java preferable) and ensure you are grasping the fundamentals of the language properly and understand data structures and algorithms in that particular language. 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)
They are adopted by product-based companies to enhance coding efficiency and modularity. 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 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.
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.
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. You can checkout the resume guildlines blog here: Resume Building Guide: For Coding Interviews
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.
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. For more tips about how to nail the interview you can read here: Tips for Coding Interview
Switch is a one-time process knowing that your career is a 40+ year journey. Investing the time & resources to switching is a one-time process, it’s OK to invest in that.
Good luck and happy learning!