2
Verification: Testing as the Core Discipline
Tests are the definition of done, written down and run on every change.
Why it matters when agents do the typing
Tests are where intent survives after the conversation that produced the code is gone. A test suite gives the same verdict on every run and does not care who is asking. When the same process writes both the code and its tests, both can carry the same misunderstanding, so the engineer's job is to own what the tests assert.
-
Core 2
Depth: do
Tests as Executable Specifications
Test-first thinking without the ritual: every behavior has a test, each test comes from a requirement, and nothing is done until the tests say so.
A mistake it teaches you to catch: A failing test 'fixed' by changing its expected value to match the buggy output.
-
Core 3
Depth: do
Engineering Robust Tests
Choosing the right level of test, controlling time and randomness, and building suites that stay fast, deterministic and trustworthy.
A mistake it teaches you to catch: Everything mocked, so the tests never touch a real database and miss every query bug.
-
Depth: do
Property-Based Testing and Test Quality
Checking invariants across thousands of generated inputs, and measuring whether your tests would actually catch a bug.
A mistake it teaches you to catch: Code that passes every hand-written example and fails on an input nobody thought of, such as an empty string, a huge number or combining characters.
-
Core 4
Depth: do
Continuous Testing and Fast Feedback
Running every check on every change so you know within minutes, and ideally seconds, when something breaks.
A mistake it teaches you to catch: A failing test marked as skipped so the pipeline turns green.