3 ms·
I believe that it is because of two reasons [massive generalization follows...] (1) emphasis on math and physics (2) stress on discipline and rote learning. US
by virtuabhi 10y ago
I believe that it is because of two reasons [massive generalization follows...] (1) emphasis on math and physics (2) stress on discipline and rote learning. US students have (1), Chinese have (2), Russians have both. You would realize that most competitors in these contests end up doing pattern matching with previously solved problems. In addition, they keep a catalogue of most asked questions, common codebase, etc. for reference and pulling out code. I do not think that these competitions produce good programmers as they incentivize writing quick, ugly, non-resusable code.
- arghbleargh 10y agoWhile you are correct in pointing out that these contests only test a relatively narrow subset of the skills needed for good programming, I don't think it would be correct to say it's based on "rote learning". There can be some amount of pattern-matching, but it's not as if you can just read the solutions to 100 problems and expect to do well. Also, I know for a fact that many (but not all) people who were good at these contests are also good all-around programmers. (In fact, you probably do better at these contests by writing more readable code, even accounting for the time cost. But some people can get by with messy code as well.)
- rav 10y agoOnce you have solved your first 1000 problems in programming competition situations, you become really good at writing code that compiles and even is correct in the first go. For me, practicing for programming competitions alongside the job as a software library maintainer really boosted my C++ skills faster than anything else could have.
- farhanhubble 10y agoAbsolutely true! Competitive programming is shear waste of time. While it's necessary to know basic algorithms that get used in day to day work, there is no point memorizing all the algorithms. Sadly, most technical interviews pay a lot of importance to this kind of memorization. For solving real world problems one needs to research and find the right solutions as and when the need arises. This is what real learning is all about.