When electricity and plumbing were new, electricians and plumbers had high-tech jobs on the frontier of booming new technologies. They're still great steady work, but somehow we revere (and pay) the people creating strange new electronic (and perhaps hydraulic) systems more than the people keeping our existing critical systems alive.
We’ve barely begun to figure out what we can do with computers, but that doesn’t mean that programming is an endlessly lucrative field everyone should enter now to get rich, rich, RICH! I tend to forecast a future where a tiny number of people work on creating genuinely new programming logic, the kind of stuff that CS departments dream of, while a much larger number of people work on all the less glamorous projects that look more like wiring or plumbing.
While we like to talk about processing data, much of the reality is in storing and transferring data. The Internet isn’t a series of tubes exactly, but data flows are pretty similar. The much-missed Yahoo! Pipes understood that. IFTTT provides app-specific logic to content flow. APIs built for non-programmers push that to an even broader audience. Libraries like KinomaJS extend that to the physical world through hardware.
Calculation, the founding work of much of computing, has largely disappeared into software people don’t credit as programming. Think about all the programming jobs abolished by spreadsheets - even some pretty sophisticated ones!
Meanwhile, the core group of people needed to create and maintain these ever more powerful tools continues to shrink. The classic example of this is WhatsApp, with its core of 35 engineers, bought by Facebook for $19 billion. We now even have “the WhatsApp effect”. Craigslist also famously runs lean, though it’s now up to 40-something employees. A tiny core of people enable a much larger group of people to do some very cool things more easily. (IT has followed a similar pattern, with a much smaller number of admins running a much larger number of systems.)
A few years ago, while I was exploring Flow-Based Programming, I found a quote that explained how it usually seems these roles should fit together:
“There’s two roles: There’s the person building componentry, who has to have experience in a particular program area, and there’s the person who puts them together,” explains Morrison. “And it’s two different skills.”
I suspect that programming will become like plumbing in that the real money is in selling parts and building larger systems. Ordinary plumbers will still be absolutely necessary to make it work, and some large portion of the population will keep complaining about how expensive those plumbing programmers are until they try to do the work themselves. Meanwhile, the shiny visible parts - faucets, bathtubs, showers, dishwashers, and toilets for plumbing, interfaces for code - that connect the system to human users will remain critically important, though with a wide range of variations and prices.
The tricky parts in the forecast are about scale, speed, and how deep customers really want to go. Are WhatsApp and Craigslist (themselves pretty much fancy and well-executed plumbing systems) a sign that the number of "real" programmers will shrink to a tiny market? How quickly will the plumbing parts of programming become commodities? And how much do (which) customers actually care about workable interfaces?
My personal bet is that interfaces will remain important, because people are easily frustrated but can be delighted. Great interfaces still require a delicate balance of design skill and implementation talent. I don't think we're anywhere near shrinking that conversation the way that we have IT and may be shrinking programming. I may be too optimistic about that, of course, because a lot of my fondness for the Web comes from its living on exactly that balance. Bot-trainers of various kinds may have a similar advantage, at least at first, as well as people creating new IoT devices. When computers need to deal with the non-digital world, regular fine-tuning keeps things working. We need to value that maintenance work.
I see three options for developers in this changing world. The first is to find a home at the intersection of computers and humans (or other aspects of the physical world) that require regular attention. The second is to hone your skills and become a rare creator of the algorithms others want to use. The last option is to find something else compelling (and hopefully lucrative) to do.
Pay your maintainers well, whatever choice you make!