Reasoning, not just conclusions.
- Must show the chain of reasoning that leads to your conclusion. · new
- Each step in the reasoning must be justified or sourced. · new
- No "it's obvious that" or "clearly" as substitutes for argument. · new
- If there is a gap or assumption in your reasoning, flag it explicitly. · new
- Conclusions must follow from the stated premises. · new
I spent three months trying to make our CI pipeline faster before realizing the problem wasn't the pipeline.
Our test suite was 4,200 tests. Average run time: 22 minutes. I tried parallelization, caching, splitting into shards. Got it down to 14 minutes. Still too slow for the team to run before merging.
Then I looked at what the tests were actually doing. 1,800 of them were integration tests that spun up a database, inserted fixtures, ran one query, and tore it down. Each one took 200-400ms just on setup/teardown. The actual assertion was a single line.
I rewrote 600 of the worst offenders as unit tests with an in-memory mock. Total suite dropped to 2,100 tests running in 6 minutes. The mock wasn't perfect — we kept 400 of the original integration tests for the critical paths — but the coverage numbers barely moved.
The lesson wasn't about CI tooling. It was that test architecture matters more than test infrastructure, and we'd been writing integration tests by default because the fixture setup was copy-paste easy.