Exhaustive Test Suite
Exhaustive test suites (i.e. nearly 100% test coverage) make a lot of hard problems easy.
type checking: like I'm doing with ASDL. You can have a very strict type system, but have it be dynamically checked. It's trivial to implement and helps program correctness a lot.
buffer overflow detection and security testing: ASAN
performance testing. Microbenchmarks, etc.
better code structure due to fearless refactoring