Why Coder Pay Isn't Proportional To Productivity
theodp writes "John D. Cook takes a stab at explaining why programmers are not paid in proportion to their productivity. The basic problem, Cook explains, is that extreme programmer productivity may not be obvious. A salesman who sells 10x as much as his peers will be noticed, and compensated accordingly. And if a bricklayer were 10x more productive than his peers, this would be obvious too (it doesn't happen). But the best programmers do not write 10x as many lines of code; nor do they work 10x as many hours. Programmers are most effective when they avoid writing code. An über-programmer, Cook explains, is likely to be someone who stares quietly into space and then says 'Hmm. I think I've seen something like this before.'"
Programming is usually team work and as such kind of hard to measure compared to salesman who just pulls for himself. Another thing is that coders aren't usually that good at expressing themself, so it may not be obvious who is being more productive than others.
And how do you measure that productivity? Is it the amount of code you write? What if its bad code.. Is it the quality of code? What if that shows up as less productive.. No one notices unless you make it visible and show your boss or developer that you're the man.
But being awesome coder and making upper level see it won't get you 10x salary. It might get you a better salary, but at that point you should probably aim for developer position or boss level, because that will happen eventually.
I know a person who used to run a application company. There was a coder who worked as such for some years, but he also took more important stuff to handle in the company. His boss always told how good coder he is and definitely noticed him over the others working there. Later he became the boss running that company, when the old one stepped down and only owned the company anymore.
But want to just work as an average coder? Expect average salary.
See, for instance, section 2 (Productivity) of the Hacker FAQ.
The uber-coder's code works the first time - it sits there silently and invisibly working.
Meanwhile, everyone is looking at the hard work and long hours being put in by the guy who's code needs lots of help. He gets the notice, not the guy who did it right.
It's also hard to reward. Also, "Paying a developer by the line is like paying an plumber by the pipe."
The Institute of Incomplete Research has determined that 9 of out 10
This anecdote sums it up quite nicely. Now all we need is a few more of those and we have data :P
:/- spoon(_).
I have, on rare occasions, been Amazingly Productive. There are very narrowly-defined kinds of work where I am super fast. One of them is debugging. So, when we were doing our "no new features, clear out every P1 and P2 bug in this branch" run, I was awesome -- I regularly fixed many more bugs than anyone else. On the other hand... A lot of the time, I'm not much good. If I have a bad-ADHD week, I can have an entire day go by where I simply never quite get around to doing anything but mostly keeping up on my inbox.
So am I super productive, or not very productive, or what? I don't know. Realistically, the answer is probably "if you give me the sorts of work I'm good at, I'm great, otherwise I'm sorta mediocre." But I'm not sure how you'd measure that.
There's also a much more basic failure-to-apply-economics in the article. The value of something which does 10x as much is not necessarily exactly 10x. Is a monitor with 3x as many pixels worth exactly 3x as much? No. Is a video card which can render exactly 2x as many polygons worth exactly 2x as much? No. On the high end, you might see people paying 2x as much for 20% more polygons. On the low end, you might see people paying 20% more for 5x more polygons. Or there might be other factors; you might care about power consumption, or form factor, or...
I just bought a new Eee. It's SLOWER than the previous one I was using. I paid about the same amount for it, several months later. But it has a higher resolution display, and better battery life... So is it worth the same amount? I have no clue.
Long story short: The marginal value of the "more productive programmer" is not necessarily linear with productivity. Add in other complexities (plays-well-with-others, can do trade shows, reliable about giving feedback on progress) and general market forces, and I don't think it's just a question of measurement; I think it's largely that, in general, programmers are willing to work for comparable amounts of money, and the marginal benefits aren't as large as you might think they would be if you looked only at some measure of productivity. Even if it were a very good measure.
My blog: http://www.seebs.net/log/ --- My iPhone/iPad app: http://www.seebs.net/seebsfrac/
The other item that almost everyone overlooks is that an Uber-coder writes READABLE code. If you look at what a really good programmer writes you will be able to understand what is going on, even 10 or 20 years after it was written. Unfortunately, most people suck...
in addition to the factors pointed out by others there is this:
Programmer "A" is an expert and they have a strong opinion that approach "Y" is the best approach- and it is a solid approach.
Programmer "B" is an expert and they have a strong opinion that approach "P" is the best approach- and it is a solid approach.
Programmer "C" is an expert and they have a strong opinion that approach "3" is the best approach- and it is a solid approach.
I've seen A,B, and C get into very loud, very heated arguments over this (I've been programmer A at times when I thought the "solid" approach was missing something that I saw intuitively which they wouldn't accept until I proved it to them laboriously).
Programming is not plumbing. The goal posts are subject to change.
What is efficiency?
Delivering a 100% perfect product 3 months late?
Delivering a 99% perfect product 1 week early?
Delivering a 100% perfect product 3 weeks early but then they change the scope and (as one manager said to me) say "this isn't scope creep". (I turned to my programmer and asked, "can you deliver this change by the previous deadline" and they said "no" and I asked "what date can you deliver it by, and she said 5 days later, and I turned back to the sheepishly smiling manager and said, "is that date acceptable?" -- I mention this because it's a great negotiating technique. And you avoid delivering the product later than the delivered deadline without being an ass and refusing changes).
I've known "great" programmers who were- as long as they were the only one in the company- because they used operating system cheats that worked-- as long as someone else didn't use them too.
A lot of great programmers fail to understand the business side of things.
And you can never control being put on a crappy project with a bad deadline and a bad manager.
---
However, fundamentally- the compensation isn't there because there are too many people willing to do the work. I do not recommend to people who ask me that they enter the IT field in general any more. It's pay is not sufficient to cover the low status, increasing lack of freedom, required holiday work, and offshoring risk.
She was like chocolate when she drank... semi-sweet at first and then increasingly bitter.
As I pointed out previously, incompetent programmers require more servers. Their code spends more time not running, requires a larger support infrastructure to deal with the problems created and generally reduces profits all round.
These days it's difficult to point at a specific individual, but teams are easy. You can see which teams are a group of competent engineers and which are just a clusterfuck[1] of developers.
[1] the collective noun for developers.
Deleted
It seems to me that it's probably true that it'd be very hard to come up with good metrics for a programmer, but I think people should be more careful about metrics in general.
Sure, you can measure a bricklayer by how many bricks he can lay in an hour, but is that really how you want to measure him? What about quality? Doesn't it matter if the resulting wall looks good? Doesn't it matter whether the resulting wall will hold together under stress?
But now even those are pretty simple things. Let's get a little more complicated. You're a contractor and you hire 6 bricklayers. One guy doesn't seem to work as quickly as the rest, and they all give you comparable results. You fire the slow guy and suddenly all the other guys slow down. Quality drops. The client is less happy. What happened?
Maybe if you look into the situation, you find that the slow guy was slow because he was spending some of his time communicating with the client. He was spending part of his time overseeing the other bricklayers, keeping them on task, and keeping them from being too sloppy with their work. He's been serving a vital role in your team, but you don't see that just by measuring a couple simple metrics.
Like all statistics, productivity metrics can be useful, but they can also be misleading. You should make sure you really know what they mean before you make too many judgements on them. In evaluating your employees, it's better if you actually know your employees and have a sense for who they are, how they work, and how they fit together as a team. The value of a person just can't be represented in a couple of numbers.
When i have a task. i find myself 'procastrinating' for days on end, unable to commit myself directly to writing the code. during the period, the task regularly comes to my mind in sudden, odd places, doing odd things, like in wc taking a dump, trying to go to sleep, going to the grocer's and so on. then, after a few days, i suddenly sit down and swiftly complete the task. it seems like im hatching things, dealing with the thing in subconscious before doing it.
the good side, it works. and good. the bad side, i feel like im procastrinating and being irresponsible during the hatching period and its annoying.
Read radical news here
I'd argue that there are more of them than you think.. It's just that all the hard (and cool) stuff has already been done. So the guy who 30 years ago might have developed the first viable JIT compiler is now working on some esoteric feature of some esoteric codebase that you've probably never heard of. There's a lot more programmers now than there were when those guys got their start,
And for the record, I'm probably a better coder than Bill Gates ever was (as for a business-man, not so much).
The kitten of capitalism is fine. It's just that it grows into a cat.
It's not capitalism you want to get rid of. It's corporatism.
If you've ever dealt with a private bureaucracy, you know that they can be just as bad as government. The problem is more that the organazations don't scale. Also, the tendancy for all these corps to behave in a similar way dulls the effect of competition.
As individuals we don't have much power; but we can start by patronizing small businesses even if it costs more. Think of the added cost as a tax paid to a shaddow government, the true government of the people--the one that fights the big corporations instead of working for them.
No, this is not communism. Communism is dead. It's a 19th century idea born out of the first wave of industrialization. We need 21st century ideas, so forget the tradtional worker vs. capitalist tension, please, Please forget it. Let's not relive that.
For all intensive purposes, "whom" is no longer a word. That begs the question, "who cares"?
Another factor is that the manager likely recognizes the uber coders, and any piece that is particularly difficult or important gets assigned to the uber coder. So their productivity may appear to be no better than others because the lead has compensated by giving them the pieces that nobody else can be trusted to do.
One guy has great productivity creating a frequency distribution report. It works, looks good, and everyone is happy. It took him a week to do. The uber coder could have batted that out in an afternoon, but instead spent a week ensuring that histogrammer behind the report was multi-core aware and could scale to billions of data points without dragging the system to its knees. The fact that the report programmer would have floundered at that task for weeks is not going to be apparent to most people - even many other people on the team. So the uber-ness of the uber programmer is hidden by the work they are assigned.
My dad was a programmer for the Star Tribune, back in the seventies and eighties.
Two things he said stick in my mind.
1. He had his own office, and sometimes he'd put up his feet and stare off into space. He told me that people passing by his office assumed that he was "doing nothing." But, he told me, he wasn't doing "nothing", he was very much doing something: thinking.
2. When he got, say, a directive from On High that he must "write a new program for the secretaries", the first thing he did was go and sit down with the secretaries, ask them about their work, and stick around for a while to actually watch them work. He called this the "going native" phase (he took his degree in anthropology). If he'd started coding on the basis of the directive from On High, the end result would be something the secretaries didn't need and wouldn't use.
-kgj
Basically, his point was that the capital owners will always pay their employees less than they're worth to the capitalist, because that creates profits.
Except that you could also say the capitalist always always pays people exactly what they are worth, and increases costs to consumers to create profits.
Both are non-sensical. That's why in reality, someone decides if payment being offered is worth them working for the company. Pretty much by definition, you are being paid what you are worth because only you can really decide that by accepting an offer. If you think you are not "being paid what you are worth" then you need to find someone who will pay you that, or at least leave and not suffer the insult of a continued paycheck.
"There is more worth loving than we have strength to love." - Brian Jay Stanley
I'm not aware of any evidence that makes me believe BG is a particularly impressive programmer and coding for 64k limits is hardly a metric for skill. You're obviously too young but a lot of us were coding to 4k limits or even much less. 64k is downright roomy especially with assembler or procedural languages. When I finally got a Commodore 64, I didn't know what to do with all that memory. It was hard to imagine how to use it all. Shit, I used to write custom databases for the military in Turbo Pascal that compiled to under 8k.
Are agnostics skeptical of unicorns too?
The best coders I have seen wrote amazingly little code. I am not talking about crazy pointer arithmetic but just way less code than lesser programmers. Often the best programmers also deployed the available resources way better. When all is said and done the best programmers leave code that everyone worships as pure genius that everyone else builds on with ease. A great example was someone who did some great code where they took the bull buy the horns and moved the project into proper multithreading and some crazy memory usage. The server went from using maybe 10Megs per process to a collective 8Gigs spread across many threads. Sounds complex but every programmer took one look at the code and went wow. 20 servers out of 23 previously heavily loaded servers were shut down as unneeded. Even with 50% client growth every year our next server purchase will probably be in a decade. That super programmer moved on and we just kept building on his code for a long time. Programming and debugging went from a chore to a joy. Anyone could tell which code was new code because it was ugly and complex compared to the simple elegance of the original code. Without a doubt that programmer could replace the 50 pretty good programmers we have on staff now. Plus his code eliminated 3 full time system admins and has resulted in zero downtime in two years, thus avoiding millions in losses over the last and next few years. So what should his pay have been? 5 Million a year? On a different topic, in my travels I have seen sys admins who ran well oiled machines that were amazing. At the same time I have seen sys admins who weren't properly backing up critical data. Critical as in the company would go bust in the event of a HD failure. In these same companies they had HR, CFO's, and Sales people who were paid multiples of the Admin. These "senior" managem who's screwups would be hard pressed to completely wreck the company usually saw the various computer people as a bit of a joke.
Heck forget memory limits, those were easy (he said, using his tongue to push his dentures back onto the roof of his mouth while tugging his pants up over his belly button), one time my lab partner and I re-coded our elevator simulator (written in machine code, not assembler, you wimps!) so that we could enter it with a hexadecimal keypad that was broken so the "E" key debounce didn't work. For you whippersnappers who never entered machine code with a keypad (not keyboard!) or switches, that means we rewrote it so that no machine instruction (one byte instructions) or data byte had "1110" as the lowest four bits. No that was programming.
Cyril, my lab partner, wound up being Bob Moog's protege and has become the key designer at Moog. Wonder if he remembers that afternoon in EE lab.
Then there was Bob in high school, who reconfigured RSTS control blocks through the front panel switches on the PDP-11/40 to enable root-like privileges. Now, that was art: several levels of indirection, the machine needed to be halted to use the panel, but it was a timeshare system and you had to get it running before any of the users noticed. Pure art, until that one time he made a mistake and caused a crash that rewrote the master file directory with all zeroes. That was a long night writing, testing, and running a program in BASIC that used heuristics to read the disks and a three month old backup (for getting user IDs and old passwords) to recover the directories on the disk. When the security guard came in at 3 AM, Chris (the friend helping me fix Bob's mistake) had to talk the security guard into not waking up the Dean of Students to report us. Bob got kicked off the admin staff for a while. Things got boring after that.
Now, back to my afternoon nap.
It doesn't matter if you don't get paid what you're worth, as long as you aren't going to be paid better anywhere else. Because what's your game options, quit and get a different job that sees even less of your value? Go independent and try to bill rates that high? Join a start-up and try to get that much of the total? Quit or take a long vacation and pray they'll miss you enough to take you back on a higher salary? Yeah right.
A lot of people might know internally what you did, but it's hard to convince outsiders that the projects you did really were that hard and you were that crucial to the solution and your solution was that great. Maybe even your boss knows you're brillant and he's rather fire the whole team and hand the money to you if that was what's needed to make you stay, but it will never come to that. Because who else would pay you that much money? Nobody. I guess maybe if you got some entrepreneurial skills and build the company around yourself it might happen, but that takes a very special kind of people which rarely overlaps with mastering coding.
Live today, because you never know what tomorrow brings
I almost stopped reading when he said Joel Spolsky.
Joel is always looking down his nose at other coders who don't have degrees from MIT. Yet he thinks pointers are the ultimate test of a programmer. He has written one tool that is of note - Fogbugz. That is, if he even wrote the code.
He just reeks of "I know better". He wrote his own language to code-gen classic ASP applications, along with PHP. Right there is a red flag. Did they move to the new ASP.net platform? Nope. That wasn't good enough I guess. No they decided to stick with classic ASP and write a language that outputs both ASP and PHP. Epic arrogance combined with ignorance IMHO.
Then look at Fogbugz. It's just a typical bug tracking application. That's it. Did it need a new language? Hardly. So now these guys wasted all that time on something only they can use and it makes zero dollars. Way to go. Real top notch development there. Fact is his company is small potatoes.
Why do I rant on Joel? Because this guy is believing the shit he spouts and extrapolating from it. Frankly I'm sick of hearing from him about what makes a good programmer. If you aren't a good programmer yourself then STFU about what makes a good programmer. Writing a few insignificant applications doesn't make you a rock star.
In the modern world, those who create wealth are *never* paid anything close to the value of what they created. The lion's share goes to the rich fat-cats that sit at the top of the corporate ladder, contributing nothing that wouldn't have been present otherwise.
Exploitation - its how humans do things.
Your keyboard from back in the day?
I don't always use unix-like operating systems; but when I do, I prefer FreeBSD.
"If you've ever dealt with a private bureaucracy, you know that they can be just as bad as government. "
actually, there usually far worse. Government bureaucracy can be figured out and has consistent rules withing that specific framework. And you can go over the head of the bureaucrat to your elected officials.
The Kruger Dunning explains most post on
This equilibrium is what they hard sell to the populations, as the justification for their policies, but no way do they ever want to achieve that.
The globalist fatcats will *always* make sure there is a great imbalance in wages (a lack of equilibrium) so they can take advantage of wage arbitrage, plus get paid to destroy any approaching equilibrium, then get paid again to start to reconstruct it..but they will never let it actually get there. It isn't nearly as profitable for them after that point of equilibrium, nor would they be able to maintain so much political power, which is even more of a lust for the uber rich than just the mere accumulation of currency units. The dig on that ultimate control over other humans, that is theior primary goal and lust, that is why so many political and economic top people appear to be so sociopathic at times..it is because *they are*.
They have done this construction/deconstruction, keep the people divided and conquered repeatedly over the years, and that is by the use of war, external or internal and frequently both, by destroying the infrastructure and a lot of the population in other areas that are approaching parity with them (and in their own areas frequently as a blow-by). In many instances, at the tippy top of capitalism, (WW2 is a prime example) they fund all the warring sides *at the same time*, destroying a lot of what had been built up, which therefore needs another infusion of the people's capital (their labor and most of their wealth, overtly or through other political controls) to them so they can rebuild..what they engineered to destroy in the first place. They get *rewarded* for being high level criminals. Over and over again.
It's pretty easy to wipe out a productive middle class during a war phase and reduce them back down to serf/peon class, to be exploitable in the normal kingly manner, your own people or those folks over yonder, it doesn't matter to that class of exploiters.
It is very wasteful and downright painful for the global populations as a whole that they keep on doing this, that we can't achieve a fair and balanced natural economic equilibrium, but it serves the purpose quite well (for them) by maintaining these top 1% crooks and predators in their positions at all times.
The aristocracy was never abolished in practice, just in a lot of cases they dropped that public "royal blood" stuff and started wearing more "normal" attire so they would not appear to be as such. Just a camouflage maneuver and so they can continue to fake out their herds of slaves by telling them they now live in some sort of "elected by the people" government, when it has always been these same fatcats calling the shots and doing the most in the way of profiting from other's work.
They are *wolves* and will always act in a predatory manner. They may even war on some other of their fellow wolves now and then, but the wolves as a class are always united in that they need to keep the wolves and prey animals/herds separate and cowed.
Here's an obvious example of wolf class versus their prey animals, so they can keep feeding on them and make it look like they aren't. All this war on carbon and new taxes and permits and credits and treaties and schemes and laws and so on. Well, the serfs and peons (and I include any alleged "middle class" that exists anyplace, they are still the property of the wolves, they are temporarily allowed a few more toys in exchange for perpetual lifetime indebtedness and subservience to the wolves) will be paying for that, because there ain't a singe fatcat wolf predator out there who is going to drive less, fly less, eat less, stop living in multiple mansions, etc.
All the ones "negotiating" all this nonsense...whatever they negotiate is NOT going to apply to them or impact their lifestyles in any practical measurable manner. The wolves will remain wolves and their sheep will be eaten just as much and be shorn a little closer to the hide, that's all.
This topic is terrifying! Productivity only makes sense when you have a static goal, which is not the case in any working environment I've encountered. Instead, I've found that I'm paid for tolerance. When a manager asks me to deliver X, but a marketer suddenly promises Y, I get paid for not killing both of them. When my manager asks me to make 1 + 1 = 3, and a marketer promises a client that 1 + 1 = 6.255, I get paid for not going on a murderous rampage. Seriously - if it weren't for these wages - programmers would have a worse reputation than postal workers. We get paid to be driven crazy.