I'd have to say that the #1 problem is unrealistic expectations. IT is a profession where what you have experience in is grossly overrated. Everyone demands things like "10 years RUP" + "5 years Oracle" + "8 years Struts" + + + ...
And yet what does that really mean when the next project is just as likely to end up using
JSF? The only really meaningful information you can get out of what someone has
done is that they've
done something. That's important in the sense that the more things you've worked with, the better you'll be at adopting new technology, but that's about it.
And, between obviously ludicrous expections stacked high and boolean-anded together, the first fatal mistake they usually make is filtering out the talented-but-honest from those willing to lie to get the job. Which works, albeit inefficiently, since many, though not all of those willing to lie can pick up these new skills just as well as their forsaken counterparts.
Now add to that an equally unrealistic approach to project management. The pressure is to get into production in minimal time and cost. To a certain degree, this is good. Shops that don't have a certain degree of urgency end up wasting 18 months creating use-case diagrams. However, the other extreme is when the expectations of time and effort are off by a factor of 2 or more. Often, alas, because they spent 18 months on use-case diagrams, then woke up one day realizing that only there were only 6 months left to do the actual coding,
testing, etc.
Finally, there
may actually
be a shortage of real talent. It's long been recognized that there can be a tremendous difference in the efficiency of different programmers. That's one of the reasons why Fred Brooks proposed the Chief Programer Team concept way back in the '70s. The idea was to spread out the "grunt work" and free up the top talent to do the really tricky stuff.
CPT didn't take off. I don't know why. It may be because despite everything, companies persist in attempting to treat talent as plug-replaceable commodities despite all the data indicating that such isn't true. It may be because CPT simply doesn't work. I've not had the chance to observe it in operation.
As it stands, however, the bar for getting into IT is miserably low. It's almost as if anyone who could put together a model out of paper-mache' was considered equivalent to a skilled aircraft mechanic. Attempts to sift the good from the mediocre from the outstanding incompetent have consistently failed, in large part because neither diplomas nor certifications not anything other than actual proven results are any real indication, even it's almost impossible to demonstrate proven results when you're dealing with team efforts and most of the work isn't publicly visible.
I still maintain that if the public at large would revolt and refuse to have anything to do with websites where a chance double-click resulted in a duplicate order (my [i]boss[/b] got nailed by that one this morning), credit-card dates matched the way they're written on the card itself, long numbers permitted spaces or dashes, etc. etc. - in other words, people demanded a little more quality and a little less junk at "lower prices everyday" - well, perhaps it might be easier to see what the real state of the labor market was.
But Winston Smith expected the proles to get fed up and do something and you see where it got him.