I remember when I went to programming competitions ACM, Topcoder and like, we would have to solve 5 to 8 hard problems in like 4-5 hours. After that most homework CS assignments seemed like a joke, yet most students would spend days just to compile something half-working.
Most CS students are not trained to solve problems. They are taught algos, some language basics, but they only have to code 2 or 3 small programs per week.
We had a programming club where we would solve 4-5 problems in one hour, and only like 5 people attended it, out of ALL CS majors of ALL years.
And that's, kids, why it's so damn hard to find good developers.
I also did CS competitions in college, but I always felt they over-stressed speed. They are for quick problem solvers, who are also comfortable with the languages the competition accepts. However, the way I see it, merely being sharp and knowing a language well isn't good enough to be a good programmer. Programming to me is a strange mixture of problem solving, technical knowledge, design, writing, and typing and a good programmer is good at all of them (throw English in there as well if you're not a native speaker). Problem solving and typing are things they teach you to get a CS degree, and it's what those competitions measure, but most of our submissions were really poor code, even by my standards at the time.
[Edit] Add discipline to my long list of essential virtues for a good programmer. Discipline is a big one.
Agreed, that was similar to what I've seen with other programmers and with my only education. I profited greatly by taking engineering courses for a while, and they teach how to problem solve. I've also observed that others who have had a similar experience do well with problem solving (but also those with math background, which is counterintuitive to me). Small sample sizes for both, but they have been pretty consistent.
Most CS students are not trained to solve problems. They are taught algos, some language basics, but they only have to code 2 or 3 small programs per week.
We had a programming club where we would solve 4-5 problems in one hour, and only like 5 people attended it, out of ALL CS majors of ALL years.
And that's, kids, why it's so damn hard to find good developers.