Programmer salaries

How much should a really top-notch programmer get paid? There are many ways to approach this question.

First, note that the question is not "how much is a really top-notch programmer worth?" The best programmers are worth at least twice as much as a good programmer, and a good programmer is worth at least twice as much as a mediocre programmer. As for people worse than mediocre, in my opinion they probably don't deserve a salary at all. So, the best programmers are worth at least four times as much as the mediocre programmers. If you assume a mediocre programmer makes at least $60-80k, the best programmers should be averaging much more than a quarter million dollars a year.

I've heard that some programmers do get paid in that range, but only if they work for Wall Street. Why? Does Wall Street have so much extra cash floating around that it's easier to overpay their employees than have to deal with salary negotiations? Or is it because Wall Street, being extremely profit focused, simply realizes that it's worth it to spend that much money? Even though I have absolutely no experience working for a hedge fund, I'm willing to bet it's the latter.

So back to the question: what really determines the salary of a developer in a software company? I think there are several answers.

The first answer boils down to the fact that employees have to get paid less than their boss. And the boss has to get paid less than the grandboss, who gets paid less than the great-grandboss, etc, etc. Don't ask me why this is, but it is. Unfortunately, in many software companies, a talented developer will be more valuable than their immediate supervisor. Therefore in order to keep from vastly overpaying the supervisors, you have to vastly underpay the developers.

The second answer is that white-collar employees usually expect higher-than-inflation raises, even if they're doing exactly the same job they were a year ago. This means that salary usually correlates with years of experience. Thus, a young, talented developer gets paid much less than they're worth, while an old, talented developer gets paid only slightly less than they're worth. Productivity doesn't scale especially well with experience, so this fact isn't really justifiable economically, but it's part of American white-collar culture. And cultural expectations are exceedingly hard to change.

The third answer is that managers, being out of touch with what development actually involves, either don't believe that developer abilities actually vary tremendously, or they believe it but they're unable to independently assess how good an individual actually is. Related to this is the fact that it's quite difficult to figure out how productive someone is going to be, given the standard interview process. It usually only becomes really obvious after 6-10 weeks, but by that time you've already made the person an offer and you can't easily renegotiate it to accurately reflect their value. So companies end up offering a standard salary that has been risk-adjusted for the fact that you might turn out to be a dud.

The fourth answer is that talented developers are exceedingly bad at explaining why they deserve the extra salary. When was the last time you heard a developer explain all the reasons why they're better than the average "learn javascript in 21 days" code monkey? Perhaps more importantly, if you did hear a candidate start explaining why they're worth a very high salary, would you listen to them or would you blow them off as an arrogant ass?

The fifth answer is that there's no objective way of measuring a developer's abilities. Since no two developers work on the same project, and since estimating how long a project should take is really hard, you can have no standard of comparison between developers. There's also the fact that developers actually come in dozens of specializations: web, databases, networking, drivers, games, accounting, science, etc, etc. All of this makes inter-personal comparisons difficult. But I don't really believe this answer, since it's usually pretty obvious how someone compares to their coworkers. The only justification for this answer is that it would be hard to defend salary discrimination in court if someone were to sue you paying them less than their coworkers -- but I've never heard of that happening.

I think the tragedy here is that because there's really not that much financial upside for a developer to go from good to excellent, many developers just settle down into their job and more or less give up on improving their skills. It would be better for the developer, and for the company, if there was more of a voltage differential here, to encourage them to improve.

Posted on August 31, 2006 08:15 PM
More management articles

Comments

Funny, I was pondering this just the other day. There are a few more variables to consider. One variable is how much of an impact can the developer have? Even a great developer, if hired into a minor role, will have too small an impact to justify a high salary. For instance, if you're primarily interested in hiring someone to maintain your existing payroll system, then paying for a great developer may not make a lot of sense. However, if you're getting a lead developer for your flagship product, you better get the best.

I currently work for a "Wall-Street" company precisely because they were interested in hiring talent. I work with some of the brightest people in the field and they are willing to pay to maintain that quality. If you think about it, Wall-Street is based around real-time, mission critical software. A single bug could bankrupt the company. Therefore, it is worth the extra money to hire the best and brightest. It will mean the difference between boom and bust. This high stress environment also pushes the salary up.

Previously, however, I worked in the products division of a data manipulation/warehousing company. Since most of the revenue was generated off of consulting fees, the products I created, while profitable, could not justify a high salary. Plus, inept management would insure the failure of most projects, anyway. However, it was low stress and very researchy, so the low salary was offset by the job.

So, the role that the developer plays in the company must be taken into account when determining a proper salary. Also, additional factors such as stress and duties should be considered.

Posted by: Tanton Gibbs at August 31, 2006 09:57 PM

One reason programmers are all paid about the same is that engineering organizations are often egalitarian. There is a perception (possibly a correct one) that incentive pay is dangerous to engineering organizations (http://www.joelonsoftware.com/articles/fog0000000070.html). As a result, programmers tend to be paid about the same regardless of ability.

In fact, many other white-collar professions are similar. I expect in most companies most people are paid within a factor of two of people who hold the same position. So the inertia is to pay all engineers about the same, even though programming ability may be more variable.

Enter Wall Street. Wall Street doesn't care if people's feelings are hurt, and huge variations in pay are the norm. In fact, from the perspective of a trader at Goldman-Sachs, the fact that programmer salaries *only* vary by a factor of four or eight probably seems pretty darn egalitarian.

So I think the reason Wall Street pays good programmers more isn't that they have more money, or are better at noticing good programmers. I think it is because they are more willing to create an organization with wide variations in compensation.

Posted by: Richard Tibbetts at August 31, 2006 11:07 PM

The grass is always greener on the other side. As you mentioned it is hard to know what you are worth. We have our subjective impression of what we believe we are worth.

A company regards you as a resource, if you are a valuable resource, they will try a little bit to keep you happy (but money is not usually part of that). It is also the way upper management (or even your immediate manager) views you - a resource.

I remember being called in (along with the rest of the team) to our new manager's office and being told that we were not working enough - he expected 60 hours as a minimum and more when necessary. His exact words were, "You are not paid more than the average person because you are better, you are being paid more because you are expected to work more." - the team turned over very quickly.

Other snippets from that same company, the owner telling the previous manager that if we didn't produce, then he would replace all of us. He had started the company from scratch and he would do so again.

I have no salary negotiation skills. I just accept what I'm given. The company I work for now has had good growth and I've averaged better than 3% pay increase for the past 5 years - which now puts me ahead of friends (in software) who have seen 0%-1% pay increases over the past 5 years.

Posted by: richard at September 1, 2006 11:03 AM

The simple "answer" is Market Laws. We are resources that employers try to pay the least for, and yet to retain us, within reason (http://en.wikipedia.org/wiki/Fair_market_value). It is our choice to accept, or not, the terms we are offered. Employers create just enough of a "gravity field" to keep us orbiting them.

I completely agree that programmer worth can vary widely from person to person, especially in contexts requiring non-routine thinking, creativity, great execution. I also agree that compensation is not a linear function of the worth. Luxury goods pricing displays "the law of diminishing returns": you will pay double for only marginally better wine, high end Hi-Fi, a car. In contrast, programmer salaries reflect the "reverse" of that law :-) Some software engineers/scientists ARE in the luxury good category and can exact premium price. James Gosling, Butler Lampson, Jim Gray (what happened to him?) come to mind. Employers pay for their "brand."
With respect to retaining good people within reason: we are all pretty much replaceable; think about it this way: all companies *but one* exist without us and yet somehow they operate :-)

Posted by: Jacek Ambroziak at March 10, 2007 01:39 PM
Post a comment









Remember info?




Prove you're human. Type "human":