It’s much easier to get programmers to throw away documentation than it is to get them to throw away code. And writing at least some documentation up-front, explaining how one would be expected to interact with the eventual code, often does a great job of exposing potential problems.
Or as the Zen of Python succinctly puts it:
If the implementation is hard to explain, it’s a bad idea.
If the implementation is easy to explain, it may be a good idea.
— the guy who successfully planned out the Franco-Prussian War thirteen years in advance
It’s much easier to get programmers to throw away documentation than it is to get them to throw away code. And writing at least some documentation up-front, explaining how one would be expected to interact with the eventual code, often does a great job of exposing potential problems.
Or as the Zen of Python succinctly puts it: