HACKER Q&A
📣 felixasher

When tests keep passing but design stops moving


I’ve been practicing TDD for a while, and I keep running into the same uncomfortable moment.

Tests pass. Coverage improves. Refactoring feels safe.

But at some point, the design just… stops moving.

Not because the system is “done,” but because the tests no longer seem to challenge anything. They mostly confirm decisions that already feel locked in.

I don’t have a clean explanation for this. What I started suspecting is that some assumptions quietly become fixed long before we realize they have.

That pushed me toward a few uncomfortable experiments.

For example, I started writing tests that cut end-to-end much earlier than felt reasonable, and tried to think less in terms of features and more in terms of “what must never break.”

I also started paying attention to what actually changes for me when a test turns green — often it’s not confidence in correctness, but whether I still feel the need to question a particular assumption.

I wrote up these observations here: https://github.com/felix-asher/the-essence-of-tdd

I’m not proposing a new methodology or a replacement for how TDD is usually taught. I’m mostly curious whether others have hit the same stall point — where tests keep passing, but design learning seems to plateau.

If you’ve seen this, what helped you notice it — or get unstuck?


  👤 aydin212 Accepted Answer ✓
That stall happens when tests stop being a design tool and become just a correctness check. Switching the prompt from "Does this work?" to "What would break if this core assumption changed?" has helped me break through it.

👤 JohnFen
I'm not sure I understand what your dev process actually is. I get the impression that you're using the tests you write as a substitute for design work. Is that correct?

If so, I think that's the root of the trouble. Do your design work as a separate step that precedes writing test cases.