There is a lot of tech that is taught in college, most of which isn’t used by the tech industry any more. In my experience and from what I have heard from colleagues as well, what is used is rarely taught.

If you are on the quest to work for the top tech companies and give you career a head start, what I am about to share might be the holy grail for you.

There is no short solution, practice every day.

I have been coding for the past 7+ years and have worked on ~6 different programming languages, 15+ frameworks, a couple of Cloud platforms, have been recently given Moderator status on Stackoverflow with 10,000+ points and am among the top 2100 on Stackoverflow for this year. I have interviewed for Amazon, Google and Microsoft and am familiar with their interview process.

Let's talk about why you need a head start now rather than trying to work yourself up the ladder when you start your first job. Let's assume you’ve completed your degree from a not-so-high ranked college, have basic knowledge about coding but do not code regularly and are not sure about your knowledge on algorithms and data structures.

Say you get a job from the first few rounds of Campus placements, that is, if you are lucky. The initial salary that you would be offered would be in the range of ~2-3 Lakhs per annum?

Assume you put as much effort as you can, with project deadlines, first job challenges, and maybe office politics put aside. You would not have much time to learn new concepts trying to fit into this new life of yours.

And with all the effort how much increment would this ensure? Judging by industry standards the maximum would be around 20-30% and that’s if you perform exceptionally well. Trust me, with your manager who would act as if your salary hike would be deducted from his own salary, you won’t even get anything closer to this. Now compare this with what beginners at top companies are being offered, you would spend most of your life trying to close this wage gap.

Where are you headed?

I'll speak about a few of these resources and why one needs to begin with them in college itself.

GitHub

GitHub is a must right from the first day of college if you are pursuing a career in Programming. It doesn't matter what you commit, the habit of committing on a regular basis is a must. Your code quality will get better eventually as you write more code.

Getting started is tougher, diving in the concepts will get easier eventually.

You can start with uploading your college code assignments on GitHub, which would also mean that you do not have to remove separate time to do this. Next, you could pick a programming language, I would suggest picking one which has a small learning curve like Python/Node js because it is easier to get started with. Once you get the knack of it, concepts are pretty much the same across languages and it is easier to jump ship(s). As you learn the language, practice the code and commit it to GitHub.

Suggested: 9Automate the boring stuff - Python (Book)

StackOverflow (SO)

Most of the experienced devs have faced this scenario where the first question that you have asked was downvoted enough for you to call it quits on StackOverflow. I will admit, getting started on SO is as easy as the helicopter mission on GTA.

Because a good engineer knows what code goes where.

You need to remember this before posting a question on SO, Google your problem. Chances are someone has already faced it and someone has already posted a solution for it. Before posting, follow people on StackOverflow to see the questions they’ve answered. Always post what you have tried to solve and do not ask questions which can be opinionated.

What am I without Stackoverflow!

MIT's Introduction to Algorithms

This is one of the popular courses for understanding algorithms. Some may find it difficult to understand and keep up with, hence I would ask you to pick this up after you are comfortable with coding in a given programming language.

Algorithms and Data structure knowledge is a must. Not only do top companies use algorithms and data structures knowledge to filter out candidates but algorithm knowledge also helps you make better decisions while solving everyday problems.
Let’s say you are building a meme creating web app and there are not many concurrent users that your server can handle, the decision to use a queue to process these requests without dropouts will come from algorithm knowledge.

MIT's Introduction to Algorithms

Coding platforms:

https://leetcode.com/

https://www.hackerrank.com/

These are two suggested online coding practice and evaluation platforms recommended by top companies to get started with during the interview preparation phase.

Understanding someone else's code or for that matter your own code: Along with writing and practising code, another part of your learning process should be understanding code written by other people. Good coders write code with better code readability. Debugging and understanding their code will increase your coding knowledge and will expose you to the best practices that you need to follow.

Knowledge of debugging tools is another must. It will allow you to understand the process flow and what part of code does what with relative ease. There will be times when you will not be able to understand a month+ old code written by you 😅 Trust me been there, done that.

How to get away with a murder.

All this being said and done, just reading this article won’t get you there. You will need to follow this, make it a habit and also require facilitators who would help you get there.

We at SOAL will help you with our meta-learning platform where you will actually learn how to learn and make this your habit. It is just not a sample project that you will be able to run at the end of the day, but our aim is to help you understand the process, make you self-sufficient to take development decisions, familiarize you with processes and tools used by Tech companies and help you build your tech profile overall.