I want to be an elite programmer (enough to get a job at Google). I have NO ONE to guide me! I have described my present situation in the details. How do I proceed while learning to code?

Shiva Mahajan, Amazon , Google 2015

Hi there. I think i can help you in this case.
This is a 5 step formula that i followed and i tell everyone this only whenever someone asks me.
Please note that this asnwer assumes that you want start from scratch.

Step 1: Do CS50. There is a catch though. Do it in less than a month. All standard edition Psets and lectures (and shorts if you require) in less than a month.
Course link : Find Courses

Step 2: Do algorithms course on coursera by Tim Roughgarden offered by stanford university. Do this according to course’s pace. Design and analysis of Algorithms : part 1.
Course link: Algorithms: Design and Analysis, Part 1

Step 3: Time to enter the world of competitive coding. Start with codechef and spoj. Do atleast 150-175 easy problems which require basic logic within 2-3 months.
Further steps include step 3 running in parallel. You have to continue practicing on codechef and spoj but slowly raising the level of questions to graphs, DP, segment trees, etc.
Codechef : Programming Competition,Programming Contest,Online Computer Programming
Spoj : Sphere Online Judge (SPOJ)
Problems categories: A2 Online Judge

Step 4: Do algorithms course which is the sequel of course i listed in step 2. Design and analysis of algorithms: part 2. Do it according to course’s pace. Remember step 3 runs in parallel. By the time this course ends you should be somewhere around 300 problems old. ( combined on codechef and spoj)

Course link: Algorithms: Design and Analysis, Part 2

Step 5: Start doing practice and contests on Codeforces and topcoder. Try to get in division 1 and more importantly stay there. This step is really important.

Also take a look at this just somewhere in the middle of step 3.

IMPORTANT: Data Structures and Algorithms


Languages I know: C, C++, Python
Question: How to learn them?
Ans: C is taught in almost every college. To learn c++ and other languages there is a very simple technique. The questions that you solve on all these online judges try to do them in the languages yo want to learn.

Question 2: How to do the above tasks if you don’t already know the language?
Ans: Google something like “How to ______ in python/c++/java/etc”
and if possible look for Stack Overflow links. The ____ can be filled with the following:

  • Take user input
  • Declare an array
  • Sort elements
  • Make a hash table or ma
  • print output.
  • And whatever you need.

I learnt Python like this and bits of java too. This approach works because once you are done with C language and Harvard CS50 you will know all the concepts and you will be at a stage where you will just need to get used to with the syntax of the language and that can be done while practicing on online judges.

This is what i did. I hope this helps you. I don’t have a job at google but i have an internship there for the summers of 2015 as I am still in my 3rd year.

Good luck and do your best.


EDIT 1: Added some details to the answer.

EDIT 2:There is one more thing i want to add. while following these steps, somewhere in the  middle you will fall in love with all of this and then you won’t have to look for answers on how to proceed. You will move forward on your own and all the good things which you desire will happen on their own. Trust me on that.

EDIT 3: For those wondering how to apply to Google.
Shiva Mahajan’s answer to How do I apply for Google internship in India if not from (IIT or NIT). I never see any info about internship in india on google careers page most of the time?


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s