Here are some reasons I believe people do CP:
- Enjoyment
- Preparation for job (coding) interviews
- Preparation for Competitions
CP seems to be a low priority activity. For example, school and job responsibilities usually take higher priority. It’s not possible (realistically) to make a living from CP. Thus, people taking part in CP usually have good reasons.
The nihilist viewpoint says CP is just solving contrived made-up problems. Who cares? There’s little/no benefit to society. Unlike CP, programming for a job creates services (value) for people. Unlike CP, Computer Science research pushes the boundaries of knowledge of the field (value). Why spend time in an activity which doesn’t product relative value? Again, it seems the people doing CP must have good reasons.
I’m wondering what people’s reasons are for doing CP.
Haha you don’t think it’s fun?
I do
Case closed
Wow, It is my first time seeing a LGM comment in a CF post :v
I like the short bursts of intense concentration. Normally when you're on a job or studying for courses, time pressure is not so acute because deadlines can be days or weeks ahead. On the other hand, the coding competitions have the speed and endurance dimension attached to them which makes them attractive. I like to think of them as cardio exercises such as jogging: you practice a couple of times a week and it already sharpens your thought process and trains your concentration grit.
The content (value) of the problems is not so important (as long as it is interesting and new); it's more about the state and regime of thinking they require you to put yourself into to find the solution.
I started doing CP when I was a first year student, at first I wanted to get better at programming, next I started to prepare for ACM contests, this is my last year in ACM but I am now just doing it for fun :D
Reading such things has always irritated me. To me, competitive programming first and foremost is a hobby. When you talk about football or disc golf or stamp collecting or whatever, such questions don't make sense — they are hobbies, they don't need to have some benefit to society. But because CP involves programming, a famously useful activity, you somehow need to justify it now? You don't "choose" between competitive programming and programming as a job, because they obviously fill different roles in your life.
And yes, my primary reason is that it's fun. There are many things I like about competitive programming. Competitive programming problems are ideally built around some interesting observations that lead to beautiful solutions. It is incredibly satisfying to come up with a difficult observation on your own. Contrast this to real life problems — even if they are very hard, the solution is kinda mundane and usually non-exciting.
s/CP/football/g
*
%s/CP/football/g
It's a fun way to get me into a good university. The other option is to get good grades and good scores but that's boring and much harder :/
It's still fun enough on its own for me to continue doing it now.
Again, it seems the people doing CP must have good reasons.
Honestly, no matter how useless an activity, the people doing it will have their own set of reasons to do it. Even if you replace CP with sleeping, there are people who enjoy sleeping marathons too.
Comparing this to relationships, when everyone else says your bf/gf is bad (and he/she really is), one may still insist that he/she is good because love is blind.
Well, to each his own I guess.
CP gave me a second chance...
Solve GP of Zhejiang. It kinda does both
Kinda like a sport, which means it keeps my brain and my hands working quite consistently, especially during the lazy period when I do not have anything to do.
I take CP as my interest, just because I love it.
I'm not very good at it though, but it doesn't matter. I just enjoy thinking seriously, as well as getting a strong feeling of satisfaction when successfully solve the problems. (awa)
Same here.
as a Tunisian, I can definitely relate to this.
There’s little/no benefit to society.
Having sex with condoms gives little/no benefit to society. People do it all the time, though.
Well, it eventually reduces one's carbon footprint, so there is impact in the end.
So does suicide, yet no environmentalists take that option.
It's just a matter of time before it becomes a suicide cult.
but Thanos took that option and he became a villan
I am doing CP, because it's super fun and because I love problem-solving! Well, don't say that it's useless because it's directly or indirectly very useful and it has let me develop a lot of skills, including:
*programming skills: became better at testing and finding edge cases, writing bug-free code, plus its difficulty is much higher than some software development fields (LOL, web development (front-end and back-end) is much easier for me compared to CP. Even stuff like DBs or Design Patterns or even some deep learning look much easier on my opinion!)
*problem solving skills: CP has enabled me to improve a lot my problem solving skills. Also, because of it, I have learned easier discrete math (combinatorics, probabilities, etc.), induction (which has a lot of applications in a lot of areas) and even I saw improvements in my math competition skills!
Basically, because I like doing CP, I think the time that I engaged with it has helped me to think more clearly, better and even to have more endurance than before. I remember, when I was younger, by the time I tried to think let's say a bit more than 1 or 2 hours, I felt tired and I stopped. But, now, I can think math for much more (say about 5 hours)! Big, big plus!
Lastly, you said that CP is useless for humanity. In the same logic, we could argue that the entire entertainment industry (TV, movies, all the sports around, etc.) do not help to advance society at all (for the same or similar reasons you posted). But I doubt that people who work on those feel like that at all. So, please, don't worry about it! Just have fun and try to use your skills to help people do stuff!
To become red.
Yeah I know that sounds unrealistic af but everybody has dreams lol (at the moment I'm doing interview preparation on a separate platform) I hated it in the beginning when my university forced us to take part in competitions, but since I found codeforces I dont hate it anymore. The problems here are good :)
Just wondering, if there exists universities which forces students to take part in algorithmic contest rather than just coursework.I would be lucky to get into those universities. :D
Becoming red: Unrealistic — maybe (idk); possible — yes. Most people will tell you this because they believe in growth mindset.
To be honest, I feel like I can become red. It's not a matter of how its a matter of when. I used the term unrealistic because many people think that it's too high of a goal for a newbie
I know a former grey guy who has become orange personally. Your goal is tractable. You got this.
I don't have a life :(
Good question. I don't know why I do CP, I'm confused now
Dang, scaring people away from CP was a risk of this blog. It wasn't my intention. But, I think it's important to have reasons for doing what you do. And people have commented lots of great reasons for doing CP here.
free university scholarships + fun
It's the most fun form of programming out there with the perfect blend of joy and depression.
It's funny, I took a turn when reaching university and learning Comp. Science despite I used to be skilled in Chemistry instead. The first thing caught my mind when reaching uni was CP.
Trained a lot in the last few years, reaching this, having some decent part-time work, and now suddenly CP feels void to me. I don't really have the heart for it as a competitor any more.
However, it gave me quite some fundamental skills to get into this industry, and I'll credit it for that.
Haha, I am just the opposite! I was quite good at math and CP as a kid, but then decided to challenge myself and entered a chemistry program at uni. And now I am a professional chemist that does CP to fill the void of young years excitement :\
What coincidence, man. Never thought there was someone that way :D
To pretend I'm working on something very serious.
For me it is:
It is also a lot of adrenaline (when contest is just about to start or if you are finishing to code something just before the end), and a way to experience rollercoaster mood: excitement/satisfaction to frustration/anger. Sometimes it is necessary, without ups and downs any activity becomes boring very soon.
I don't think you need "specific" reasons to be pursuing something in life. Your passion towards a certain activity makes your life revolve around it. As long as it gives you happiness, you need not hunt for other reasons to stick to it. Not denying the fact that doing CP does culminate many more traits in you but that doesn't define the whole and soul reason, at least for me, to be pursuing CP.
Personally, I feel that CP is not meant to have any "specific" benefits, instead just make you happier (isn't that what all hobbies are about?).
It's a fun way to meet cool people ^^
I've been in the workforce for many years now, so I do not have an incentive to do competitive programming for a job or school. I pursue it to keep learning, have fun and keep my programming skills intact. I envy those of you in school or college or early in your career, as these skills -- algorithms, math, data structures, etc. -- are foundational and valuable if you like to remain on the technical side of things in your career.
I think people should be doing it because they enjoy it and it offers a continuous learning experience. If you're seeking to land a dream job or get into a good school, that will follow automatically from the skills that you'll gain here. If you're already settled in a job, the constant learning from the best will help keep your skills sharp.
I do CP as it is the best way to exercise my two brain cells, plus it is fun.
I guess, I have an answer already. I think you'd love to read it.
-120 rating points : "Why do I do CP?!!"
+1 rating point : "Yeah... I f***in' enjoy this"
It's an unbreakable curse that lured me in by itself and trapped me inside for eternity.
CP kind of changed my life trajectory by a considerable degree. Like most people here even I got addicted to CP for the fun aspect and the adrenaline rush you get during contests. even though you feel like you are solving made-up problems in CP, it kind of trains your mathematical thinking ability which can be potentially transferred to other domains. Also there's a social aspect to it where we can discuss about problems with a community/friends. At some point I started realizing that CP is more closer to a game than some kind of subject.
But the biggest impact CP had on me was that it was a gateway for me in getting interested in math and theoretical CS. In fact from my past couple of years studying theoretical CS, I would even say that hard CP problems (Div 1 C,D,...) are closer to small sub-problems encountered in theoretical CS research. For example, there is an area of theoretical CS called parameterized algorithms, and three of authors of the book on the topic are competitive programmers themselves. When I took a course on parameterized algorithms, I found parallels between some parameterized algorithms and some tricks in CP. So I guess it isn't that nihilistic after all :) .
I feel online judges are a really powerful pedagogical tool to learn programming/problem solving.
I was recently reading a book on learning and encountered this — (Image from Google Books)
From the book "How we learn By Stanislas Dehaene" (Check the page on "The Four Pillars of Learning")
As we can see platforms like codeforces strike the chord on all the above four areas.
So to summarize, I love CP because I find it a fun and very effective way in learning new algorithms and sharpening my programming skills.
I actually don't like the adrenaline rush associated with the contests(that's why I don't participate anymore) but I LOVE to think about the solution of a problem. I love to sit, take my time and think about a problem(it's even better if I can't solve it :) ). I love to experiment with stuff and try different approaches, learn new algorithms and data structures, find ways I could apply a method I couldn't even imagine.
I consider that CP contributes a lot to the quality of a developer, the reason being simple :
It learns you how to tackle a problem
it learns you a basic set of rules which in time basically become a "heuristic" for finding the correct solution from the entire space of possible solutions
it learns you about different mixtures of math and algorithmic thinking which in time may be useful in understanding other branches which are not related to CP ( machine learning).
So why do I stick with CP?
like I think i don't have that much mind to be a great level i am feeling demotivated i don't know but I like CP
im into competitive programming because it's fun and I enjoy solving problems even if im not that great at it. I only began about a month ago but it's been really enjoyable for me
Ego. I am convinced I'm not as bad as my rating says I am but like I have no data to prove that because my rating is still trash so I just want to improve my rating so that I'm quantifiably as good as I think I am.