1. 12
    1. 8

      No plan survives contact with the enemy

      1. 14

        — the guy who successfully planned out the Franco-Prussian War thirteen years in advance

      2. 7

        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.