Is Competitive Programming Right for Me?

I got this question a couple of times after my last post about Whether AI will end Competitive Programming.

Before sharing my opinion, let me clarify how I'm using the following terms in this article as I will be using them a lot:

  • The word “differentiator” in this article as I will be using it a couple of times. I believe that while you are in university or have recently graduated, it’s very important to aim at having something that differentiates you and your resume as a graduate. This can be a high rank at your university, solid internships, noteworthy open-source contributions, impressive personal projects you’ve worked on, achievements in competitions (It doesn’t have to be competitive programming achievements. There are many types of competitions, e.g. Cybersecurity, Machine Learning, etc..), noteworthy research publications, or leadership in community contributions. There are many forms of differentiators, and each may appeal to particular employers. You don’t necessarily need to decide on your path right away after starting university, but keep this idea in mind as you explore different options until you find something you enjoy and excel at.
  • Getting into Competitive Programming: By this, I mean practicing on platforms like Codeforces and tackling ICPC-style problems with the goal of achieving high ranks in online and onsite competitions.


Regarding whether Competitive Programming is right for you or not, my advice to you will depend on your answer to this question: "Why do you want to get into Competitive Programming?"

"I got graduated and I want to get into one of the big companies"

My general advice in this case is to not go for Competitive Programming now unless your case is special when it comes to how long you are willing to invest, your responsibilities, and how much you love competitive programming. To achieve something on this road, you’d need a long-term investment (2–4 years). Most of the engineers in these big companies haven't gone down this path to get accepted. Also, although the problems you encounter while practising competitive programming are similar to those in problem-solving interviews, their format is still a bit different, and the interview environment is not the same as the competition environment. Moreover, interviewers assess candidates on many aspects beyond simply whether you solved the problem (Check the article Google Coding Interviews | What are they looking for and why?). My advice instead would be to do the following:

  • Practice on websites that offer interview questions asked by these big companies.
  • Work on building your differentiator (see what I mean by differentiator above).
  • Reach out to people working in these companies to get feedback on your resume and, potentially, referrals.

"I want to get accepted into big companies"

To get accepted into big companies, you need the following:

  • To pass the resume screening phase: In this phase, having a differentiator helps a lot. As mentioned above, that differentiator doesn’t need to be competitive programming achievements. A referral also helps in this phase.
  • To pass the interviews: For this phase, spending a lot of time on competitive programming is overkill. Most people who work in these big companies weren’t into competitive programming—they practiced data structures and algorithmic problems tailored for interviews instead.


"I want to enhance my problem-solving skills", "I want to enhance my thinking abilities", or "I want to quickly map ideas into code".

Go for it, but don’t spend most of your time on it, because you want to invest time in building your differentiator. The pressure of timed contests and constrained solutions helps develop the ability to code quickly and efficiently under a bit of stress.


"I want to enhance my general coding skills"

It’s fine to spend some time on competitive programming for that purpose, but I recommend that you practice by following coding tutorials or by building your own mock projects while learning a new programming language or framework. This approach will teach you more real-life coding skills.


"I want to enhance my knowledge of Algorithms and Data Structures"

Go for it, but don’t spend all your time on it. Also, ask yourself first why you want to enhance your knowledge of Algorithms & Data Structures do this first, and based on the answer, check which bucket from this post you fall into.


"I enjoy competing and solving such problems"

Go for it as a hobby, but don’t spend all your time on it because you’d want to invest more time in developing your differentiator.


"I enjoy it, I can progress quickly in it, and I want to achieve high ranks. I want it to be my differentiator"

If you want this to be your differentiator when you graduate, then run a test. Spend a couple of months focused on it with a solid strategy. If you find that you are progressing and you still want to go down this path, then you need to keep the following in mind:

  • You need to accept the risk. There’s no roadmap that will guarantee you achieve high ranks in online or onsite competitions.
  • Many factors, other than your competency, may come into play in such competitions. Your university and your team are two main factors.
  • You need a backup plan. For example, by finding a source of practical experience before graduating, just in case you don’t achieve as much as you hoped. Look for good internships or part-time jobs during your last one or two years.


If you still feel lost or your answer to the question "Why do you want to get into Competitive Programming?" is different, write a comment or reach out to me and I will update the article.

Also, feel free to ask me questions @ https://oyaraouf.com/ask

Ahmed Nassar

Senior CS Student | Ex-SWE Intern @Nokia | Contributor @Django

1 个月

Great advice

Omar Morsy

Software Engineer @Microsoft | 3x ACPC Finalist

1 个月

Very detailed answer and completely agree. And for people that still in uni they can still participate in the competitions for fun

要查看或添加评论,请登录

Omar Yasser Morsi的更多文章

  • Great Opportunity for Escaping Mind Prisons

    Great Opportunity for Escaping Mind Prisons

    My dear colleagues from all over the world, I think what's currently going on in the world is a prime opportunity for…

  • Your First Working Year

    Your First Working Year

    This post covers a couple of things to consider when you are ready to work after graduating. Disclaimer: I have been…

    5 条评论
  • Ask Explicitly for Criticism

    Ask Explicitly for Criticism

    Positive feedback is nice and important but I find criticism or constructive feedback is even more important. Criticism…

  • Google Coding Interviews | What are they looking for and why?

    Google Coding Interviews | What are they looking for and why?

    What is it about? In this article, I will discuss what I think Google interviewers are looking for and why I think they…

    1 条评论
  • Resume Tips

    Resume Tips

    Note: I am not an expert in building resumes but I've seen a lot of them. I reviewed many resumes and I found myself…

    1 条评论
  • Competitive Programming | Resources, Technique & Tips

    Competitive Programming | Resources, Technique & Tips

    Note that it has been a while since I was heavily involved in practicing, so the resources I'll mention might have been…

    5 条评论