Programming is a popular profession due to its increasing demand. The action is required for a variety of fields such as Data Science, Computer Science, Software Development, Machine Learning, and more. In addition, programming is used — in the modern day — in practically every industry to increase production. With that being said, the compensation of an individual programmer varies based on a number of factors. Understanding the pay disparity of programming is important to achieving a lucrative career.
What is Value?
The concept of value as an economic term describes an object or service that maintains monetary worth. In modern society, value is exchanged with the assistance of currency; which is an abstraction representing some amount of resources. In other words, value describes how many resources someone would spend for an object or service.
Human needs (food, sleep, sex) will always be valuable, but software is not a human need: A person does not have a direct evolutionary urge to use software; in contrast to the urge to control hunger or sleep. Instead, the value of software is derived from technical utility. In other words, software provides technical value to a person by assisting them in achieving evolutionary tasks.
In a similar manner to The Pay Disparity of Artists, technical value does NOT necessarily correlate to economic value. To be specific, a software may provide a large amount of technical value while still being (economically) worthless; if people are unwilling to use it unless it's free.
Technical Value vs. Emotional Value
Technical value can be better understood through its contrast with emotional value. While emotional value invokes an emotion (feeling) in a human, technical value provides utility for a human. In a similar manner to any other economic concept, this distinction is not black and white: It’s common for products that provide technical value to also require an amount of emotional value (marketing) to be economically valuable: There is a reason that people prefer the search engine of Google over DuckDuckGo.
As an example, a product that produces technical value is a hammer. It’s a physical object that you can use to build things with, or bash people’s skulls in. An example of an emotional product is a song; albeit that anyone in the music business would state that music isn’t a product (in terms of profitability). Yet another example of a product that involves emotional value is advertising, which is the practice of bringing attention to an objective. This is significant because advertising and networking — which people recommend to job searchers — aren’t much different from each other. More on that later.
The Value of a Star
Does software provide emotional value? It can. GitHub is an internet hosting service for software development and version control, but it also contains numerous features related to social interaction. The stars feature is documented as one that allows you to keep track of projects that are interesting, but GitHub uses stars as a key mechanism for project discovery (advertising). If technical value was all that mattered for a project to be considered interesting, one would imagine the most starred projects to be those that provide the most utility. Yet 8 of the Top 10 Starred Repositories are focused solely on informational content.
The remaining projects being Vue and React at spot 9 and 10 respectively.
The reasoning for this phenomenon is simple: Informational content receives more interest — in relation to the complexity required to create said content — because it’s applicable to everyone; especially the unknowledgeable. Such that these “less complex” repositories — which contain no application code — are more interesting to the public. Isn’t information technically valuable? Sure. Yet no one is paying for those — Top 8 — libraries for their technical value: It’s sponsorships all the way down. And I wonder why someone would sponsor a product…
Critics will argue that “marking something as interesting” does not involve emotional value, but that’s not the point of this discussion. More so, it highlights how programmers are NOT solely paid on the technical value they provide (for better or for worse). Thus, the phrase “build it and they will come” does NOT apply to technical value, such that there is an amount of emotional value involved in a programmer who receives payment for their work. While getting a job isn’t the only way to derive economic value from programming, the assertion from the last sentence is especially applicable to job searchers, who are told to create projects to secure a job.
The study “Functional Value vs. Emotional Value” concludes that the following hypothesis is upheld: “Emotional value, rather than functional value, contributes more to brand preference. However, the functional value is never unnecessary.” This would align with studies on the hiring of programmers, which indicate that a programmer is expected to perform well on technical tests, but also must maintain social skills. In other words, failing a technical interview will eliminate your opportunity for a job; while poor communication will not. However, passing the technical interview doesn’t guarantee that opportunity either.
Programmers are not solely paid on the amount of technical value they provide.
The Cost of Technical Value
Market capitalization is the total value of a publicly traded company. By analyzing market capitalization, you will understand that providing technical value — as an aggregate — is much more valuable than providing emotional value. Four of the Top 5 Companies (by market capitalization; worth ~$1T+) are advertised as tech companies due to the large number of programmers each employs. As a whole, the Global Tech Industry is worth $5.2T. In contrast, the market size of the Global Media and Entertainment Market is worth $2.2T; or roughly equivalent to the market capitalization of Apple.
Despite these facts, I believe that most people — given the choice between a $5 Burger and $5 Virtual Machine with 1 vCPU and 512 MiB RAM — will choose the $5 Burger twenty-nine times out of thirty in any given month. Digital Ocean does too with their $5 Droplets, but you don’t have to worry about making that decision: Sign up to Digital Ocean with this referral link (https://m.do.co/c/9d1115abd57c) and get $200 in credit over 60 days. Regardless, the market capitalization of the Global Food Service Industry is only worth $2.3T.
Google, Amazon, and Microsoft offer their cloud services for free. Do you think they do this out of the kindness of their hearts? Absolutely NOT! The reality is that people do not value small ticket technical products as much as small ticket products which cover a human’s needs and emotions. More important is the fact that most people would not be able to generate more technical value with extra computers in the first place. Go ahead and attempt to prove me wrong. That link is still in the above paragraph…
Software is only used when someone sees a benefit in its use: That utility is what programmers can create.
Supply and Demand
When we discuss supply and demand in relation to programming, we specifically refer to the supply and demand of a programmer's time. The current trend for the supply and demand of a programmer’s time supports the Lump of Labor Fallacy: Instead of an increased supply of programmers in the market decreasing the amount of work available, more programming jobs are needed (to develop more software). In other words, more programmers are needed as programming becomes “easier”, which warrants more programmers… A recession may cloud your perception of this fact, but the numbers don’t lie.
Programming is not a zero-sum market.
Expectations of the Demand
Providing technical value as a programmer is objective to the end user. While most programmers understand that there is a difference between the quality of an amateur and an expert, end users — who pay for technical value — do not (care). As an example, a person does not consider technical debt when a choice is made between Amazon or eBay. In a similar manner, that user will not use a product simply because "it can add more features faster".
Is Math Important in Software Development? It's as important as a construction worker's need to understand materials science. Take what you will from that analogy. Yet many end users (companies) who hire programmers will use math-based degrees and questions as a measure of determining programming ability. In fact, with the exception of freemium models, it's rare that a programmer is hired for work they have already provided to the hirer (end user, company).
In any case, it’s not uncommon to maintain high quality Open Source Programming Projects, ace a Data Structures and Algorithms interview, provide a masterclass in System Design, use the Team's Tech Stack, get along well with the Hiring Manager, and still get denied due to a “lack of experience”. That’s another article for a different time.
In other cases, you will not be hired unless you maintain a specific credential (degree, prior job, old age, etc). The significance being that these factors — unrelated to the amount of technical value one provides — are a large part of how much a programmer is paid. Thus, most programmers who earn economic value from their work are NOT paid based on the amount of technical value they provide, BUT rather the amount of technical value someone else thinks the programmer will create.
What's the best way to influence a human to buy a product? That's marketing (advertising, networking, etc). How many iPhone users can list the specifications of one? That's the point. You won't earn a higher compensation by creating more projects. Instead, you should be working to increase the awareness and perception of your product. Retention only matters when the sale is secured.
For the most part, this article applies to both individuals and businesses. In fact, in the context of a business, many would even consider this information — to market your product — to be common sense. Yet individuals commonly give out advice that perpetuates that working harder is a sole solution. Visit any job discussion forum to see users who cannot get jobs get berated for various irrelevancies.
What's the best way to get your foot through the door? Lie. Companies do it all the time. Tesla promised self-driving autonomous vehicles. Listerine claims that mouthwash is as clinically effective as flossing. Then, there's entire sales departments out there who have no issue doing what it takes (lying) to secure a sale. There are many ways to do this as an individual. The most deceptive would be stating that you went to Harvard (30% legacy admission rate) for a Masters in Computer Science, claiming that you worked at Google for a number of years, and (statistically) presenting as a white or asian male. Just don't be surprised when you start getting calls back from recruiters.
And don't get mad at me if it backfires on you.
As for what technical skills to include? It literally does NOT matter. There are countless engineers out there who were hired with "0 knowledge" of the programming language they use on the job. How did these people get the job then? Networking… or by being a fucking liar… or maybe because providing technical value has little correlation to how much you are paid (as a wagie) compared to credentials.
The Real World
Are high paid programmers better at their jobs? Let's use two well known programmers as an example to showcase the pay disparity of programmers in the real world. Fabrice Bellard is a French programmer known for writing FFmpeg, QEMU, and the Tiny C Compiler. Russ Cox is an American programmer known for working on Plan 9, and the Go Programming Language. Both of these programmers create economically worthless software. This isn’t a matter of opinion: No one pays for FFmpeg or QEMU and Go is free to use. However, one could argue that Google pays for the creation of Go, which gives it economic value.
The pay disparity between Fabrice and Russ is based on the fact that Fabrice earns money through awards and has founded a business, while Russ earns his money through income and stock ownership. As Fabrice’s Amarisoft is a private business, there is no way to know exactly how much he makes. However, we can use speculation to assume that he has earned less than $5 million from it. In comparison, Russ Cox is a Distinguished Engineer at Google which earns approximately $650K - $1000K (1 million) a year.
Both people work on impactful software: Is a programming language that other developers use to be productive more impactful than Fabrice’s accomplishments? Any comparison would be debatable since both people work on teams of a different size. Yet in any case, no one is being paid directly for their technical value. While Fabrice can theoretically do the same amount of work Russ Cox does, he isn’t paid as much because the market — composed of many humans — doesn’t believe he can. Before you argue over semantics, remember that actions speak louder than words: At the end of the day, Fabrice (likely) earns less than Russ.
Both people are not superhumans: There are 24 hours in a day. Such that each person is restricted to the amount they can work each day. Each person focuses their efforts on different tasks and one of them has focused more time on an economically valuable task: The amount of technical value provided by a PhD can be debated, but it has allowed Russ Cox to earn more per year. Thus, the payment of a programmer doesn’t necessarily indicate more output. More so that other people believe that high paid programmers produce a high amount of output.
The difference between a poor and a rich is rarely the amount of time spent working. Well…
What is the Point?
Hired programmers aren't valued by how much utility (technical value) they provide or how many of their creations reach end users (impact). Only by how their achievements — which may involve technical value — are perceived by others. The income of a hired programmer is based on a value defined by its owner, rather than the people who use their software. The owners' of most programmers are companies, which are simply groups of people working towards a common goal. Thus, the payment disparity of a programmer is often determined by that programmer’s network.