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.