Is Competitive Programming Right for Me?
Omar Yasser Morsi
Software Engineer - Opinions are my own and don't necessarily reflect the views of my employer
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:
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:
"I want to get accepted into big companies"
To get accepted into big companies, you need the following:
"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:
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
Senior CS Student | Ex-SWE Intern @Nokia | Contributor @Django
1 个月Great advice
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