Last week Glassdoor published its most recent software engineering salary report. Short version: it pays to code. Google and Facebook employees earn a base salary of ~$125K, not counting benefits, 401k matching, stock options/grants, etc., and even Yahoo! developers pull in six figures. Everyone knows why: ask anyone in the Valley, or NYC, or, well, practically anywhere, and they’ll tell you that good engineers are awfully hard to find. Demand has skyrocketed, supply has stagnated, prices have risen. Basic economics.
But why has the supply of good engineers remained so strained? We’re talking about work that can, in principle, be performed by anyone anywhere with a half-decent computer and a decent Internet connection. Development tools have never been more accessible than in this era of $100 Android phones, free-tier web services, and industry-standard open-source platforms. Distributed companies with employees scattered all around the world are increasingly normal and acceptable. (I work for one. We’re hiring.) And everyone knows that software experts make big bucks, because software is eating the world. What’s more, technology may well be destroying jobs faster than it creates them. Basic economics would seem to dictate that an exponentially larger number of people will flood into the field, bringing salaries back down to earth despite the ever-increasing demand.
But reality has stubbornly refused to follow that dictation. Even way back during the first dot-com boom people were already predicting that American and European coders would soon be driven into the poorhouse by a flood of competition from low-cost nations like India and Brazil. But there’s still no sign of that happening. Why not? And when will it happen, if ever?
Well. I have a theory. I’ve spend the last couple of days chilling out in Chiang Mai, northern Thailand, a city where you could live like royalty and save money while making merely half of Google’s average developer salary. Which doesn’t tempt me – I prefer Where Things Happen to Away From It All – but has tempted thousands of expats who now live here. And their presence has sparked a possible explanation for this apparent paradox.
To be clear, I’m only talking about very-good-to-excellent developers. Everyone claims to only hire “A-listers,” and that may even be true of a select few companies, including Facebook and Google. (Though even B-listers and C-listers are in relative demand.) Think of such skilled engineers as emerging from the end of a pipeline which draws from the entire population of the world. Economic incentives act like gravity, pulling almost everyone down that pipe – so what are the stages that filter people out of it nonetheless?
First, you have to grow up wealthy enough to have a decent education, some exposure to technology, and the ability to choose between options in your life, which immediately rules out most of the planet. Then you have to have both an interest in and a talent for development, and there’s evidence that that talent is rare: “between 30% and 60% of every university computer science department’s intake fail the first programming course.“. Then you either have to get a good professional education – eg at a good university like India’s IIT campuses – or supplement a crappy one with home hacking or on-the-job training.
(Or maybe, maybe, learn-coding-at-home sites like Codecademy and the like–but I’m pretty skeptical about those. I’ve said before that I think think such services are like learning French from books, and then going to France and finding out that you can’t actually communicate and it would take you years to be become fluent. Programming is like English: it’s fairly easy to learn the rudimentary basics, but very hard to master.)
Regardless, all of those filters should be allowing many more people through every year. The world as a whole is much wealthier than it was twelve years ago. (That’s when I was last in Thailand. This time around it’s a different and far more prosperous place.) A fixed proportion of people may have the programming gene — though I’ll be watching Estonia’s experiments with interest — but there’s little doubt that interest has erupted. Top-notch university courses are available online worldwide, and industry-standard development tools are within reach of all.
But it’s the very last stage that matters most. Even after you’ve gotten your basic programming education, you still have to put in your thousands of hours to achieve mastery. That doesn’t mean doing the same thing again and again for thousands of hours; it means challenging yourself with new tools, new languages, new objectives. Otherwise you get people writing code of the sort I see all too often these days, when HappyFunCorp (my employer) is brought on to clean up someone else’s hot mess:
(From Abstruse Goose)
My theory that if it’s sheer economics, the lure of a better paycheck, that initially draws you into software engineering, then you’re much less likely to master it. Instead you’ll advance to the point at which you’re reasonably happy with your paycheck, which studies indicate is about $70,000/year in America. (But much less in Chiang Mai or Bangalore.) So my theory is that there are many more software engineers out there — but the ones drawn in by economic forces are content to compete with each other for mediocre (but happy-making) jobs, rather than put in the thousands of hours of mentally gruelling work required to become really good at what they do.
(Don’t get me wrong: that work is fun, too. But undeniably gruelling.)
So why aren’t there more people drawn into the field out of sheer interest? Because when you’re poor, which most of the world is, money is more important than passion. It’s not until you reach a near First-World level of development that pursuing your passions rather than escaping poverty seems like a reasonable and/or admirable thing to do. So if my theory is correct, the shortage of excellent engineers will eventually alleviate or even end, as the world grows wealthier everywhere … but not for another decade or more.
Image credit: Don Hankins, Flickr.