Becoming a Competitive Programming Warrior

Aarnav Jindal
5 min readMar 28, 2019

--

Most of the people in my class, including me, picked Computer Science as their major in college but knew nothing more than it has to do something with computers. Yeah 🤓. So, I found the best coding institute near me and registered for the C++ course asap.

One month into the course, I hadn’t even figured out the basics of recursion yet !!, we had a practice competition with the dreaded leaderboard displayed on the jumbo screen. Despite not being visible on the leaderboard, the environment was full of zeal and excitement and got me thrilled about competitive programming.

I spent the next few months honing my skills and participating in competitions on Hackerrank. Because of the never give up attitude and lot of hard work, I got my first gold medal on Hackerrank ( Top 3 percentile) in Week of Code 34.

So for all those starting out right now, here’s how you can go from being a noob to your first Winner, Winner, Chicken Dinner.

What to do ?

  • Pick a programming language
  • Join a programming course
  • Compete on competitive coding platforms
  • Get the most out of each competition
  • Use the knowledge to get great employment opportunities

Pick a programming language

The beginners usually choose from C++, Java and Python. Here is what I learned from my experience with these languages

Python is the easiest language to start with. Comparatively lot less code to write to achieve the same result. The syntax and semantics are very easy to learn. It is very close to pseudo-code writing. Easy to transition to machine learning later where python is a preferred language.

C++ is my preferred language. The syntax and semantics are a little more complex from python. But it offers a deeper understanding of underlying logic behind programming. Since it’s close to machine code, it compiles and executes very quickly. It is preferred in the industry where speed is of the essence in the software.

Java is the least preferred language for beginners. It is the most complex of all three. The syntax and semantics are a little more complex from python. It is however widely used in the industry for software development.

Join a programming course

The course content of schools is never good enough to get you a good footing in competitions early on. There are a lot more elegant and efficient data structures to explore like graphs, trees and hashmaps. And the ability to use their combination hybrids for the best solution requires an in-depth understanding of their implementation and time complexity of various operations.

With time you’ll realize that you have a lot of algorithms which can solve the same problem quicker and with lesser memory requirements. While you will learn a lot of complex and beautiful algorithms during competitions, you need a good understanding of a few basic ones like linear and binary search, sorting, hashing etc as a backdrop to those complex ones.

Joining a course early on would help a lot with the above-mentioned problems and give you an early edge over your friends and competitors.

There are a lot of coding institutes popping up in various big cities of India. I would suggest absolute beginners go for offline courses for a disciplined study routine and ease of doubt solving. A lot of great institutes like Coding Blocks offer online courses which are a lot cheaper than offline courses. Coursera, Udemy and Udacity have a buffet of courses as well which you might be able to get for free or very cheap prices.

Compete on coding platforms

Now is the time to put your knowledge to the test. Participating in competition with thousands of experienced people from around the globe may seem like a daunting task at first. You may end up with a not so impressive rank despite all the hard work. But your attitude at this stage will be the determinant of your future success. If you can pick yourself back up and prepare to put your mettle to the test yet again, you are destined for success. Also, you should begin with easy competitions to get comfortable with the format first. Hackerrank is great to start with. You may move on to Codechef, Hackerearth and the likes after participating in two or three competitions.

Get the most out of each competition

The most important things to do after each competition

  1. Check your improvement from last time: Try your best to either improve or at least stay at same percentile on the leaderboard.
  2. See the solution to your incorrect submissions: Competitions reveal solutions at the end. Always look at the solution and try to figure out where your thought process went wrong and what new you can pick.
  3. Verify the solution of your correct submissions: Despite getting a full score in a problem, there may be a more optimized solution provided in the editorial. Learn from them.
  4. Take some time: Before jumping on to the next competition, take some time to analyze your weaknesses. Try some similar problems from geeksforgeeks and SPOJ and improve your skills.

Use the knowledge to get great employment opportunities

It’s all fun and exciting but you can also use your skills to get great career opportunities.

  • There are a lot of hiring competitions for companies including Samsung, Goldman Sachs, Visa on Hackerearth, CodeChef, CodeForces and other such platforms. Leaderboard toppers get a chance to interview with these companies for possible internship and employment opportunities.
  • You can participate in reputed competitions like ACM-ICPC, IPSC and TopCoder. A good rank in these competitions adds great value to your resume and improves your chances of getting employed into a good company.
  • Google Code Jam and Microsoft Imagine Cup give you a shot at getting an interview opportunity with the tech giants Google and Microsoft respectively, which is otherwise very difficult to get.

What followed…

Although I really enjoyed competitive programming, it didn’t fulfil me. So, I went on to work with android and web development looking for my true calling. Despite not being a central part of development, the experience of competitive programming helped me create more efficient applications which beat competing apps on the market.

Making real life softwares used by customers feels amazing and I will try to write about my experience and journey of the same soon. Till then keep geeking it out 🤓.

--

--

Aarnav Jindal

Avid programmer chasing developments in the dynamic and invigorating world of technology 🤓