In my 20+ years of being involved with building software I tried to implement Test Driven Development multiple times and always failed. I did not only fail, I failed in a predictable way.
When deadlines or budgets tighten, developers drop tests first.
Next, documentation goes out the window.
The absolute last thing to fall is code quality: developers still try to write clean, readable code as much as they can because they know they have to debug and maintain it tomorrow.
AI-assisted coding and Large Language Models have completely inverted this failure model.
Because LLMs generate tests, docstrings, and markdown specifications effortlessly, tests and documentation are no longer the casualties of speed - they are the easiest assets to produce and keep.
Today, code quality is the first thing to fall, while documentation and test suites remain maintained.
In the classic model, a passing test suite meant someone took the time to define business rules and write assertions - which was hard. In the AI era, tests are often generated alongside or after implementation code by the same model.
This leads to problems with having performant and maintainable code even with LLMs still, so I guess we do need another way to approach the problem.
Before LLMs, technical debt was expensive to write. Adding 500 lines of boilerplate required manual labor, which naturally incentivized developers to seek clean abstractions and DRY (Don't Repeat Yourself) patterns.
With LLMs, generating 500 lines of code takes three seconds. The AI defaults to verbose, defensive, and highly repetitive code structures because token generation favors explicit, predictable patterns over clever, lean abstractions.
The role of the developer has shifted from author to auditor. However, reviewing AI-generated code supported by full tests and documentation creates new unique cognitive traps and problems.
Code reviews must now focus on line-count reduction, abstraction quality, and removing redundant logic rather than simply verifying if tests pass.
What kind of a quality assurance framework we are going to end up using I do not know, and as a business focused washed up engineer I am probably not going to be the one solving that problem. But I am intrigued.