The Myth of the Commodity Coder
Do you ever feel like your company treats you more like a commodity than a knowledge worker? Read on for some advice on how to break out of this trend.
Join the DZone community and get the full member experience.Join For Free
There seems to be a common misconception that software programming is a skilled labor vocation, rather than a specialized or professional career. Many employers seem to assume that once a person has a degree in "computers" they can suddenly write software as well as anyone else.
In effect, companies see coders as commodities. By definition, a Commodity is:
a basic good used in commerce that is interchangeable with other commodities of the same type. The quality of a given commodity may differ slightly, but it is essentially uniform across producers." ( Investopedia)
In economic theory, commoditization of a good or service causes the price of a commodity to very closely follow the supply and demand of that commodity with little room for differentiation. Use, value, and availability become the key factors of price rather than quality or skill.
Many companies sort software programmers (coders) into three basic categories:
Entry-level/Junior (Software Developer I)
Mid-level (Software Developer II)
Senior (Software Developer III)
Based upon data from salary.com, there is a 33% bump in median salary from Entry to Mid and a 24% bump from Mid to Senior. The Robert Half salary calculator shows a 60% difference between the lowest and highest salaries in the range (for my region), which is consistent with the salary.com data. Within each category, there is an approximate 60% difference between the top and bottom salaries.
What this data seems to indicate is that employers value top-level coders only 60% more than entry-level or less-skilled coders. While a 60% price discrepancy would be significant in a commodity market, if there is even a 2x - 3x difference in productivity between coders, it indicates that prices are not based upon quality or quantity of output.
Coders Are Not a Commodity
In my experience, using both qualitative and quantitative measures such as task completion rates, error rates, code quality, and independence, I have seen that exceptional coders outperform average coders by roughly 10x. These exceptional coders not only produce more code of higher quality, but they work more autonomously, provide solutions, generate additional value, and maximize the impact of everything they touch.
In an earlier Google+ post, Moral Hazard At Play, I made the following assertion:
The next time you see software developers playing video games at work, understand that they are probably delivering a much higher quality of software than the programmer that is constantly working overtime.
The idea is that there exists a level of programmer so exceptional that they achieve not just 2x - 3x improvements, but 10x improvement in quality. If this is true, it means that coders are not a commodity, but that they are being priced as such.
Supporting the argument for differentiation, Cory House describes what he calls an Outlier Developer, and he has a website and Pluralsight Course dedicated to this topic. Cory isn't so much focused on increasing output as on differentiating yourself from other developers. This is very important, and I hope you'll check out his work.
But even this doesn't quite do justice to the vast discrepancy that may exist between two coders. In June 2014, my friends at The Daily WTF pointed me to an exceptional article, Norris Numbers, by Lawrence Kesteloot. The article describes several barriers programmers may hit throughout their career as they develop their own skills and learn new techniques.
The premise is that each time a coder crosses a barrier they become roughly 10x more capable as coders still stuck behind that barrier. The assertion here is that there are coders who are 100x more capable than an average coder. Some may even be 100x more capable than an exceptional coder.
If there is a 10x - 1000x difference in output or quality between coders, then they are simply not interchangeable one for another and are therefore not a commodity.
There are some epic programmers among us that practically defy description with their feats of programming genius. You know this "big data" thing you hear so much about? You can thank Jeff Dean and Sanjay Ghemawat for their work on BigTable and MapReduce. Enjoy playing First Person Shooters? Thank John Carmack.
Did you know that the Human Genome Project remains in the public domain only because it was completed ahead of a competing private project, largely due to the efforts of a single man, Jim Kent? And in 1995, Daniel Bernstein released qmail for sending email, possibly the most stable and secure software ever released with only 4 defects reported in 19 years.
It's pretty clear that coders lose out when they are treated as interchangeable, true or not. But make no mistake - this is only half the picture. Even though they may not have an impressive salary, many of the epic coders have a net worth that is 10x - 1000x that of an exceptional coder. For instance, Linus Torvalds (creator of Linux) has a reported net worth of $150 million, while both Mark Zuckerberg and Bill Gates are renowned billionaires. The message here is that for some coders, entrepreneurship is an excellent alternative to employment.
The Real Commodity
The real losers of coder commoditization are the employers. If they could hire one developer for $250k and replace 10 developers at $50k each, they could save $250k/year and not only be more agile but produce software with fewer defects. By ignoring this reality, by offering similar pay and benefits as other companies, they fail to differentiate themselves.
Major employers of coders are rapidly becoming commodities themselves, at risk of being fully interchangeable with one another. The proof of this is in employee tenure, where companies like Amazon and Google are ranked near the bottom of the Fortune 500 for employee retention, along with insurance and retail companies which have a historically high turnover.
If you are a coder, go the extra mile to keep your skills sharp. Don't just work on technical skills, but on "soft" skills such as communication. Find ways to differentiate yourself.
If you are an employer, don't be afraid to offer your exceptional coders exceptional salaries and perks. Differentiate yourself by listening to your top coders and giving them input at all levels of your organization.
Published at DZone with permission of Michael Dowden, DZone MVB. See the original article here.
Opinions expressed by DZone contributors are their own.