In this economy, those with jobs.
Seriously - and I not only work in this area, but I hire and manage in this area - the programmers who typically make the most are ones who have more than one key skill. Some real-life examples from my experience are:
-
A programmer with an accounting degree who works on financial accounting.
-
An licensed Professional Engineer who works on engineering software.
-
A linguist who works on creating and maintaining databases for former Soviet countries.
-
A paralegal who works on accounting and contract management software.
The sad truth is, if a person is smart, quick, has the ability, and willing to learn on their own time, I have found in 10 years of experience you can train that person to be just as good, if not better, than a programmer with a Masters Degree in CS, within 1 year. In fact, I no longer hire programmers directly out of college, as I’ve found that their actual programming and job skills tend to be unacceptable for what is done IRL. I have to end up teaching them on-the-job anyways, so why not start with someone who brings more to the able than one key skill?
Now mind you, in the above, I’m referring to the “highest paid” programmers, which is answering the OP. What is the salary differential? Well, that’s very difficult to measure, due to the dual-skilled person often having much more work experience. But looking at years of experience only, I would say that the dual-degreed or dual-skilled professionals make about $25-30k more than their “pure” CS bretheren.
Or, about $70-80k, versus $50-55k.
Now if you want to look just at IT skills, and subdivide this, it’s also difficult. And the “desireability” of a skill changes rapidly. But I would have to say the “value” of the skill in my firm (which has more than 500 in it which could be called “IT professionals”), in decreasing order of “value”, is:
Database design and management, esp web-access database
“Hard core” network installation and debugging (being able to do everything from setting a T1 line up from scratch to running cable to server setup)
Ability to set up NT/2000/print/whatever servers, including hardware
Java and ActiveX writing (REAL applications, not piddly little 1000 line web enahncers)
Interfacing and programming PLCs and SLCs, and other logic controllers
MFC programming expertise
RAD (note I did not include MFC)
C++
C