The Journey: From Coverage Metrics to Behavior-First
The final post in a 9-part series — tying together every lesson learned on the journey from brittle 80% coverage to resilient behavior-first testing.
A collection of articles documenting my journey thus far of living a full life while building successful companies.
The final post in a 9-part series — tying together every lesson learned on the journey from brittle 80% coverage to resilient behavior-first testing.
How test-driven development becomes even more powerful when AI agents write the code — tests as contracts, specifications, and the primary communication channel.
Why the first thing I look at in any pull request is the tests — and how treating diffs as a communication medium makes code review faster and more effective.
How shifting from code-first to behavior-first thinking transforms testing, TDD, and API design — and why it matters more than ever with AI agents writing code.
How well-written tests serve as executable specifications that document what your code does, for whom, and why — and stay in sync automatically.
Why testing every class creates fragile tests, and how testing at the behavior layer reduces test count while increasing confidence.
How assertion chains and the normalize function let us verify outcomes instead of checking properties, making tests resilient to serialization changes.
How the Builder and Test DSL patterns transformed 50+ broken test files into one simple update when a constructor changed.
Why setting a goal of 80% test coverage and testing every class created a test suite worse than having no tests at all.
The story about how the PGA Tour led to my first open-water swim
Initial commit; Initialize the blog with the first post. Introduce myself and explain what the blog is about