When I get contacted by headhunters they are usually searching either for a developer or for a consultant and there is an interesting observation which I do see confirmed when I read forums or talk to friends:
Companies are willing to pay much more for a consultant than for a developer.
I am both - developer and consultant - and I can tell you: The best consultant cannot solve the issues that have been introduced by bad programming and software design mistakes. In a software company the whole business depends on the quality of the software released to the customers.
Only in very rare cases in my consultant role I have access to the source code of the base products in use at the customer. My daily job includes customizing bricks of software and tying them together. Of course this often means writing code on my own to make everything work together. So I am dealing a lot with APIs of software products.
During implementation of projects the vast majority of time goes into dealing with bugs, unfinished features and bad software design (or a software design that simply does not fit the needs)! And is pretty irrelevant which software product I am thinking of, it's the same everywhere. It would be better if I could focus on the customer needs and on building solutions instead.
There are people who have the opinion that most problems are just organisational problems or can be solved on the organizational level. I do not really agree with this. Of course, in most companies there is room for improving the organisation, but a software flaw should not be the reason for implementing workarounds on the organisational level.
Software vendors and their customers depend on stable, secure - good quality software. Those, who are building the software, often are poorly paid. Most of my ex-class-mates stopped the programming work completely in the meantime. In the same time I do not know any software vendor having enough good quality programmers. Instead bug lists are only getting longer over time. Really strange.
Related post: IT Dependencies.