All information about software is contained in the software itself. Looking through an executable can be like reading a historical document. Programmer's quirks, late-night hacks, and beautiful insights all become visible. Eventually, the overall architecture and design appears, and we gain glimpses of the environment that produced it.<p>But unlike the executables, our source code is designed for humans to read, and only incidentally for machines to execute. When important information is hidden away in design documents and our heads, the code slowly changes from an orchard into a minefield. When you need to ask someone how something works or how to change a module rather than glance at a few lines or diagrams, we begin to lose our status as masters, and become trespassers. When we entangle our code, we entangle ourselves.<p>As programmers, we strive to put our souls in the code, making it a timeless artifact that can stand on its own. Creating software that can live apart from its creators is an ideal that few reach, but it is necessary if we wish to avoid spending a lifetime on child support.