I’m going to keep this short and without a ton of argumentation or example because I want to get an idea out into the world that I haven’t seen repeated in the cacophony of AI or genML discourse.
Before I tell you the idea, let’s first agree that we’ve seen a convergence of people believing that the big thing that’s about to happen is a reduction in cost of software development to zero. Because this is my newsletter, I’ll personally take credit for that idea since I wrote about it on December 8th 2022, and the more viral piece that said essentially the same thing came on March 31st by Paul Kedrosky. What I said was, “Now, huge backlogs of customer ideas and one-off requests squirreled away in product management tools will become viable,” and Kedrosky put that much more succinctly as “society’s technical debt.”
Of course, talk like this causes software developers everywhere to wring their hands and worry about their futures. We wonder whether it still even makes sense to learn to code.
I’d argue that it does, but it does in the same way that it made sense for me to learn assembly language even though I’ve never had to use it professionally. It helped me develop a highly detailed and complete model of how computers work that has been relatively easy to keep up to date as technology has improved over the past 30 years. The value of having a complete mental model doesn’t go away until we arrive at superintelligence at which point all bets are off, but this post isn’t about superintelligence.
So remember I said I was going to introduce one new idea? Here it is:
Rather than making software development easy for anyone, we are going to see an EXPLOSION in the complexity of the systems. It will become ever more difficult for new people to learn everything they need to know to build their mental models, and more difficult for us all to keep everything orchestrated and working.
Why? Because THAT’S WHAT WE DO!
Here are three reasons you should believe me:
1) We tried simplicity and said no thanks. There was a brief period of convergence around 2006 where Ruby on Rails was invented and it made building the types of websites we’d been building over the prior few years vastly easier. That time period was an oddity, and while it did spawn a couple important companies (Github, Twitter), we quickly moved on to adding more and more complexity to our websites. We decided to make them more distributed so as to have low latency from around the globe, have higher expectations of uptime, handle orders of magnitude more data, and increasing complexity and interactivity on mobile front ends. We also went from ‘git push origin heroku’ to AWS.
2) Complexity is developer catnip. AWS is worthy of being my second point. It’s not a coincidence that it is both the most successful public cloud with the most adoption by developers and the most complex. We love it. People take 3 hour certification exams for no good reason to prove how well they know it. AWS made a relatively user friendly way of orchestrating containers called ECS and developers were like, “Noooo, we’ll take Kubernetes thank you!” (Which if you don’t know much about kubernetes, it is a hydra monster with 58 million lines of code who’s job is ostensibly to run distributed systems across tons of computers but who’s actual purpose is to keep devops engineers entertained at work.)
3) Even when not building mission critical systems, people choose complexity. Here’s a data analysis from 2018 showing that board games have been getting more and more complex, and a subsequent graph showing that people prefer more complex games. We like complexity even when we’re supposedly relaxing. This is what we do!
Do you believe me now? ChatGPT and whatever other dark genML magic are not going to make all this complex and difficult software go away. I think a better way to think about it is to look at the way things already work. Already today, the most highly paid developers (principal level devs) are the ones that can imagine an entire complex system and then break it down, estimate the effort it will take to build it, and steward it into existence. Now they’ll be able to steward more complex systems into existence because the more junior people on their teams will each be able to produce their own relatively complex systems with the aid of genML. System level thinking with a complete mental model of how the software works will still be required of the more junior developers because that is how they will prove that they are ready to be promoted to a more senior role.
It’s fractal in nature. GenML gave us the ability to zoom in one level deeper into the fractal, and the patterns we can now see and build are vastly more articulated and complex.
This game is infinite.