Additionally, very skilled programmers increasingly become less relevant as processing power increases. In the original days of the personal computer, insanely clever techniques were useful when the computer only had 4K of memory like the original Apple II. These days, knowing such techniques isn't so useful.
The real paradox is finding programmers that can fluently program something that users actually enjoy. Programmers that program only for the sake of solving interesting technical problems are what Paul Graham refers to as "techno-weenies" ( http://www.paulgraham.com/wealth.html ). Ideally, a very tiny percent of people will actually see the source code compared to those that actually use the product. You can write something that people enjoy and then hire programmers later to optimize the source code. The inverse is not true: You cannot program something that is elegantly written and then hire someone to make people like it.