Will AI replace software engineers?
This is the billion (trillion?) dollar question on everyone’s mind, from software engineers themselves to the venture capitalists who invest in them and the prospective university student considering their major. Will AI replace software engineers? If so, what would that look like? Should I find a new career that’s immune to AI?
Ask your favorite thinking/deep research model this question, and you’ll likely receive a well-reasoned answer drawing from a vast array of opinions. Having spent my career first as a software engineer and then building teams of them, I think about this question constantly in one form or another.
As an optimist, I believe the future will be very bright, at least for those who 1) embrace this oncoming revolution and 2) adapt to the new world that emerges. The latter is perhaps the most crucial, because, as Darwin said, it's adapt or die.
If I were pessimistic, I might say, "Yeah, we're all hopelessly screwed." In a world of abundance, what could possibly be deemed valuable? Why work when robots could do it for us? Why go to school if all the world’s answers are just a “Hey Siri/Google/ChatGPT” away? However, for this scenario to play out, you’d still have to be optimistic about AI's potential to reach that level. In actuality, the truly pessimistic view is that AI is a massive nothingburger—no more than a fancier version of information retrieval—and we all just happily get back to the grind of writing for
loops and unit tests.
Fortunately, I’m an optimist!
Disruptive Technologies
Confucius said, “Study the past if you would define the future.” Let’s start there, because we’ve actually seen this all before:
The Printing Press
Prediction: Jobless scribes, societal chaos from readily available (and potentially incorrect) ideas.
Reality: Democratized knowledge, fueled intellectual movements, and made information far more accessible.
The Industrial Revolution
Prediction: Machines taking all jobs, leading to widespread poverty and social unrest.
Reality: New industries emerged, productivity soared, and overall living standards increased significantly.
The Automobile
Prediction: Scared horses, dangerous streets, and a decline in public morals due to newfound mobility.
Reality: Revolutionized personal transportation, fostering freedom and economic growth (and yes, drive-thrus!).
The Spreadsheet
Prediction: Accountants all lose their jobs as digital ledgers threaten the art of manual bookkeeping.
Reality: Revolutionized data analysis and business efficiency, creating new and valuable roles in the process.
To some degree, the fears did materialize—there were indeed some setbacks—but on the whole, after the dust settled, these major innovations ushered in massive positive changes to society and industry. Jobs evolved and flourished as the new paradigms took hold and grew the entire market, eventually benefiting consumers as part of their everyday lives. Now, these innovations are entirely commonplace, and we can’t imagine our lives without them.
Breaking down the nature of these disruptions, my observation is that the core need being met didn’t fundamentally change. We still wanted to read, create and buy goods, and get around town. Rather, it was how those needs were met that changed dramatically. Where it gets complicated is the human factor, because we see ourselves as integral to the how and because what we do (our work) is so deeply embedded in our identity. Take that away and our loss-averse survival instincts kick in, then all hell breaks loose.
I’m strongly sensitive to this. I know the loss one feels when one’s livelihood is taken away; it was the catalyst for one of the most rewarding (but very painful at the time) growth moments in my life. What I’ll do is hone in on the how, because I believe that’s what AI is actually disrupting right now.
Software engineering will always exist; the world will only become more digital. We will still need apps/services to do stuff for us. Under the hood, there will be a whole bunch of software powering it all, but everything about it will change: how that software is created, how it’s assembled, shared, and improved; even the software itself will not look like it does today.
Therein lies the opportunity. While we may no longer be the sole producers, deployers, or testers of software, I believe we’ll still play an important role in this new world.
Learning from the Auto Industry
Time for a historical detour. I just binged the new F1 season (which was awesome as usual) so let’s talk about cars!
Karl Benz invented the first automobile in 1885, and Henry Ford brought it to mass production with the Model T in 1908. From there, car ownership surged until we were hit by the great depression and, soon after, WWII. Following the war, pent-up demand along with key automotive innovations led to a boom that sent car ownership on a consistent upward trajectory in the years since.
One of those innovations was the automatic transmission. Invented in 1921 by Alfred Horner Munro, it wasn’t until 1939 that GM put the first car with an automatic transmission into production. Fast forward to today and over 97% of cars sold are automatic. While it’d be a stretch to claim this single innovation was the sole reason for the automotive boom or that it was as disruptive as AI promises to be, I believe it’s the perfect analogy to what we’re currently witnessing, and we can learn valuable lessons by examining its role in the industry’s extraordinary growth.
The first problem automatic transmissions solved was accessibility. Early cars were exclusively manual, and they were quite difficult to drive. Manual transmissions have actually evolved significantly to make driving them simpler, so just imagine how hard it was back then. Then suddenly, with the introduction of automatics, the hurdle to drive a car was dramatically reduced, not only reducing mental load but also freeing up one leg and perhaps one hand (to the dismay of safety advocates). A surge in new drivers translated into a surge in demand, which led to more carmakers to address that demand, which then spurred more innovation (safety, entertainment, comfort) to win their business. Today, the modern car is one of the most high-tech “devices” the everyday consumer owns, not to mention the most expensive.
The second, and perhaps equally important, problem solved was efficiency. If you’re a dinosaur like me, you’ll remember a time when buying a stick shift meant you could eke out a few extra miles per gallon over an automatic, not to mention save thousands of dollars. However, those days are long gone as the increasing preference for automatics heavily influenced innovation. While manual transmissions had seen some real advancements, the bulk of it was redirected to improving automatics, to the point that they now lead in fuel efficiency. Outside of catering to consumer demands, there was also a practical driver: there was only so much you could squeeze out of a manual transmission before the bottleneck shifted (heh) to the human. Needless to say, it would be a non-starter for self-driving cars. Carmakers really had no choice but to essentially abandon manual in favor of automatic, which in turn enabled another benefit: reduced cost thanks to one less configuration to support.
What’s important to note is that while the preference for automatic initially stemmed from convenience–consumers just wanted to press the pedal and go–it eventually won over professionals thanks to the performance gains they could achieve by packing in more tech. Ferrari was the first to introduce an electronic gear shift system in the Ferrari 640, their 1989 F1 car, which allowed drivers to shift without their hands leaving the wheel nor their foot depressing a clutch. F1 is the hotbed for automotive innovation and being an F1 driver is arguably the pinnacle for drivers. It’s no wonder it caught on and today the majority of professional motorsports have adopted automatic transmissions (clutch-less with paddle shifters) to gain advantages in speed and control.
OK, that was fun! End of detour. Back to software engineering.
Looking To The Future
There are three possible futures ahead of us when it comes to AI disrupting software engineering.
Software is built by humans only. AI is a fad, let’s get back to work.
Software is built by AI only. The same wrong (and pessimistic) prediction that humans will be entirely displaced.
Humans and AI build software together. The optimistic view that humans will adapt, which history has proven repeatedly.
Obviously, my money is on #3, but what does that even look like?
Like the automatic transmission, AI has dramatically lowered the barrier to entry into software. Literally anyone can get AI to build something for them, whether it’s with Replit, v0, Lovable, or just plain old asking your favorite LLM. Junior engineers now seem like senior engineers, and non-technical folks can easily create technical products with zero coding experience. It sure feels like builders have embraced a new paradigm if Cursor’s meteoric rise or StackOverflow’s rapid decline are any indication.
But, while AI has solved accessibility such that anyone can “build software,” has it solved that second problem of efficiency/performance such that the “professionals”–very large and very senior dev teams working on massive scale production systems–have truly made it part of their process? Poking around, I found some examples that tell me directionally they’re headed that way, but from what I can tell we’re still in the very early stage of simple automation and building internal versions of what is effectively Cursor. A long way still from a symbiotic human and machine relationship happily building and maintaining software together. It makes sense given the stakes are much higher here.
Penetrating these established teams and systems is a unique challenge. You’re dealing with sprawling codebases, complex infrastructure, and inefficient processes (not to mention politics). It’s a very messy human world designed by a mess of humans, and an AI needs to learn it all (training, context, RAG) before it can effectively work in that world. To be fair, even humans dread jumping into such systems.
We currently see two distinct AI strategies, tackling the same problem from opposite ends:
AI takes you from 0 to 1, then a human takes the wheel (i.e. AI-generated apps)
Humans went from 0 to 1000, then add AI to help (i.e. bringing in AI to a legacy system)
#1 gets you clicks and follows but are so far just toy apps. #2 is really hard but these systems impact an enormous number of people. Humans are brilliant and the trend is clearly only growing, so I think we’ll get there in time. But I think there’s a third strategy waiting to emerge:
What if there were a platform that was designed from day one for both humans and AI to work together? A fresh start using first principles on what should or shouldn’t be the responsibility of a human or AI. Something that feels like an AI-ified Heroku or Vercel but with all the complexity abstracted away. Or, to use the auto analogy, something that makes you feel like Max Verstappen stepping into a $15M F1 car fitted precisely to your exact body and driving style, having in your ear an army of operators and a plethora of instrumentation to ensure every move you make leads to the best possible outcome. All you have to do is drive.
In such a system, you wouldn’t need to deal with mundane things like testing, monitoring, experimentation, or even coding. And you wouldn’t need to start from scratch; you could just point it to your existing system and it magically performs a no-downtime migration for you. The critical nuance is that this system would not be based on a hand-off, with the AI absolving itself of responsibility, rather it is designed for continuous and long-term collaboration (iteration) between humans and AI.
Is this a crazy idea? I don’t think so. There’s nothing technically impossible here; it’s really just about redrawing the boundaries of responsibility where humans and AI play and defining the contract so they can collaborate. But it’s non-trivial to build a complete system that can truly take away all the complexities of real, production-grade software engineering. You would necessarily need to rewrite the rules or at a minimum bend them a little. For anyone ambitious enough to tackle this, here’s some inspiration coming from a brilliant and capable builder who’s running into the harsh realities of our world. (Also, please let me invest if you’re building this!)
Conclusion
Software engineering is here to stay, but it’s gonna completely change and you need to be ready for that.
You will still build things, but how you do it will look nothing like today. You may never write a test again, you may never have to go on-call again, and you may never have to fix someone else’s janky code or even look at it. The good news is that nobody will ever care about your ability to pass a LeetCode interview again, but the bad news is that there will be tons more “software engineers” out there who all have access to the same abundance of AI tools you do.
What will differentiate you is your creativity, your obsession, and your ability to deeply understand how to compel AI to create the outcomes you want. Whereas before you reveled in the intricacies of code and software patterns, it will now be considered boilerplate and you will instead be a strategist assembling and directing your AI army to deliver your vision.
While the AI possesses infinite knowledge, it can never have the judgment you possess. You’ll get the best answers by asking the right questions, and knowing the right questions requires deeply understanding theory and fundamentals while drawing from actual lived experiences of those who preceded you. Never stop learning. Be curious, ask questions, challenge yourself. That’s AI was originally designed to do anyway, so take advantage of that.
When will this happen? Hard to say, but I’d narrow it down to 12 months at the soonest and no later than 5 years. Regardless, it’s going to happen. So, I’ll end with some concrete advice.
If you work in software:
Use Cursor or a similar tool to bring AI into your daily workflow. Every builder who does this will have an advantage, and more so if you adopt best practices (start by just asking an LLM). This is probably the highest ROI subscription I’ve ever paid for.
Stop Googling and start LLM’ing everything. Even though we know AI can do all these amazing things, the majority of folks still don’t leverage AI enough. AI should be your default. Yes, it still hallucinates, but the benefits are 1) you’re building new habits that are future-proof and 2) you’ll better understand what AI can and can’t do. The kicker is that as LLMs get better (they will), so do you.
Actually build something with an LLM. Get an API key for your favorite LLM and build something small that solves a real problem for you. Again, you can just ask an LLM to get you started. Use this to learn what LLMs can do by exploring fundamental techniques and building upon your script. This is an easy way to get your feet wet because not everyone has the support of their company.
If you’re non-technical:
Follow the same advice! AI has leveled the playing field, so nothing is actually stopping you. But it may help to reframe your approach so you can build up a strong foundation.
Learn from every prompt. Ask your LLM to always add thorough explanations when there’s a new technical topic mentioned. You can set these persistent instructions by creating a Gem in Gemini or a GPT in ChatGPT. Once you’ve mastered a concept, just update the instructions to tone down the explanations.
Practice, practice, practice. Some people learn better by doing, at least that’s what works for me. So, give yourself actual coding/building challenges to accompany the new concepts you’re learning. Dogfood what you build to create a feedback loop so you learn to work iteratively.
Ask what great looks like. One disadvantage a newcomer will have is lacking context and pattern matching. This can be both good (you lack bad habits) and bad (you don’t know what great looks like). With any project you build, always ask an LLM to explain best practices and provide feedback. There’s never one right way to do something in software, but there’s a lot to learn from everyone who’s come before you.