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.
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.
Some of my most "productive" days have resulted in a net deletion of many hundreds of lines of code. Mostly this is cleaning horrendous cut & paste jobs, and refactoring APIs to dump buggy, unnecessary functionality. That one day of effort probably saves weeks of bug-hunting and spaghetti-unwinding further down the road. It would appear to be negatively productive by any naive metric.
I'd argue coder pay should be proportional to productivity. It's just that there's no shortcuts to measuring a coder's productivity.
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(_).
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...
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
The most productive programmers are orders of magnitude more productive than average programmers.
There, fixed that for you.
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).
Programmers cannot be measured by any simple metric -- this is true. It's been debated ad nauseam for years.
Still, I don't see why the hell people are trying. Quotas and flat numbers measuring simply by "production" are always stupid things in the long run, just as they were in factories.
In software, they'll cause the same problems that they did at brick and mortar factories before TQM principles were established -- people fearing the data and fudging it in desperation. If this is counted by, say, lines of code produced, you had better believe it will be written in the strangest manner possible in spite of defects. But with any quota/by objective system in place, no teamwork will take place -- they'll all be concerned about their own numbers or even hurting others. No one will experiment or come up with ideas and find any process improvements.
And the person who actually does a good job in realstic terms may not compare to someone who skewed the numbers objectively to feed their kids. This will not give them any pride in their workmanship and will be a serious demotivator, if not burning them out entirely from cynicism about their profession.
What's the alternative? Judge the programmers based on quality. Have the team define what quality code is, both what's good and what's bad, and attempt to try to find ways to measure that. All of that's going to be in the eye of the beholder and specific to an organization, as not all programming projects are the same. This is all part of greater total quality management principles, but...
I expect 99% of the programmers who read this article consider themselves to be in the unnoticed uber-programmer category.
And probably more like 5% of them actually qualify.
I, of course, am in that 5%. But you probably aren't. Because you aren't me.
What is efficiency?
Delivering a 100% perfect product 3 months late?
Delivering a 99% perfect product 1 week early?
I've always been a firm believer in the 80-20 rule. (Keep in mind its kind of like the rule of thumb, so it wavers a bit). You can achieve 80% of a programs functionality with 20% of the effort. That's 20% of bugs, which is alot, but in the business side, its only 20% of what it would take to be perfected. Most people agree thats a decent trade off. Thats where you should set the first goal post. Once you reach that goal post, something might have come up. Perhaps you'll want to work on new features that clients have requested. Bam, another 80-20 you can fire off. If there isn't anything else to add, work on reducing those bugs.
The hard and cool stuff have not already been done. Not even close.
2009 was a great year for software and technological advancement.
We're still scratching the surface on things like scalability, a real network friendly filesystem, UI (multitouch, iphone, etc).
The old conventional thinking 30 years ago is being contested by groups like NOSQL.
Our ideas of Operating Systems are changing, even the definition of 'servers'. Look at commonjs.
No, we haven't even started yet.
Cheer up, join different open source groups (if your existing ones are stale), start contributing in different ways.
Easier to teach an engineer how to be a business man, than to teach a business man how to be an engineer.
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
All great points. There's also one possible effect that is even harder to measure (perhaps impossible) and that's morale. You can watch the slower worker all day and not realize that he's the one that's keeping all the other faster guys happy and doing good work at a good pace.
There is no -1 Disagree mod. Slashdot.org/faq defines mod options. USE IT.
It's just that all the hard (and cool) stuff has already been done.
The same was said around 1900 about physics. And really QM and relativity are just unimportant minor corrections to existing theory, arent they?
I actually like a lot of the .Net framework and related architectures myself. It is a bit bloated, but not too much more so than other frameworks, and does offer a lot to productivity over lower-level constructs.
Michael J. Ryan - tracker1.info
Reminds me of the good old days of consulting, when a consultant was actually consulting... now "consultant" is just a code word for a "temp".
Yeah, this thread is full of those "primadonna programmers", who want to believe they all are so much better than the average. Let me get this straight: I will not hire you or your kind. The good programmers are the ones that provide value for the company. They are professionals, and can be a bit hard to find.
* Primadonnas whine about choice of language, environment, platform, bloat, speed, coding standards etc. A professional just does the job he is told to do.
* Professionals understands the business' needs and priorities, and act thereafter. Primadonnas don't.
* Companies don't fail because of slightly buggy or slow programs. They fail because of bad marketing, time to market or a bad business plan. Code quality is not that important. So the primadonna mad skills are not worth nearly as much as you would like to think.
* Primadonnas often have a misconception that code is somehow art. Newsflash! It isn't. Coding is just creating classes that fit together to form a product, and real professionals know that.
* Real professionals don't have any opinions on using others code, letting anyone else change in their code or even abandoning their code. Primadonnas are often territorial of their code, and are reluctant to use code written by others (esp. 3rd parties).
* Primadonnas often spend time "thinking" (i.e. facebooking, surfing etc) and codes like 25% of his time and goofing off the rest. A professional comes in, works the day and leaves.
* I can admit that code written by primadonnas can be well thought through, but code designed by a professional isn't that far after. Apart from the pro churning it out immediately and the primadonna "thinking" about it the whole day first.
* I also agree that a tie isn't always necessary for programmers. However, a professional often wears one just to show that he is a professional to distinguish himself from the primadonnas, and because he wants to be taken seriously.
I could go on all night, but you primadonnas around here: stop whining and start behaving like real pro's. You might get promoted that way, get a raise or at least not be the first to be laid off. Get off your high horses.
We can debate the relative merits of the real value of the minimum wage at another time but, in the interim, in the interests of accuracy, for a slightly less anecdotal analysis of the relative value of the US dollar, see MeasuringWorth.com (which suggests $8.48/hr as an equivalent minimum wage, not $17.50, based on the consumer price index). That's a lot closer to par.
I believe most economists suggest that the CPI slightly-overstates inflation by failing to make any adjustment for increases in product quality (things squeezable ketchup bottles instead of glass, or music on an iPod instead of a Walkman, or safer cars less likely to kill you in an accident).
The World Wide Web is dying. Soon, we shall have only the Internet.
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 think the point is, that those more recent theories are a lot more complex than the previous ones.
Same goes for programming; in order to stand out amongst the crowd, you'll have to create something much more complex than you would have some 20-30 years ago.
Most of us could have invented the sorting algorithms we use. Most of us could have invented the data structures we use. Most of us could have invented a lot of stuff that made other people famous some 20-30 years ago. I know I "invented" some algorithms only to find out later that other people had already linked their surname to it decades before.
Slashdot social media options: AIM, ICQ, Yahoo, Jabber and Mobile Text. Why no MySpace?
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.
8000/40/4 = 50.
Typing was hardly the bottleneck. In fact I bet there was quite a bit of staring into space.
people get paid in proportion to how difficult management perceives replacing them is. In this, coding is no different than most other jobs.
This posting is provided 'AS IS' without warranty of any kind, implied or otherwise.
> 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.
I'll go even further. I have the privilege of working from home / running my own outfit.
I frequently simply go to sleep if I feel like it. For a while I felt guilty about this, but the reality is that I usually only doze for 10 minutes or so and when I wake up I have 5 solutions sitting in my head for what I need to do next. I'm not sure how or why it works, but I can struggle through a whole afternoon feeling sleepy and doing mediocre work or I can take a 10 minute nap and be a rock star for an hour ... so I do. I wish this was accepted practice in workplaces because I'm sure productivity would rise overall.
You are thinking about how the corporation faces the outside world. I'm thinking about the internal organization. Dealing with the government or laws (within reason) isn't an issue.
I've seen departments within a company misappropriate millions of dollars of their budget. Was this fraud? Theft? Nope. Not as seen from the outside world (law enforcement and the court system). Its was all internal funds, spent (as far as the legal system is concerned) on legitimate company programs. OK, so they were the wrong programs, but if the BOD doesn't want to deal with it, its a non-issue.
Capitalism with competition? Forget about it. Very few companies (note that I didn't say 'none') have competing internal departments. Its all done based upon committee decisions, annual planning, centralized control. Just like the old Soviet Union with its 5 year plans and bureaucracy. One outfit I worked for had an internal funding scheme wherein departments 'purchased' services from each other. Management figured that this would encourage innovation. Our IT department had a price list for servers. $40,000 per month per server. We needed 6, but we (actually, I) were going to administrate them ourselves. So, could we get a discount? Nope, still $40K each. Our management didn't care, as they'd just turn around and put an additional $2.9 million into their annual budget request. Pointing out that in The Real World, co-location rack space would cost a small fraction of this amount didn't matter. Its not real money. And yes, I offered to quit and provide 6 administrated boxes in a server center for half that price. No takers.
The problems you allude to, of the corporation's relationship with the public, arises when people who think like socialists sitting at desks on Mahogany Row every day have to switch mental gears in order to deal with external markets. I never saw more tears than those of our company execs when the Soviet Union collapsed back in the '90s.
Have gnu, will travel.
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.
"Conditions at hand" can be and often are, illegally, deceptively, or destructively manipulated. If you even imagine that I'm kidding, look at the history of child labor, indentured servitude, diamond mining, or the music industry to see how workers have been abused to focus wealth in the power of a select few.
The worst programmers I've met are the ones who are heads down and program. They are usually very arrogant and think they are gods. Case in point, there's a guy I currently work with who is a disaster. People are in awe of him because he will work until 4am and has improved the performance of our application 100-fold.
The problem is that during the design phase, he completely disregarded all of our design recommendations and did things his way. It turned into a complete disaster, with nothing working as it should, deadlocks and complete lack of scalability, etc. So yes, he worked until 4am to improve things and did improve the performance from the initial disastrous numbers, but it was all his own fault! As well, because he was so arrogant and stubborn, he ended up producing something that no one wants anymore because the interface is too abstract and hard to use. Now, our the product is being shut down before it has even launched, because we couldn't convince any consumers to "wait until the next release" to get it to do what they actually want. All the fellow programmers think he's an asshole, but all of the managers who don't understand what he does will undoubtedly promote him.
The best programmers are the ones who keep it simple, design things excellently and program it once, with maybe a couple of iterations of performance enhancement. I've met plenty of brilliant programmers in my time, and these are the key traits that they exhibit. The "brilliant", nerdy programmers that heads-down program are rarely any better than a smart, easy-going programmer that both works hard and spends more time listening to their customers and making common sense design decisions.