When coders have crazy unreadable code its referred to as “spaghetti code.” Single strands of code are impossible to trace through the tangled masses coders can weave. When this happens, it becomes incredibly difficult to understand the original intent of the code, the order in which changes were made, and how to go about making things better. This creates something known as “technical debt”. As time goes on, the difficulty in interpreting the code makes it time consuming and expensive to expand upon or to fix bugs.
It strikes me that this is very similar to the specifications that I have seen through the years. At project conception, one person might sit down and write a spec. Between conception and the start of coding, any number of people might edit that spec, introducing, editing, or removing features from the project. As the project begins and progresses, the spec is altered even more. Change orders occur. Off-line detailed conversations are hastily added to the spec or worse yet, included as an addendum. Soon we have spechetti – a document that has been through the hands of many, with differing intents, reflecting dozens of unrecorded conversations.
Spechetti creates a type of “legal debt.” Teams are required to satisfy difficult-to-decipher legal code that can be easily interpreted differently by others. Conflicts grow as interpretations diverge. Interpretations diverge the more granular (and difficult to find) operational clarity is in the spec. This makes the product time consuming and expensive to finalize.
The goal for projects should therefore not be to create a comprehensive spec that can be argued about at completion, but to create a legal and management system that actually drives agreement, clarity, and good business decisions while the project is in-flight. To do this, emphasis is placed on contracting for operational imperatives and not implementation specifics.
Existing contracting mechanisms create legal debt as a matter of course. We need a new kind of collaborative, non-punitive contracting system that replaces mounting legal debt with a mechanism that actually creates social, creative, and business capital.
Well, that sounds easy doesn’t it?
Tune in next time for what will kick off a series on Agile Contracting.