Why programmers are not paid in proportion to their productivity (2009)
johndcook.com
johndcook.com
The military periodically runs war-games, in order to assess the effectiveness of various tactics/strategies/leaders. I wonder how much we would learn if the major tech companies periodically did the same thing. Come up with a complex task, spin up multiple groups to work on it in parallel, and examine what exactly each group does and how well that turns out.
Unfortunately, in the long run this decreases morale because you don't know if the project you are working on will ever be used
Yep, we've seen that with their messaging platforms.
[0] https://www.goodreads.com/book/show/7090.The_Soul_of_a_New_M...
It's not clear to me what you mean by getting credit. I'm usually one of the 1-2 "go-to" people on my dev teams. I'm recognized for it constantly. I get comments like, "I wish you were on all our projects." Meaningful financial recognition is less common, but I occasionally get nice bonuses. FWIW the things I regularly get credit for have little to do with code quality. The things I get recognition for are bringing disparate teams together and leading them to solve complex problems. I can only recall having received 2 compliments for my coding ability, by other coders, in almost 20 years of professional coding.
> Here's my time sheet filled out in increments of fifteen minutes.
> As usual, I coded the useless hours spent in meetings as "work", whereas the time I spent in the shower designing circuits in my mind is "non-work".
I'll take an average coder who only codes what is needed over a brilliant one who is constantly going down rabbit holes unnecessarily.
Ha, sounds like an oxymoron
I think these guys are totally capable of thinking big picture, but they are often just not in that 'mode' and hence the tendency to inadvertently find themselves writing code that if they took a breather and sat back and re-evaluated, probably wouldn't write.
But it's definitely not an oxymoron to say that some brilliant coders can go down rabbit holes at the expense of their own (and company's) time and productivity. They may spend lots of time reading white papers, improving a design/implementation/test-suite beyond what is required, etc. It's just these coders don't place a high value on being as efficient as possible from a PM's perspective, but might be able to solve a problem 10x as difficult as the guy who is closing his tickets within hours of assignment.
At times it really is better for everyone to just move on from a comfortable position and stretch your wings as it where.
> "I divide my officers into four classes as follows: The clever, the industrious, the lazy, and the stupid. Each officer always possesses two of these qualities.
> Those who are clever and industrious I appoint to the General Staff. Use can under certain circumstances be made of those who are stupid and lazy. The man who is clever and lazy qualifies for the highest leadership posts. He has the requisite nerves and the mental clarity for difficult decisions. But whoever is stupid and industrious must be got rid of, for he is too dangerous."
Nothing more dangerous than a smart but bored developer.
The largest source of your tech debt may in fact be that brilliant one writing volumes of code destined to become the collective headache of future dev teams.
One of the best pieces of advice you can give to a young developer is to learn about the tools already available on the operating system and how to build solutions by composing them via scripts.
It was really only after being a few years into a job where the primary development environment was OpenVMS with a crusty old manager that knew DCL inside and out that I fully understood - and boy oh boy did people think I was some sort of freak 10x developer when in fact I was just writing a few hundred lines of C to fill in the gaps between what I could get for free.
I really hate developing on Windows, but PowerShell is an amazing tool (I saw an interview with the creator who said that he started trying to do a UNIX-like shell but gave up when he realized that it just doesn't fit in the Windows paradigm. So he modeled it off of VMS. If you want PowerShell to act like bash, you're doing it wrong). The pipeline is passing around full .Net objects and the feature set is amazing. If you program Windows for a living and don't learn PowerShell, you're missing out on a lot of free productivity.
Lately, I've been using Linux more and am all in on shell scripting. I am following some advice I got to explore man pages more frequently and it is paying off. I even found an old System V printed manual and sometimes flip through it, finding random commands that I had no idea existed and thinking about how I could use them.
Once you do tutorial and learn the rules for going between shell and python, it's super easy to slice and dice.
I have always disliked that moment of "yes, a shell script is probably the best tool for this job" that then leads me to banging my head against bash syntax for an hour. Python libraries like `sh` are great, but still a little high overhead. Now the twice a month I have to shell script I find to be pretty fun, and I'd highly recommend xonsh.
Great PyCon 2016 talk on it here: https://www.youtube.com/watch?v=uaje5I22kgE
We have a 20x (not a 10x) programmer. He closes literally 20 times the number of issues that other programmers close for a given time frame. Plus, his issues are almost always fixed or completed properly without needed to be re-opened. So, his actual throughput is greater than 20x that of others.
He is good at what he does, better than almost everyone else put together. I don't care if he goes down rabbit holes, spends 90% of his time walking down the hall mumbling, or if he sits in the break room staring into space. His salary is higher than others in the same role, but not 20x. He wins and we win.
When you ask him, he just shrugs and says he does his job.
A couple of years ago, I spotted a latent bug in a piece of core infrastructure software that would have caused a lengthy world-wide outage of the company when triggered. I can see that that saved the company at least $10M. But how can managers/HR/etc measure such effects? And how can you account for it in compensation, even if you wanted to?
Programmers--like many other professionals--are simply paid the least possible needed to keep them in their seats.
A cynical view might be that in larger companies, the goal setting only materializes as dollar values higher up the chain so that they can benefit from that negotiation leverage.
A less cynical view is that business-speak and goal setting naturally abstracts away from money as you try to manage larger goals down a chain of people.
I wonder if the best advice now is simply put your impact in non-monetary terms in your resume.
Be prepared to back it up in the interview.
Being able to demonstrate tech cost savings in monetary value is a very powerful skill to have come negotiating time.
Nobody wants to do any grunt work. So everything turns into an overly automated nightmare.
So on the contrary one could argue that they are cheaper (yes ;)) but also can learn something new. Also I think that very junior people bring some kind of enthusiasm into teams. I guess the right mixture must be there.
I have done this since I started learning to program, which is only 4 years ago. I have been able to complete many tasks quicker than my co-worker. I always assumed I was going about it lazily and not working hard enough compared to him.
My boss believes I quite productive and gets things done efficient and correct, so I kept doing these practices and only writing code that needed to be written from scratch.
I supposed my intuition wasn't wrong - even though it felt guilty.
Because the 10x Programmer is a pernicious myth.
Even if you believe the original study from the '60s, it found that the best programmers were 10 times better than than the worst programmers, and only 2-3x better than the average.
1> I feel I can safely say that I am more productive than the median programmer, as are probably a majority of visitors to Hacker News
2> I am aware of many famous programmers who are more productive than I am by at least an order of magnitude - probably two orders of magnitude.
What about in algorithm development or research? Could an average programmer invent quicksort, dynamic programming or information theory if transported back to the mid 20th century?
There is >10x productivity in scientists or mathematician using many kinds of metrics (papers, citations, awards etc)
I think many could have yes, had they been in the same academic environment as the people who invented those things. It's amazing what normal people can acheive when they are isolated from the noise of modern corporate work environments and given the resources to focus on a problem.
Binary search is a great example because it's so simple and yet it's so easy to implement incorrectly. In Programming Pearly, Jon Bently shares how, over the years, he asked hundreds of programmers to implement binary search after providing them with a description of the basic algorithm. He gave them a very generous two hours to write it, and even allowed them to use the high-level language of their choice (including pseudocode). Surprisingly, only about 10 percent of professional programmers implemented binary search correctly. (Beautiful Code, p. 87)
And there’s a lot of easy-sounding ways to “measure” quality that actually suck (e.g. “number of bug reports” says nothing about the kinds of bugs, and might encourage people to create micro-bugs to inflate numbers or mega-reports to make them smaller, depending).
Because of that a salesman or a manager or even a taxi driver will always be able to walk over them, and "twist their arm" in a social sense.
So do we expect introverted nerds to stand up for themselves and ask for a fair wage???
The company makes the code valuable.
Programmers are paid based on supply and demand. It's a completely different measure.
It would take a team of scientists and analysts to properly measure how much value each employee creates (and even then, probably wouldn’t be 100% accurate).
If you can’t even measure how much each employee’s contributions are “worth” to the final product, how the hell are you supposed to pay people based on those metrics?
The answer is, you don’t.
So if you want to get paid more, don’t worry about creating more value, worry about increasing your leverage. Form a union or guild, learn a skill very few people have, form close relationships with your customers, etc.