Young people are flooding into computer science programs. Working as a software developer, or tech worker generally, is seen as an easy path to a high salary. In spite of this, it’s clear that above-average software developers are underpaid compared to the value they bring to organizations.
The range in productivity of developers is HUGE. If we consider the productivity of an average developer, it’s easy to find a good developer who is ten times more productive. Superstar developers can be 100 times more productive. Mediocre or poor developers have a negative value, where they drag down the team more than any value they contribute. In spite of this, good developers are not paid ten times more than the average salary. This provides a huge opportunity for anyone who needs tech work done.
Software developers are about as far from a commodity as it’s possible to be.
Beyond the productivity of individual members, as a development team gets larger, productivity gets sucked into communication between members, lowering the value of each additional developer and making it more important that each is highly skilled. For large organizations, it is essential that the average ability level of their software developers be as high as possible. A good developer can be overwhelmed by a group of mediocre co-workers. The Mythical Man-Month details software development projects that came to a halt – it became impossible to make progress, mainly due to additional programmers being added to the project.
One big consequence of this is that any organization that “bargain hunts” when hiring developers is almost guaranteed to have a mess. Some developers don’t know their value, but if you’re hiring the cheapest worker you interview, you’re likely to get mediocre or poor developers. You’ll often see this in university IT departments, where there’s a culture of incompetence that results from hiring a bunch of inexpensive system administrators. The only place I’ve worked where this wasn’t true was at a world-class tech school where the IT department was made up entirely of former students who liked the work they were doing while they were students well enough that they never left.
If, during an interview, you get questions about how cheaply you’ll work (even “What’s your expected salary?”), that’s not a job you want to take. The organization is focused on hiring inexpensively, rather than doing everything possible to get good developers.
If we have two candidates who want to work for us, one is a 1x developer who will work for $80k and the other is a 10x developer who will work for $120k, many managers would push to hire the cheaper dev at $80k. Viewed on a productivity basis, the 10x developer is actually FAR cheaper ($80k per productivity unit versus $12k per productivity unit, ignoring any costs for coordinating a larger group). If you had a superstar (100x) willing to work for you for $160k, they’d be an even better deal at $1.6k per productivity unit.
Working backwards, you might reasonably ask if I’m claiming that a superstar is worth an eight million dollar annual salary ($80k * 100). Yes, this is closer to the ballpark of what they’re worth. Very few developers, unless they have stock options that pay off, are earning anything close to this salary. In his classic essay “How to Make Wealth”, Paul Graham convincingly claims that a great programmer can add a million dollars of value in a couple of weeks. Paying them eight million dollars a year is a good value from this perspective.
The FAANG companies pay about double the market rate to get the best developers, which is a STEAL for them. They could be paying FAR more than this and still come out way ahead, which is why they have anti-poaching agreements with one another and collude against their workers. This has created the environment where software developers who know they’re worth more have to start their own companies to capture this value, which is exactly what they’re increasingly doing.
Some organizations might be confused by this. Am I really suggesting that the 8 person IT department at the college be replaced with 2 better people at a higher salary (but overall lower cost)? Yes, that’s exactly what I’m suggesting. And the outcome would be a far better run IT department offering better service to the community they take care of.
But does this mean the average developers would never get hired? Should only the highly skilled software developers find work? No. First of all, if the world understood this, wages would shoot up for the more skilled developers. Eventually, it would hit a point where hiring lower-skilled workers would make sense. Also, some technical work isn’t challenging, and mediocre tech workers can do that. I had friends who would build out websites for clients that were all very similar and based on the same technology. You don’t need a superstar to do that.
Interestingly, often the superstars can reimagine how to do boring work such that it’s fully automated. If someone could do that for you, that could completely transform a business – well worth paying a premium for.
So why isn’t everyone already taking advantage of this? Non-programmers don’t believe it. The non-programmers who run companies and manage groups want “good developers”, but they want them cheap. In the end, it’s easy for them to hire someone cheaper who they find to be equally “nice” without being able to compare their performance. Standard interviews and hiring are TERRIBLE, they’re more a test of politeness, conscientiousness, and patience than technical ability. People who have actually done software development understand and believe there’s a massive difference in performance. Any member of a technical team, if they were being honest, would be able to categorize which programmers were better than them and which were worse. It’s hard to do this in an interview, but very easy to do after you’ve worked with someone.
If an organization wanted to take advantage of this, the first step would be to ruthlessly cut dead wood – poor developers who were hired cheap. Use those savings to get the best developers you can, paying what you have to to convince them to work for you. Referrals from existing developers (ask them who was the best programmer they’ve ever worked with) would be a good place to start. Since good software developers are seldom on the job market, I wouldn’t even try to test or evaluate them in an interview. You want to remove every barrier possible to convince them to work for you. If you trust the recommendations from your current employees, focus on convincing them to come work for you instead of putting them through a humiliating dog-and-pony show demonstration.
If you HAD to interview someone and couldn’t just hire based on a referral, I would structure the interview to be as close to doing the job as possible. Bring them in for a day and work on the current projects the team is working on. Alternatively, hire them on a (highly paid) short-term contract leading to (highly paid) full-time work.
After writing this post, I published a short (9k word) book on Amazon about how to negotiate a job offer. It isn’t specific to software developer job offers but is an easy, fast read that should have some helpful information and is an excellent starting point for someone who wants to negotiate but doesn’t know where to start.