Shipping fast without accumulating quality debt
Generated code is fast to produce and slow to trust. The difference is whether the checks that would catch a defect run before you believe the work is done.
Generating code is no longer the slow part. Deciding whether to trust it is.
Quality debt is not ugly code. It is the gap between what a change appears to do and what anyone has actually checked. That gap is cheap to create at speed and expensive to close later, because by the time it surfaces you have built on top of it.
The gap is usually in the verification, not the code
A generated change is often correct. What is missing is the evidence, and the missing evidence is rarely the part a person thinks to add. Three examples from building this product, all of which passed review by a person reading the diff:
- A page answered
200for an address that did not exist. Every automated check passed, because the checks asserted content and never asserted the status. - Every primary button was unreadable in the operating system's high-contrast mode. An automated accessibility scan reported zero violations on the same page, because the failure was a rendering effect the scan does not model.
- A newly created project failed its own verification on the first run, on three generated files nobody had edited, because a single trailing byte differed from what the compiler emits.
None of these were subtle in hindsight. All three survived because nothing looked for them.
Write down the check, not the intention
The instinct at speed is to write the code and move on. The habit that pays is to write down what would have to be true for the change to be wrong, and then make something check it.
That is different from raising the test count. A test that cannot fail is worse than no test, because it converts an unknown into a false assurance. Before trusting a new check, break the thing it protects and watch it fail. If it does not fail, it was measuring something else.
Let the gates run without you
A check you have to remember to run is a check that stops running the week you are busy. Put every one behind a single command, make that command the definition of done, and make it fail loudly rather than warn quietly.
The point is not ceremony. It is that speed only compounds when the floor holds. Every hour spent deciding whether a change is safe is an hour not spent on the next one, and the way to spend fewer of them is to make the answer automatic.