You know, in the past, they used to equate the amount of skill and experience it took to be a good coder to being similar with a skilled surgeon. There is some truth in that. In fact, being a surgeon is easier because you don't have to worry about basic human anatomy changing every few years. In IT, however, platforms and languages evolve and your skillset has to cope with these changes all the time.
Now they would have us believe that you can take regular people, and teach them to be "skilled surgeons" in a short period of time.
The reason there is a shortage of good coders is because it takes a lot more intelligence, skill and discipline than most people realize. There are simply not enough people with the capacity it takes to meet the demand.