Not the autoworkers of our generation

Workers at mechanic shop.

The software development community is a strange one. Despite its low unemployment rates, high salaries, and excellent prospects, it's apparently always in danger, in decline, or in desperate need of warning. Some developers see the latest boom in software development as just the portent of a future decline and write fatalistic fiction to warn the community of impending doom.

The latest in this genre is Greg Baugues's post, "Autoworkers of our Generation," where he compares present-day software developers to 1960s-era Detroit autoworkers. In Baugues's opinion, the robots that replaced Detroit autoworkers will similarly replace software developers. As evidence, he offers a few examples: Shopify for e-commerce, WordPress for online blogging, and Stripe for credit card integration. Regarding increased competition, he states that demand for software development education has exploded with companies like Treehouse and Hacker School offering low-cost, high-relevance curriculum that prepares students for development work at a fraction of the effort and cost of a four-year degree. Baugues closes with a warning to developers:

Don’t get too comfortable. Don’t get locked into a language. Don’t burn bridges for short term gain. Keep your tools sharp. Learn soft skills. Build an audience. Save some money. Network. Read.

On almost all points, Baugues misses the mark. First, there is a qualitative difference between assembly (unskilled manual work) and software development (skilled knowledge work) that made automating the former inevitable. Automating creativity is going to be far more difficult than automating assembly. More than that, Detroit autoworkers were unionized and in a historical sweet-spot: highly in demand for an industrial function that was too expensive to automate at the time. Software developers are neither of those things - they have resisted unionization (to their detriment as lower-level functions have been outsourced) and their function is not easily automated: it's automation itself.

Collective bargaining and unions gave autoworkers a comfortable middle-class life, but eventually falling profits and global competition started to work against it. Cars became safer, easier to manufacture, more efficient, more reliable, and ordinary. The autoworkers (and their unions) might have anticipated globalization, but the automakers found themselves in a new world playing by old rules. On the other hand, software developers have been global since the 1980s, which might as well be from day 1. They are well aware of the global nature of their work, and they harbor no illusions that they're operating in a protected, limited market. So it seems Baugues is unjustified with comparing the two: not only is software development qualitatively different than automobile manufacturing, its workers, lacking union representation, enjoy unionized autoworker-level compensation despite aggressive global competition.

But what about automation? What about the glorious future where we all effortlessly connect APIs to one another (and apparently get paid nothing for it)? Here, Baugues looks at the last 5 years as the blueprint for the next 50, and effectively declares software development automation a fait accompli. Let's look at his examples.

WordPress, free blogging platform and open source blogging software, took off in mid-2007 and now powers (by some estimates) nearly 20% of the web. Baugues claims that WordPress does in "fifteen minutes" what used to take "two months," yet anyone who's set up a WordPress site for themselves or a client knows full well that WordPress is often a minimal shell (authentication, posting, and tagging) for the real function of the site. It automates only those parts of a web site that were tedious drudgery to begin with, not any of the difficult logic (that's left to customizable plug-ins). Pure blogging is zero-cost - just look at Tumblr. The real value in WordPress is delivering a mature web site framework, a claim that competitor projects Drupal and Joomla can make much more convincingly.

Stripe, a developer-friendly credit card API, appeared in 2010, and at present can only claim a handful of high-profile customers. At the end of the day, it's a cheaper, easier alternative to older competitors in the payment processing space. Where's the automation? Similarly, Shopify, founded in 2006, is a convenient WordPress-like platform for selling products online. It simply brings together what's long ago been automated - web templates, payments, and multi-tenant hosting. Neither Stripe nor Shopify make good examples of the future automation of software development, so it's unclear what Baugues intends to demonstrate by mentioning them. These products are an improvement on the previous generation, more integrated and more user-friendly, but they are not (and neither are most SaaS products) fully automated nor do they put developers out of jobs.

Weaver operating four-loom system.

Automation has long inspired anxiety and existential dread, often born of ignorance of history. In the 1600s, London silk weavers actively protested the engine loom, which would have reduced demand for their services considerably, going so far as trying to block it by law. Nevertheless, machine looms began to replace handlooms by the middle of the 17th century. In response, in August of 1675, rioting weavers took to the streets and destroyed as many engine looms as they could find.

By the end of the 17th century, Huguenot (French Protestant) immigrants that entered the weaving industry further raised the ire of London weavers, leading them to terrorize and marginalize the newcomers. A few decades later, in the late 1760s, the Spitalfield riots were organized by weavers to keep their compensation fair in the face of industry automation and French competition. The rioters failed to accomplish their goals, and automation continued unabated.

In the early 19th century, English textile workers calling themselves Luddites united to protest automation. They damaged and sabotaged machinery while threatening further violence, ending up on trial in 1813 and ceasing protests afterwards. Since then, thinkers such as Marx, Heidegger, Myrdal, Mumford, and Ellul, have critiqued technology and automation, yet the world has continued automating, delivering growth, stability, and security, even with a rapidly increasing population. This is not to say that automation is inherently good or benign, but rather that its effects, long viewed as catastrophic, have been, on balance, more positive than negative. What's more interesting is that automation has yet to bring about a utopia of easy jobs and a short work week - if anything, automation has put considerable pressure on workers to work harder than ever.

Since Baugues brings up SaaS and Internet products, it's only fair to discuss what effect the Internet is having on software development. The Internet industry isn't eating itself, it's raising the bar. Ten years ago, "web development" meant a working knowledge of HTML, a bit of CSS, and Perl or PHP. Five years ago, it meant a fluency with HTML and CSS, some JavaScript, and one of PHP, Ruby, Java, or ASP. Today it means a total separation from HTML and CSS (let the designers handle those), strong knowledge of at least two of PHP, JavaScript, Python, Ruby, or Java, and familiarity with things like Git, package management, and continuous integration. Web developers today do more than they've ever done, and have to constantly juggle the constraints and requirements of high-availability systems with the latest improvements and changes in the industry. Their colleagues in the offline world haven't had to reinvent themselves as much. If anything, the last ten years have seen the automation of the most repetitive parts of web development (just like the autoworkers' function). Does any developer want to go near writing an online store or blog from scratch these days? Surely there are more interesting problems to solve.

BachelorsDegrees1975-2010

Baugues's mention of programming schools and academies also misses the point. We've been here before, as an industry, in the late 1990s. Computer science enrollment increased dramatically and salaries for CS grads enjoyed a bump for a couple of years. Then the market crashed, computer science enrollment decreased, unemployment skyrocketed, and salaries went back to their normal range. Were those short-term investments in computer science degrees worth it for the grads that found themselves out of demand upon graduation? More importantly, did any of those grads keep going with development or did they switch careers and forget all about programming? Similarly, if the market for software developers crashes tomorrow, it won't be the developers with a decade of experience scrambling for a new career. It'll be the newly-minted "hacker school" grads, the people who took a 3-month course to learn how make a Python app, who will move on the fastest. Their base of knowledge will be minimal - not only will they lack the crucial empirical body of knowledge that every developer acquires over the years, they'll lack the theoretical foundation for computer science that isn't taught through web developer academies and blogs. If the competition is going through coding academies, today's software developers have nothing to worry about. This is a field that has always lacked a barrier to entry, and a new generation of unsophisticated developers is not only no threat, but a great opportunity.

There is no automation threat to the software industry. For every API that wraps around a business process, there's an application yet to be written (and an API around that application in due time). For every library and app that fulfills a potential function, there is a new use. For every system of processes that needs to be automated, there is a developer job waiting. The sheer volume of software that exists today should give pause to pessimists - perhaps there is a new software development industry being fashioned out of the old one, an industry not focused on prosaic problems like payment processing or blogging, but on solving exponentially harder problems using hard-won gains of the last two decades.

Software development is one of the few industries that constantly redefines itself. Unlike clothes or medicine or cars, software is elusive, intangible. A software developer is a problem solver, often in a very abstract way. It takes a special sort of optimism to consider that kind of talent automatable, and a special sort of pessimism to think it will ever be so.