Enable javascript in your browser for better experience. Need to know to enable it? Go here.

The machines are rising — but developers still hold the keys

Rumors of the ongoing death of software development — that it’s being slain by AI — are greatly exaggerated. In reality, we’re standing at a fork in the path: one where we can either embrace the (currently) far-off notion of fully automated software development or, instead, acknowledge the work of a software developer is much more than just writing lines of code.

 

The decision we make as an industry could have significant long-term consequences. Increasing complacency around AI-generated code and a shift to what’s been termed ‘vibe coding’ — a programming ‘style’ in which code is generated through natural language prompts until the results seem to work — will lead to code that’s more error-strewn, more expensive to run and harder to change in the future. And, if the devaluation of software development skills continues, we may even find we lack a workforce with the skills and knowledge to fix things down the line. 

 

This means software developers are going to become more important than ever to how the world builds and maintains software. Yes, there are many ways their practices will evolve thanks to AI coding assistance, but in a world of proliferating machine-generated code, developer judgment and experience will be vital.

The dangers of AI-generated code are already here

 

The risks of AI-generated code aren’t science-fiction: they’re with us today. Research done by GitClear earlier this year indicates that since the mainstreaming of AI coding assistants like GitHub Copilot, code churn — which GitClear defines as “changes that were either incomplete or erroneous when the author initially wrote, committed, and pushed them to the company’s git repo" — has significantly increased. GitClear also found there was a marked decrease in the number of lines of code that have been ‘moved’, a signal for refactored code (essentially “care and feeding” to make it more effective).

 

In other words, from the time coding assistants were introduced there’s been a pronounced increase in lines of code without a commensurate increase in lines deleted, updated or replaced. Simultaneously, there's been a decrease in lines moved — indicating a lot of code has been written but not refactored. More code often isn’t a good thing (sometimes quite the opposite); GitClear’s findings ultimately point to complacency and a lack of rigor about code quality.

Do we need to discard AI from software development?

 

This doesn’t mean we need to discard AI in software development and delivery. On the contrary, there’s plenty to be excited about. As we note on the latest volume of the Technology Radar — Thoughtworks’ report on technologies and practices we’re seeing across our work with hundreds of clients all over the world — the coding assistance space is full of opportunities. 

 

We noted Cursor, Cline and Windsurf, tools that enable what are called software engineering agents. What this looks like in practice is an agent-like feature inside developer environments that make it possible for developers to ask for a certain set of coding tasks to be performed in the form of a natural language prompt. It’s still very much a human/machine partnership, whatever the worst hype might have you believe.


That being said, to only focus on code generation is to miss the variety of ways AI can help software developers. We’ve been interested for some time, for instance, in using generative AI to understand legacy codebases, and see a lot of promise in tools like Unblocked, an AI team assistant that helps teams do just that. In fact, just last month we explored how Anthropic’s Claude Code could help us add support for new languages in a tool called Code Concise, which we use to understand legacy systems. Success was mixed, but there’s real promise.

Mike Mason, Thoughtworks
In a world where trust is becoming highly valuable... the work of software developers is even more critical to the infrastructure of global industry.
Mike Mason
Chief AI Officer, Thoughtworks
In a world where trust is becoming highly valuable... the work of software developers is even more critical to the infrastructure of global industry.
Mike Mason
Chief AI Officer, Thoughtworks

Tightening our practices to better leverage AI

 

It’s important to remember much of the work developers do isn’t developing something new from scratch. A large proportion of their work is evolving and adapting existing (and sometimes ‘legacy’) software. Sprawling and janky code bases that have taken on technical debt are, unfortunately, the norm. Simply applying AI is likely to make things more janky, not less. Approaches like vibe coding will only make matters worse.  

 

This is why developer judgment will become more critical than ever. In the latest edition of the Radar we called out AI-friendly code design, based on our experience that AI coding assistants perform best with well-structured codebases. 

 

In practice, this requires a number of different things. This includes clear and expressive naming — to ensure context is clearly communicated (essential for code maintenance) — reducing duplicate code, ensuring modularity and effective abstractions. Done together, these will all help make code more legible to AI systems.

 

Good coding practices are all too easy to overlook when productivity and effectiveness are measured purely in terms of output: this was true before we got AI tooling too, and needs to be resisted.

AI assistance demands greater human responsibility

 

Instagram co-founder Mike Krieger recently claimed that in three years software engineers won’t write any code: they’ll only review AI-created code. This might sound like a huge claim but it’s important to remember that reviewing code has always been a major part of the work of a software developer. With this in mind, perhaps the evolution of software development won’t be as dramatic as the likes of Krieger are making it out to be.

 

But there’s another argument that as AI becomes embedded in how we build software, software developers will take on more responsibility, not less. This is something we’ve discussed a lot at Thoughtworks: the job of verifying an AI-built system is correct will fall to humans. Yes, verification itself might be AI-assisted, but it will be the role of the software developer to ensure confidence. 


In a world where trust is becoming highly valuable — as evidenced by the emergence of the Chief Trust Officer —  the work of software developers is even more critical to the infrastructure of global industry. This means it’s vital their work is valued: the impact of thoughtless automation and ‘pure vibes’ could prove incredibly problematic (and costly) in the years to come.

Disclaimer: The statements and opinions expressed in this article are those of the author(s) and do not necessarily reflect the positions of Thoughtworks.

Dive into the latest Tech Radar