Of bugs and purple wires
I picked up a copy of Frederick Brooks, Jr.’s seminal work, “The Mythical Man Month: Essays on Software Engineering” a few weeks ago and finished it this past weekend. Despite being written over three decades ago, there is a lot of great content here, and much of it still relevant. One quote that struck me comes towards the tail end of the book, and orthogonal to the more commonly cited content about the futility of adding more developers to a late project.
In System/360 engineering models, one saw occasional strands of purple wire among the routine yellow wires. When a bug was found, two things were done. A quick fix was devised and installed on the system, so testing could proceed. This change was put on in purple wire, so it stuck out like a sore thumb. It was entered in the log. Meanwhile, an official change document was prepared and started into the design automation mill. Eventually this resulted in updated drawings and wire lists, and a new back panel in which the change was implemented in printed circuitry or yellow wire. Now the physical model and the paper were together again, and the purple wire was gone.
Programming needs a purple-wire technique, and it badly needs tight control and deep respect for the paper that ultimately is the product. The vital ingredients of such technique are the logging of all changes in a journal and the distinction, carried conspicuously in source code, between quick patches and thought-through, tested, documented fixes.
System Debugging, p. 149
I wonder, has much changed in the past thirty plus years in software engineering? What is the equivalent of the purple wire? The best I can think of is ensuring that no bug is fixed without a corresponding unit test being put into place to validate the change and to guard against regression. I am very new to the industry, however, and I would love for the more experienced of my readers to share their thoughts on the matter. How do you ensure that the quick fix that inevitably gets put in with a quick // TODO: Remove this hack comment actually gets the attention it deserves? Is it just a matter of every coder being ultra-vigilant? Does your company have certain standards and practices relating to this problem?