On Generative AI & Software Engineering — streanga.comSkip to content
Picture unrelated, I just like it. Courtesy of The Pit Stop.A couple years ago, I predicted that generative AI would impact software engineering first, and the hardest. Of course, I don’t expect anyone to believe me; I have no proof. But, this was my reasoning at the time, and I think it’s more or less the same now:
In the Beginning
When generative AI first broke the mainstream with GPT 3.5, there were a lot of predictions about how it would change software. At first, the common thinking was that more and more functions would be outsourced to these AI tools. What that meant was that, instead of writing algorithms, we could just use this magic blackbox to make things happen. Like, maybe instead of writing a script to clean up some CSV file, we just pass it to ChatGPT and ask it to do our dirty work. We still see that mentality around today to some degree. Take Apple Intelligence, which will use Gen AI to provide summaries of texts and emails.
But, we reached some hard walls with that approach very quickly. Gen AI has some fundamental problems that we haven’t yet found a way to fix, the most prominent being hallucinations. Now, for something like text summaries on your iPhone, that might not matter. But for software that, you know, has an expectation of doing productive things for us, it quickly became unacceptable. Users have become accustomed to how computers and software “work”: they’re obtuse, overly literal, but perfectly accurate. We would never expect our Excel workbook to occasionally get 2 + 2 wrong, but with Gen AI, that’s exactly how it works.
A Match Made in Heaven
So, what do we do about that? Well, turns out, Gen AI is really good at writing code. Like, really good. Which makes sense, because code in its nature is highly structured and parsable. The property of being good at coding solves most of the problems with Gen AI alone.
For starters, we don’t have to worry about hallucinations anymore. At least, not in the final product. Code goes through compilers and interpreters and runs on machines, so how it functions is already known ahead of time. Of course it’s not really that simple. If it was, there would be no bugs or vulnerabilities. But if we combine the build tools with a strong and comprehensive testing suite, we’re able to very confidently reason about the behavior of the software, while still leveraging Gen AI.
We also don’t have to worry about compute as much. Another problem with Gen AI is that it takes a truly incredible amount of compute to pull off. Using a prompt in place of an algorithm is orders of magnitude more expensive, and it typically requires a network request, too. If we were using Gen AI in place of code, it would quickly become untenable. But, if we ask the Gen AI to just write the code instead, then we get all the typical runtime performance we’re accustomed to. That’s a big deal, because in the past some people thought that personal computers of the future would just be “dumb terminals” for compute-heavy Gen AI. But they don’t have to be, and in fact that’s not really desirable for anyone.
And, the last problem with Gen AI: data sovereignty. As it stands, the SOTA models are hosted on remote servers owned by OpenAI, Anthropic, et al. For many domains, that setup is not acceptable. But, sending code to those providers is acceptable. So, we can use Gen AI to write the applications, but keep customer data or any other sensitive data secret.
So, What Happens to Software Engineering?
By now, you’ve seen the rise of so-called “vibe coding” and agentic workflows. For the first time ever, non-technical people are able to create software to solve their problems. For many engineers, this is scary. If product managers and whoever are able to prompt for software, then what am I around for? But I argue that the value of engineers did not decrease, and is actually the highest it’s ever been. Let me explain why.
While it is true that anyone can create software, the people best equipped to leverage Gen AI are still engineers. At its core, Gen AI is a velocity multiplier. You can get more done, faster. What that doesn’t cover is:
Is this software solving the right problem?
Is this software high quality?
Is this software secure?
Does this software provide the right value for our customers?
Software engineering has never really been about coding. Coding is just a means to an end. Software engineering is about the discipline and theory behind building software. How do we set up systems so that we can build software quickly that works and provides the right value for our customers?
Velocity is a vector; you can certainly be moving in the wrong direction. In fact, I’d say it’s more common to be moving in the wrong direction than the right one with software. So, accelerating that velocity when you’re already off-course doesn’t help anything. It makes it much worse.
How Software Engineering Adapts
The...