“Competition is an amalgamation that reveals to us what we are capable of and how much more we can actually do than we have ever imagined”. The coding world is full of infinite possibilities. If you are truly willing to get into the depth of it, opting for competitive coding will definitely surge up your excitement and interest. That adrenaline rush when you are out of time, speedy heartbeats and eyes riveted to the ticking clock. It's no less than a roller coaster ride. There's so much more to explore about it. Let us have a glimpse at a real-world experience before you step in.
Sidhdi: “Competitive programming is like a game. The more you play the better you get at it and you keep aiming to go a level up! .”
With this notion, it can be said that competitive programming is a must try if you are a webgeek. Going by the definition, Competitive programming is a mind sport usually held over the Internet or a local network, involving participants trying to program according to provided specifications. Though the code compiles within seconds, Coders aren't made within seconds. A true competitive programmer might encounter many hurdles. Nonetheless a true coder like Sidhdi will never give in.
Sidhdi: “Absolutely nothing! I learned coding in my first year with no prior knowledge of any programming language.”
You can ace the coding game once you get all the logics right. Understanding and learning them is the best that could be done. Even with zero prior knowledge about programming, a step taken forward can give it a great kickstart.
Learning too many languages should never be the goal. Master any one programming language and develop your problem-solving skills. Logic is primary, language is secondary. Once you know all the basic algorithms you can switch to some in-built library functions provided by languages like c++, Java, Python. These help you to reduce your efforts by converting hundreds of lines of code to a simple one liner.
Start with platforms like Hackerrank, Leetcode, GeeksforGeeks, etc. Initially pick up some easy problems from each section which will boost up your confidence. Participate in contests hosted by various platforms and encourage your friends too. Watching your friends solve problems will help you stick around and will keep you motivated.
If you are unable to solve a problem, don’t just leave it. Instead of directly checking out the solution, use available hints or discuss with your friends or read the discussions related to the problem and try figuring out the solution yourself. There will always be times when you won’t score well in contests or the problems you come across won’t be easy to solve. You would feel a bit disappointed. That’s the time you need to stick around! All these things mean that you are doing well and you have climbed up the ladder by one step!
Sidhdi: "I learned coding in my Engineering first semester. It was quite intimidating initially since the course was totally new for me."
I was fortunate to get guidance from my seniors. They introduced CP for the first-time using ACM lectures and contests. These contests were a big inspiration and I saw them as an opportunity to create my identity in front of seniors and peers.
I remember seniors had made arrangements for first year students to participate in a warm up round of Insomnia. That was the first time I faced CP platform and shockingly I solved the first question within an hour. I was awarded a packet of Chikki as an appreciation!!! This was a kickstart for me and boosted my confidence.
I used to solve problems on Hackerrank daily during vacations with some of my friends. Slowly I started taking up contests on codechef. It was a bit annoying initially as unlike Hackerrank, on codechef we are unable to view the failing test cases. You need to find all the corner cases by yourself! But once you get comfortable, it’s fun competing Codechef challenges with batchmates. My peers were great influencers. They motivated me to keep growing in my CP journey.
ICPC was a thrilling experience on this journey. It’s a dream of every competitive programmer to get a chance to participate in ICPC regionals. Fortunately, I got this opportunity thrice: once in third year and twice in final year! The first regionals were not so great for us. But we learned from our mistakes and did better in the next two! My teammates helped me push my limits and never allowed me to give up. I learned many tips and tricks working with them!
I also got an opportunity to be a part of the ACM committee and event manager for Insomnia. That time I realised framing problem statements is a tougher task than solving them. You need to design questions keeping in mind all the possible solutions and all the corner cases. During this period, I also got a chance to take CP sessions for juniors. Teaching others helps you strengthen your concepts. If you aren’t able to explain a concept to someone, it means that you haven’t understood it in the first place!
Sidhdi: "If I were given a chance, I would go back to 4th sem and invest my time playing around with concepts like trees/graphs. I didn’t focus a lot on that time and ended up rushing through these concepts during interview preps. Due to this, I was not very comfortable with problems related to these topics."
Books can be of great help when one wishes to study the core concepts/ logics in a language. The following are a few books that helped me throughout my journey: