No doubt there are many talented individuals out there. However, they are:
1) Only as good as the idea being built
2) Only as good as their understanding of that idea.
My point is, that too often those doing the coding don't *really* understand the biz needs. Nor do they attempt to understand.
Therefore, they are unable to anticipate, add value, etc. The traditional reactive developer is going to be no match for a proactive business driven contemporary developer.
Developer is a state of mind, it's not a title. Also, there's a difference between a programmer and a developer. Until developer is applied correctly and uniformly there are going to be too many programmers expecting developer respect and pay.
Don't get me wrong, there's nothing wrong with being a programmer. I was one once

But years on the job has NOTHING to do with becoming a developer. Developer should be position that's earned.