A sincere effort for 6 months is all you need.
Here is a step-by-step guide:
- First of all, you need to believe in yourself. Many people are highly demotivated because of multiple reasons - couldn’t crack JEE, couldn’t get a good GPA, ended up at a services company, and getting paid low, etc. To be able to get a high-paying job, you need to believe that you can do it, irrespective of what has happened so far in your career.
- Next, understand that such high-paying packages can only be offered by Product-based companies. Service-based companies sell your time to the clients and so, you can almost never get a high-paying package.
Now, let’s understand how these companies typically hire. Most Product-based Companies have 2 - 3 rounds of the hiring process:
- Screening Test: This is typically an online test that is based on Data Structures and Algorithms.
- First Round: Those who have done well in the screening test are called for an interview. Expect questions around Data Structures and Algorithms in a collaborative text editor. Problems could be from a range of topics including Arrays, Lists, Stacks, Queues, Trees, Graphs, Dynamic Programming, Greedy Algorithms, Divide and Conquer, Graph Algorithms, etc. The idea here is not to assess your Data Structures and Algorithms skills, but rather to evaluate how good of a problem-solver you are. Can you handle the pressure? Can you analyze the situation from multiple angles and come up with a solution? Can you think of corner cases? Can you program correctly?
- Second Round: This round is usually a discussion of your resume and the projects you’ve worked on. You may also expect a Data Structures and Algorithms problem again. If you have a past experience in some Programming Languages or frameworks, expect questions from that as well. The interviewer may pick up a project from your resume and ask questions about that and so, it is important that you should be well-versed with that.
- Third Round: This is usually an HR round where the HR tries to understand your way of working, your beliefs, values, etc. If internally the feedback of the first 2 rounds has been good, then HR may also try to convince you as to why you should join them. This round gets concluded via a salary discussion.
As you can see, at the center of the entire interview is one topic - Data Structures and Algorithms. For engineers who are relatively senior (7 - 10 years of experience), the focus is also on additional skills like team building, coaching and mentoring the team members, behavior, values, etc. But at the age of 24, most people have less than 3 years of experience and so, 90% of the focus of the interviews remains around Problem Solving, Programming, and Data Structures and Algorithms.
Here are some great resources to learn Data Structures and Algorithms:
- Kleinberg and Tardos: This, according to me, is the best book for learning DSA. Many people will recommend CLRS (Cormen). But I personally feel that CLRS goes too much into mathematics. If you want to learn DSA as a concept in general, CLRS is arguably the best book. However, if your focus is on learning enough to get a high-paying job, you are better off with Kleinberg and Tardos. The algorithms part of this book is rock solid, with a lot of interesting examples.
- Online Judges: According to me, the best Online Judge for beginners is SPOJ. Pick up the top 100 problems on SPOJ and solve them in the order of the number of people who have solved them (most number to least number). By doing this, you’d be able to cover a bunch of the concepts that I mentioned above. Once you’re through with this, head on to Codeforces and Topcoder. Codeforces has one of the best “structured” sets of problems. The UI is neat and clean and you can select problems by topic. Pick the topics where you are weak and focus on them more. It is highly recommended that you keep C++ as the programming language.
- Cracking the Coding Interview: This is the best book when it comes to interview preparation. It contains the most standard problems that are asked commonly in the interviews, with a large focus on Data Structures and Algorithms. There are many System Design Problems as well. If you can cover them, that would be a bonus because many interviewers love to ask such problems.
I’d recommend that you do #1 and #2 in parallel and #3 when you are done with #1 and #2. Basically, the book Cracking the Coding interview is a little advanced and so, you should pick it up once you have spent enough time learning the concepts and practicing the basic problems.
The last step - how do you apply?
The 2 top platforms for getting a job are AngelList and LinkedIn. Most product companies list their openings on both of these platforms. You can filter by job title, salary, work location, and a bunch of other parameters so as to apply only to those companies that suit your needs.
A few more resources:
- Aman Goel's answer to How can I have a top-end software engineer job if I am from a tier-3 engineering college?
- Aman Goel's answer to As a tier 3 engineering College computer science student what and how can I do to get a job in product-based companies like Amazon, Adobe, PayTM, etc?
- Aman Goel's answer to What can a CS student from a tier 3 engineering college do to get a 15 LPA placement?
- Aman Goel's answer to How do I compete with people who are smarter than me?
- Aman Goel's answer to How should one prepare his resume to get a job as a software engineer?
- Aman Goel's answer to Can anyone draw me a road map for machine learning?