This has been bothering me for a while, and since I'm sort of a lurker around here, I decided I'd check out what others have to say on this subject.
What are your opinions about computer science contests? By these, I mean high school olympiads (USACO and the likes), online judge contests, or even just spending time solving problems on different online judges. It's obvious that these help one as a programmer, but how much? Does being, say, an IOI medalist, make one a better programmer? Or just a better mathematician or computer scientist? I think most programmers agree that coding itself is just a tool, while the real occupation of a programmer is coming up with solutions to problems. What kind of problems would a programmer encounter in a programming job? The kind of math-oriented problems one would find in the higher rounds of different competitions, or something different?
I'm asking this because I always took every opportunity that I had to participate in comp sci competitions, but I never really got any outstanding results, like qualifying to any international contest. I qualified to the national olympiad in my country once, but I didn't really do much there. I'm also active on several online judges.
Basically, what I'm asking is what impact do contests have on a potential future programmer? Are decent results a very good thing, or an OK thing? Should one only pursue outstanding results if interested in following a career in comp sci research?
Also, finding competent teachers that can themselves solve and explain contest problems seems to be very difficult, at least around here. So basically, I've learned everything I know from school books and the internet, by myself, but there's a limit to how much you can learn and understand by yourself. Sometimes you just need someone to teach you too. Any ideas on how to better prepare yourself for such contests?
Any opinions appreciated.