How NOT to do competitive programming?

I made mistakes, now you don’t have to!

Pratik Gadhiya
Code To Express
3 min readMar 3, 2019


Who hasn’t stop growing at some point? We all hit cul-de-sac (dead-end) at one point of time. It’s just a matter of time. As a competitive programmer I stopped learning new concepts at the end of second year.

A competitive programmer can solve hundred easy problems and get nowhere, but stay busy. Or he can learn to solve ten problems and master new concept.

While easy-to-solve problem will intrigue you to solve them, they will not help you push your boundaries. Make sure you skip those problems often, unless you are competing :)

What went wrong with me?

After mastering few concepts, and winning every single offline contests, I felt at the top of the world. I felt as if I have learnt a lot. But I was missing a point — it was just another sharp curve on highway.

Adding fuel to the fire, I started pursuing other domains in the field and ignoring competitive programming (CP) as a whole. While there’s nothing wrong with that decision, I regret that I learnt no single new concept in CP after that point.

“The people who skip the hard questions are in the majority, but they are not in demand,” says Seth Godin

What if I were to repeat?

If I were to start again, I would try to push myself every week.

Ideally, I would focus on what I call concept-based learning approach: Learn concept, solve problems around it and apply the concept in competition. I would dedicate a week or two for a concept.

Concept-based learning approach to acquire skills in competitive programming

Finding the next concept to learn will be a task in itself. Here are the few ways to hunt them :

  • Tags on Codechef, Codeforces, Spoj, and such
  • Topics on Hackerrank, Codemonk
  • Syllabus of Codechef certification (CCDSAP)
  • Tags from editorial of competition problems (especially Codechef long challenge)
  • Friends applying concept-based learning approach

I am sure that there will be dozen other sources out there, do comment below :)

Retaining newly acquired knowledge is important. The most effective way to retain knowledge is to share. Share with friends what you learned, sources that helped & problems you solved.

Taking notes will benefit you in long run. Taking notes will transform you from passive learner to active learner by making you to think. Make sure you jot down points while learning new concept and solving problems.

Make the best out of these tips. Best wishes!

“Quit or be exceptional. Average is for losers.”

Related image
Found this article helpful? 📢 Let the world know by clapping as much as you can 💪 below 👇

Get your own blog published on C2E Blog

Do you want to write for CodeToExpress? We would love to have you as a technical writer. Send us an email with a link to your draft at



Pratik Gadhiya
Code To Express

💅🏼 software developer, 🍥 design enthusiast, 💭 day dreamer,💡 ideator —