I would have to say there is.
Partly because the number of jobs has increased.
So the Demand exceeds the Supply.
And why is that?
Partly because of the pace at which technology changes.
If I, as a programmer, decide to learn a new technology, chances are, it will be replaced within a short period of time, by some newer technology.
So I must decide, strategically, what I think will be a valuable, marketable, sustaining skill in the future, and go in that direction.
However, even with this approach, the number of languages required to 'keep up' is overwhelming to say the least.
Here's my recent blog post on what I plan to learn:
So you can never really get ahead in the IT industry.
You may get to use the cutting edge technology for a brief period, and shortly thereafter something will surpass it.
And that may intimidate many future IT professionals.
Let's say they want to become an architect or engineering, they learn the trade and are set for life. Perhaps get some industry publications from time to time to learn the latest trends but they don't have to relearn everything each 6 months.
Musicians are not required to learn completely new instruments every 6 months, they learn one or two and make a career out of it.
And like I've said before, programming is just one side to the job, learning business rules, project life cycles, industry jargon like PCI, sarbane oxley, etc. are required to be learned on the job.
Another reason is the geek factor.
Most programmers are smart and competing with people every day is another reason people may choose to stay away from IT.
Being an IT profession is not easy, and I believe that constant change, steep learning curve and competition to be the main reason for the shortage of IT programmers today.
And there you have it!