What do HN guys think about Topcoder ( http://www.topcoder.com/tc )? Is it a dependable platform to learn and master C++, C#, java and algorithmic techniques.
Is it better or worse than other Online judges ( ACM UVA, SPOJ etc ) ?
What is the worth of Google Codejam ?
Should a computer science undergrad afford to spend their major chunk of time on these online judges practising programming or it's more worth to develop a software or contribute to open-source ?
What are their respective values on job-scenario ?
Practicing in online competitions does help . At least to master the different problem solving techniques , but doing it full time would be a mere waste of time . As pointed out the way we need to code in the industry and the thought process that has to go through is way different . Yes we do face challenging problems and knowledge of different techniques / approaches will surely come handy, but i am sure it will be more worth to develop a software or contribute to open source . By this way you give yourself a chance to learn the entire SDLC and hence u will be more valued in the Industry .Ofcourse the complexity of the problems you have solved while building the software will be the criteria based on which ur skills will be judged<p>Google code jam is just a competition where u can tell Google you are there and you can do good programming and yes probably get hired by them !!
I recommend Project Euler as a complement (or replacement) to the competitions. PE is not timed, therefore you can concurrently solve the elegant challenges while working on other projects. Furthermore, there are no "levels of access": all problems are available at the start.
Here is an interesting view on the non significance of programming contests <a href="http://web.archive.org/web/20071121053436/http://www.cs.caltech.edu/~mvanier/hacking/rants/programming_competitions.html" rel="nofollow">http://web.archive.org/web/20071121053436/http://www.cs.calt...</a><p>And after leaving college and coming to the Industry, the first thing I learnt is that the kind of programming you are expected to do in an organisation is so different than the style we follow in the colleges or promoted by the coding competitions.
Those problems are certainly interesting to learn a language and to learn algorithms, but almost all contests I tried have one MAJOR MAJOR problem, which is why I stopped solving those interesting problems: It is like trying to fix a complicated robot which should work perfectly by my confidence in total darkness, wearing oven mitts without tools.<p>Yes, once you submit, you get back WRONG. You question your algorithm, you question your understanding of the problem, you question yourself, you question the forum, but there is no error. Great. So you can just stop trying to solve the problem and do something else and probably assume that either the problem description is wrong or the input/output is wrong. This is certainly not fun at all.
I used to do competitive programming in high school and early university, but I stopped doing it mainly for lack of time.<p>Most of what you learn from programming competitions is not transferrable to business programming, but possibly some is. Maybe you'll see a case at work where dynamic programming might be super-awesome. Maybe you won't, but either way it's not going to hurt. There are be opportunity costs of course (i.e, because you're not spending your time elsewhere), but only you can judge that.<p>My motto, if I had one, would be that learning is not a zero-sum game. Programming competitions are a form of deliberate practice not unlike cross-training for athletes.
I am not sure about bussiness but you can find many "competition programmers" among outstanding young algorithmists (researchers), so possibly it help this direction.