This is a very honest thread about the advantages of training for programming contests.

I would like to give a slightly more nuanced view. In 10+ years teaching in college, I've seen a fair share of ICPC students, and I've caught a couple of trends. https://twitter.com/josejorgexl/status/1316941629840818176
To be clear, I'm not advocating against competitive programming. Not at all. There are many advantages and Jose makes some very good points.

Since advantages are already well-discussed, I just want to point out a couple of warnings, in case you're a college student today.
First, as Jose already mentioned, competitive programming problems are very well defined, and even more, the judges already know there is a definite answer that works in the expected time and space complexity.

Real-life problems are far from being this well-defined.
Of course, all education is like this. We need well-defined problems to be able to fairly evaluate different solutions.

Just don't think that a high skill in solving well-defined problems immediately translates to a similar skill in solving real-life problems. It doesn't.
Second, working under pressure with little access to outside information is key un competitions. It is also fairly unrealistic.

A high skill for (re)producing solutions to specific problems under pressure doesn't translate to searching for and adapting others' solutions.
This doesn't mean that such a skill is irrelevant or useless. On the contrary, sometimes there is really no other solution, or there is really a time pressure to come up with something that works.
And finally, the major drawback I've seen with some (but not all) really good contest students is a tendency to disregard everything that is out of their comfort zone.

Being super good at something doesn't mean everything else you're not good at is unimportant or trivial.
I've seen great contest students that are incapable of solving open-ended problems (in AI, for example) because they lack the skills to do research and think outside the algorithms and data structures box.

I've also seen contest students that are very successful in research.
So this is not a rule, but rather a warning.

If you are a college student today thinking about getting involved in competitive programming, by all means, give it a try. It will give you very good problem-solving skills and some team-work skills as well.
However, don't let this become an obstacle to try other things.

Get involved in open-ended research projects and learn to read and write papers.

Contribute to open-source projects and learn to work with a community.

All of that can only make you better in the end.
And if you find out that competitive programming doesn't work for you, that's also OK.

Real-life is not a competition against other people, it's a competition against yourself and you're the only one who can set the bar at the right height.

I still suggest you try it.
You can follow @AlejandroPiad.
Tip: mention @twtextapp on a Twitter thread with the keyword “unroll” to get a link to it.

Latest Threads Unrolled: