Since Cursor launched their Composer Agent “Yolo” mode there’s been a lot of excitement about fully AI-driven development, where developers sketch out the intent and the agent generates the code. It’s interesting stuff, and I get why people are excited.
But what’s becoming increasingly clear to me is that modern engineering best practices aren’t just nice to have in this world – they’re absolutely essential. Without them, you’re basically handing the GenAI a loaded gun and pointing it at your own foot.
For one thing, if this is the case, the value of people with my type of skills and experience have just shot up significantly, which is why I keep coming back to this Kent Beck tweet from a couple of years ago:

Why good engineering practices matter more than ever
I see a lot of guides and people comparing using GenAI in software development to a pairing with a junior developer, but that’s the wrong analogy.
It’s much more like a toddler.
Just like a young child, GenAI has no real-world context. It grabs random things, unexpectedly veers off in bizarre directions, and insists it’s right even when it’s covered in spaghetti. It’ll confidently hand you a “masterpiece” that’s just glue and glitter stuck to your phone. Anyone who’s had young children will know this very well – you can’t leave them alone for a second.
GenAI can produce plausible-looking code at incredible speed, but it will happily generate code that’s subtly, or spectacularly, wrong.
Without good practices and strong guardrails around it all, you’re not accelerating delivery – you’re accelerating chaos.
The engineering practices that matter
None of these are new. They’re well-established, widely recognised best practices for building and maintaining software. They’ve always mattered – but now they’re essential. If you’re not in good shape on these fronts, I’d strongly suggest staying away from AI-driven development until you are. Otherwise, you’re putting your foot down on a trip to disaster.
- Clear requirements and expected outcomes – Knowing what you’re building and why, with clear, well understood, outcome-based requirements and definitions of success.
- Clean, consistent, loosely coupled code – Code that’s easy to understand, maintain, and extend, with clear separation of concerns, high cohesion and minimal unnecessary dependencies.
- High and effective automated testing – Unit tests, integration tests, E2E tests all running as part of your deployment pipeline.
- Frequent code check-ins – Regularly checking in code, keeping branches short-lived.
- Continuous Delivery – highly automated build and deployment. Releasing frequently (not every 2 weeks)
- Static analysis – Automated checks for code quality, vulnerabilities, and other issues, baked into your pipelines.
- Effective logging and monitoring – Clear visibility into what’s happening in in all environments, so issues can be identified and understood quickly.
- Infrastructure as code – Consistent, repeatable infrastructure and environments, easy to maintain and keep secure.
- Effective documentation – Lightweight, useful documentation that explains why something was done, not just what was done.
Most common but not common
I’ve long opined that whilst these are the most well established and common best practices, they are still far from common. Only a relatively small proportion of organisations and teams actually follow them well, and the amount of people in the industry with the skills is still comparatively small.
The reality is, most of the industry is still stuck in bad practices – messy code, limited automated testing, poor automation and visibility, and a general lack of solid engineering discipline.
If those teams want to lean heavily into GenAI, they’ll need to seriously improve their fundamentals first. For many, that’s a long, difficult journey – one I suspect most won’t take.
While already high-performing teams will likely see some benefit, I predict most of the rest will charge in headfirst, blow up their systems, and create plenty of work for consultants to come in to clean up the mess.
Final Thought
GenAI isn’t a shortcut past the hard work of good engineering – it shines a spotlight on why the established good practices were already so important. The teams who’ve already invested in strong engineering discipline will be the ones who may see real value from AI-assisted development.
For everyone else, GenAI won’t fix your problems – it’ll amplify them.
Whether it leads to acceleration or chaos depends entirely on how strong your foundations are.
If you’re serious about using GenAI well, start by getting your engineering house in order.