Unpopular opinions about competitive programming
Sounds like most people argue skills for competitive programming are useless, and also dislike them.
I'd argue the opposite.
Competitive programming taught me:
* Work under time-pressure -> Think of creative ways -> Get things done quickly
* Convert ideas quickly into workable code, related to above
* Contrary to what many think, during contests I found myself having to write pretty modular code with a consistent style, especially in ICPC contests (you coordinate with teammates)
* Be wary of edge cases -> Too many "painful" experience of getting "Wrong answers" in contests, only due to a missing edge case, a subtle typo, etc
I was able to apply many of the above in realworld scenarios.
In fact, I found most of realworld problems in industry to be pretty boring - for perhaps 80%+ of problems pretty much there's a standard solution: you just find those, get buy-ins from teammates, then implement (or lead others to execute on it)
Doing competitive programming problems give me a break to work on something more interesting, more intellectually stimulating.
(I'm now participating in Facebook Hackercup Round 1. I probably wasn't able to solve all those problems completely but it has been a pretty satisfying experience for me to take a "break" from industry-style work.)
comments
On a side note, competitive programming is useless.
he stood in the top 5 of AIIMS entrance for medical but still remember the morning we had to go write IIT-JEE entrance, he wasn't even sure if he should go write, but then went with us to the exam center and when we got mains results finally, he was one of the top 200 in India ranking list, with hardly any prep. 2nd Best of the ranks in all of my batch back then and only other guy who was top 20 JEE mains list ended up coming to MIT mid way for his bachelor's because of his merit in one of the IITs he was in.
I learned a very important thing seeing these two guys, they were extremely ordinary in everything but had exceptional ability of learning the actual theory and be able to apply it , when they learned theory, they learned the basics very well.
For them solving problems was just waste of time , coz they would just solve it most of the times. Because they could apply the theory they learned easily.
For the rest of us , solving problems in physics, mathematics was a way to learn the theory right and understand it better. I couldn't have understood my physics, mathematics as well as I did, if not for problems.
Same with these coding competitions etc, they help some or maybe a big chunk of people learn better. Nothing good or bad about it. But if you learn the basics right and be able to apply what you learned to real life problems, these tests are not needed.
They always told me, it's all about how well you understand it :-)
These two guys were few of the tenured youngest profs in top US unis in USA sometime back and leading researchers.
Most fun part in our classes back then was , our teachers would learn from these guys :-D if they got stuck.
Also, behavioral questions require much different skills and experience.