I’m still in high school, so I this question keeps popping into my mind.
How do contests like CodeChef, TopCoder, USACO, etc., help with your day-to-day job as a programmer?
Do you use the same algorithms/techniques while doing professional work?
And, do you recommend high school kids participating in such contests?
I hope these questions aren’t too vague. If they’re confusing, I’m very willing to clarify them in the comments. These questions have been bothering me for a while.
They will help you develop algorithm and data structures skills, which are needed in professional work (e.g. sometimes you’ll have to come up with a good algorithm or a fast enough data structure for some work-related problems, although this might not happen too often)
They might help you get a job at a top company (e.g. Google, Facebook, etc.) : the job interviews consist (among other things) of algorithmic questions similar to contest problems
So my advice to you is to participate in these contests if the time allows you (e.g. do not neglect preparing for your classes in order to participate in the contests - this might happen particularly with the long contests )
Edit: I would like to add an extra comment to this old topic because of a recent experience I had. I have been recently contacted by a recruiter from a rather well-known IT company (I would rather not name it) in order to ask me if I was interested in applying for a job at that company. The first thing the recruiter mentioned in her email was that she noticed my constantly good results at Codechef contests (I assume that she meant the long contests) - she also mentioned other reasons which stirred her interest, but I thought it would be interesting to let you know that recruiters from strong global IT companies check out Codechef contests when searching for potential employees. So there’s one more reason for participating in Codechef contests!
I subscribe mugurelionut answer entirely and could also add that attending these contests (more on cook-off’s than exactly long contests) also trains you in a somewhat important real life aspect that is the one of deadlines and time management… I.e. up to a point, by attending these sort of contests you can also understand that sometimes in industry, it’s not only about writing efficient and correct code but also about writing it in time, and this is especially important when you are doing a job when integrated on a larger team… If a critical part fails do be delivered by day X, then a whole project might be at stake…
On the more theoretical side of CS and more specifically when it comes to teaching algorithms, these contests often deal with very advanced algorithmic problems that can provide both insights for university assignments and even for further investigation on new CS fields and the relationship between advanced mathematics and CS…
So, these contests are extremely versatile and while they do not replace in any way, the proper and more methodic studies program of a university, they can actually provide you some tools that can help you in your future life, either as a theoretical CS, or as an IT engineer / programmer
It’s really, really thrilling and exciting to know that!!
I’m sure it will motivate setters’, testers’ and of course fellow contestants to always keep on improving and it is amazing to see that Codechef is finally getting the recognition it always deserved and that it is heading in the good way