TLDR: Traditional software engineering is becoming commoditized. Infrastructure, deployment, and development have become incredibly easy thanks to modern tools and platforms. While this means utility software (business applications) will likely be automated away, there’s still room for creativity and personal impact. Even though most software has already been written or will be handled by AI, developers should focus on writing software that matters to them or makes a difference to others, rather than waiting for even better tools.
The world of software engineering and development is changing at a breakneck pace. For someone who’s been in SWE for nearly 40 years (since I was 6 years old) and professionally for nearly 25 years (since I started getting paid for SWE work), I am concerned, but still hopeful.
What do I mean by “no more software left to write”? It means a few things:
- Software infrastructure has become so widely developed that writing new applications today — by hand, we’ll get to AI later — is 100x easier, faster, secure and optimized than just 5 years ago, and this rate of development is constant, meaning that in 5 years it would be 100x faster / easier / better than today.
- The amount of software written has risen dramatically. Just the sheer volume of applications and projects has increased, and within those – open-source projects that are easily copiable or integrable. It’s nearly impossible today to find an alcove of human pursuit that has been untouched by software or digitization.
- Software (and software engineering) has become as much like LEGO as it has ever been, where engineers (builders) can piece together an application in minutes! With advanced features and production-ready backends with just lines of code.
- Software deployment has become automated to immense degrees, where an app (web, mobile, desktop) can be packaged and served online (or dished out as download executable) with a single line of terminal. All backend services, all testing and integrations fully managed by someone else.
- AI coding has made it so full applications can be “written” ad-hoc to the user’s needs almost instantaneously, making the need for bespoke engineering obsolete – apps can be generated on the fly for a single use! The age of disposable food containers has arrived in software engineering.
- Hardware platforms are more generous than ever before! With memory, compute and disk capabilities that really make runtime optimization a thing of the past. You can brute force your way to software success and deal with consequences later, if at all it will become an issue.
All this means is that it has never been a better time to be a software engineer. And it has never been a worse time to start as a software engineer. If you’re starting out today, take note of the rate of change in the field – it is exponential. Tools and paradigms used today will be obsolete or woefully outdated in just 2-3 years. Except for the deepest of technologies, engineering applications has been commoditized to a pulp.
What it means for Utility and Creativity
I think the days of software engineering for utility are numbered. Meaning, to build utility software that solves a business need is going to go extinct, very soon. Just because most business problems already have some software covering it, or – it will be embarrassingly easy to write the software with minimal time and effort. So, utility, I believe will not drive many engineers of the future. Creativity and gratification however – will remain in demand. These are the things that makes us human — just like eating and sleeping — and they will not change much in the next 1,000,000 years.
See, creativity is nothing like utility. It’s not things done to solve problems. Sometimes it’s a mental exercise, sometimes it doesn’t have any material purpose, it might be art, or it could be done as therapy even. I think creativity in software engineering will stay a vibrant theme. People will write innovative software for creative pursuits (like media, arts, gaming etc.) or solving problems in a creative way (like porting Doom to an electric toothbrush).
But all in all, the major usage for software in our world will be taken care of by the arguments made in the beginning. Software to solve actual business problems (but also e.g. games for mass consumption) will eventually be automated away not leaving much for humans.
A Big Push on Infrastructure
A major part of the “no software left to write” paradigm is infrastructure, and not necessarily automation or AI. In just a few short years, the tooling for developers to create and deploy scalable software has exploded upwards. App development and deployment has been commoditized, meaning, it is now commodity – anyone can get it for a fair price. Contributing companies were Firebase, Vercel, Supabase, Netlify, AWS Amplify. They won’t write your frontend – but the infrastructure is dead simple: db, auth, host, analytics, server-side, APIs – you got it. And the price you pay for this peace of mind — no one got fired for putting data in Google cloud — is ridiculously low. For anything sub immense scale it’s basically free (except if you’re building a business – you should be happy to pay! That means you’ve reached scale). Most of these are a one-stop-shop end-to-end solution for apps, you don’t need anything else. Even if you’re not web based, with Electron to do some serious desktop damage and Qt + PyInstaller as an alternative – desktop is not taboo anymore (cf. projects like LM Studio as a case in point).
That’s infrastructure. On frontend though, things went absolutely wild. I can’t remember an era where developers could be designers and designers could be developers. With frontend tools like React (of course), Tailwind, Shadcn, Bootstrap, Material, the task of putting up some components on screen and make them look great — or at least palatable — became trivial. You want dark mode? (You know you do.) It’s built in. I remember a distant past where software/tech companies developed “design systems” and “component libraries” and hired a big design team. This is a thing of the past. I can now see tailwind-shadcn everywhere, and for good reason – it’s all you ever need! Just pick colors out of a premade palette generator and theme your way to app design glory.
Right, so infra is solved, frontend is done – how about backend and middleware? Surely – backend is hard! Well guess again because middleware and backend smooth as silk like Next, Express, Nuxt and others – you really don’t have to sweat anymore, just focus on building.
I think in today’s world, even if you’re working by hand — you luddite — the apps write themselves!
A World Full of One Man Shows
I think it was inevitable that the world of software tech would eventually come to this. As you probably know, software engineers are — in broad strokes — the reclusive kind, sort of introverts, like to work alone and get things done pretending they are slaying dragons. Well back in the day a single developer couldn’t get anything done at scale even if they were insanely good. It was because things simply took time to do. Provisioning server operating systems (let alone install them physically!), bringing up db services, pouring over API docs for obscure identity directory services for auth (remember LDAP?), and worrying about replication and redundancy and load balancing… I’m glad to see all that is now in the past.
Today, a single good-enough developer can actually slay dragons. It’s because they get their work done so quickly, they have all the time they want to play Baldur’s Gate. Seriously though, one-dev shops are popping up like mushrooms after the rain, where the rain is the crazy push on infra that allows them to translate needs into apps in mere minutes, hours or days. Little startup companies can churn through ideas and pivots at breakneck speeds and look for PMF without overly risking their financials. This is a very good thing.
At the same time, software has forever been a collaborative effort. Some people make the infrastructure and some make the applications. That’s how it always has been, and largely how it still works today. The fundamental shift though is that value has gone from infrastructure to the application layer. In the past if you laid down “copper” (think any medium for information transfer) and “metal” (servers) – you had a “forever business” because you could not be uprooted. But information infrastructure has commoditized, and value shifted to applications where you can charge the customer directly. Government declared internet an essential service just like water and electricity. The same is happening to software infrastructure today. How long would it be before cloud services will be declared an essential service?
Quantity Over Quality
I’ve written in the past that I believe the next push in AI agents would be “brute force”. A situation where you can have 1,000 weak competing agents on the same task, and all it takes is for one of them to succeed. Note this is different than “swarms” where each agent has a separate distinct job they must perform well on. What I suggest is that cheap agents with low probability of success will compete, but we will beat low probability with sheer numbers.
At the heart of “Quantity Over Quality” stands this principle: low probability can be beaten by repeated trials. The startups above with low probability of hitting PMF can now try 10-20 or even 50 separate ideas before running out of money. The AI coding agent[s] can try 100s of solutions for solving a bug — in parallel! — until something hits all the unit tests.
Think of software for doing the same thing in principle. We probably have in our world 100s of “versions” of Salesforce — primarily a CRM and ERP tool once geared towards sales but now has metastasized to every part of an organization. Everyone is trying to replicate the immense success. This is “brute force software” – low probability, multiple trials. And this experiment is repeated in pretty much every software you know! Like, WordPress (which I’m using for this blog), Windows, Google Docs, VS Code, Slack, Chrome, etc. each have 10s or 100s of viable alternatives.
Software Worth Writing
So what’s left for us lifetime software engineers? Everything has been done before 100s of times over, and the things not yet done will be made by swarms of swarms of competing AI agents. Is it even worth opening up the IDE today? Because, if we just wait a bit – software will be x1000 easier to write very soon, so why bother today? This is a principle called “The Waiting Calculation” or the “Wait/Walk Dilemma“, where it’s better to wait for the bus and go faster than to walk slowly.
I however think it’s much better to be active today than to wait. By acting you influence the future and shape the technologies. It may seem like the efforts of one person may be negligible in face of a global movement – but that is untrue. We are all part of a tight fabric, and we all pull and push on the people around us. We have colleagues, students, mentors, family and friends, and strangers too that we may meet online. We influence them, and they influence us. Overall, we are all grabbing a tiny little part of the helm of the humanity ship.
Today you should be writing software worth writing. In other words, write for impact – personal or societal. Replicating a social network just to learn how it works? Great project! Definitely worth writing. A script for cropping images by right click on the file? Wonderful idea! Anything that makes an impact on your life or others is worth writing, even today and in the future.
So while there’s no more software left to write, you — personally — definitely have plenty of more software worth writing.