I learned quality in a factory.I run software the same way.
Seven years in consumer-electronics manufacturing for the world's leading brands, five of them on circuit-board assembly lines (PCBA, SMT). The tools changed. The discipline did not.
Why every station counts
Ten stations at 99% each ship only 90% good units.
0.9910 = 0.904 Quality is built in at each station. It cannot be inspected in at the end.
The line
Each factory practice has a place in how I ship software.
- Incoming inspectionEvery issue has the same form: what, where, how to see it.
- A frozen production planA milestone with a fixed scope. New ideas wait for the next one.
- One station, one jobOne pull request, one change.
- A test at every stationAutomated checks run on every change.
- Andon: anyone stops the lineA red check blocks the merge. Nothing bad moves on.
- Outgoing quality auditA reviewer with no context reads the change cold.
- First-article inspectionA release goes to a preview first, then to everyone.
- FA/CA and 8DEach incident: why it happened, why it got out, and a guard so it cannot come back.
- KaizenThe time of each stage is measured every round. The slowest one gets fixed.
The agent side follows Anthropic's AI-native SDLC playbook: plan, design, build, test, deploy, maintain. The quality side comes from the factory.
Critical to quality
Not every change needs the same rigor. What matters is whether a mistake can be taken back.
Cannot be taken back
Keys, logins, user data, update paths, releases.
Independent review. A person approves.
Normal
Features and everything else in the code.
Its own tests. Merges when checks pass.
Easy to take back
Documents, wording, colors and spacing.
Light checks. Fix forward.
Measured on real projects
- 35 → 15
- Open issues, once grouped by root cause. Five groups held 60% of them.
- 14 min
- One whole-release review. It found three problems that no single change review could see.
- 4.7 min
- Median time for a change to pass its checks and merge, over twelve changes.
- DescribeFacts and a timeline. No blame.
- ContainProtect the user first.
- Two root causesWhy it happened. Why it was not caught.
- PreventEach fix is a tracked issue with a guard test.
Want your project run this way?
nick@coolwhite.us