Why don't people use formal methods? (2019)
- Programming
- Developer Tools
- Infrastructure
- AI
The post argues that formal methods fail to spread for practical reasons, not because engineers are irrational. Different tools solve different problems, specifications are hard to write, proof effort often lands best on small components or designs rather than whole products, and most software does not justify the cost. That framing held up. The strongest comments pushed the same core point harder: the hard part is usually not proving code against a spec, it is writing a spec that actually captures what you mean. The classic sorting example kept resurfacing because it shows how easy it is to prove the wrong thing. "Returns a sorted list" allows an empty list. Even adding length checks still misses duplicates. You do not escape ambiguity. You relocate it into the spec.
Treat formal methods as a targeted design and risk tool, not an all-or-nothing purity test. If you own infrastructure, concurrency, or safety-critical code, start with the narrowest high-value properties and the lightest tools your team can actually sustain, often stronger typing, model checking, or specs around critical algorithms.
-
hillelwayne.com
- Discuss on HN