Good Software Design Requires Continuous Fighting Back Against Entropy


I believe Entropy is a natural thing all around us. It's a main driver in our current understanding of the Laws of Nature and our concept of time progression. It's the spreading of energy, changing from 'high frequency' to 'low frequency'... the effect all of us get for free.
Creating order and information is acting against the natural stream of Entropy. As Entropy is an always present 'force of nature', the act of creating order or new information is a continuous uphill battle. Continuously swimming up stream. Relent a moment and the slow current of Entropy will slowly take back what you built.
Semantic Diffusion erodes the clarity of definitions if not actively reinforced, just like the Telephone Game demonstrates to easily to children. Relaying information degrades as each transmission has to deal with noise being added, enabling misinterpretation that allows further corruption of the message... Each 'network hop' another gamble that information remains unchanged... unless repeaters are introduced and Wave-Form Correctors to solidify the signal again away from the noise.
Software Design captures information in it's code and syntax. It codifies desired behaviours, rules and relationships between concepts and pieces of information. But Semantic Diffusion also erodes the clarity of Software Design.
Lack of documenting a fact or design intent and trusting on Tribal Knowledge Sharing is enabling Semantic Diffusion to happen and over time the corruption and loss of information. Which in turn enables misinterpretation of design intent, misguided software implementation that enables corrupting the design and reducing it's order and possibly even destruction of codified information.
Quick and Dirty hacks also enable the reduction in the order of a software design and just as well the possibility of destruction of codified information.
I believe the only 'cure' is discipline. A mental fortitude akin building the physical stamina to continuously swim against the current. To resist temptations lurking around various corners and to continue to repair damage to the overall software product and it's supporting documents and it's related persisted information. To ensure that an intended change in design intent is being reflected throughout the product: it's code, it's documentation and it's people currently working on it and the on-boarding guides for those that come after. Failing to do so and you're enabling Semantic Diffusion and in turn enabling the product you built and the company that paid you to build it to lose it's investments over time.
But besides that, the world around the software product changes too. New technologies emerge, competitors rise and fall, wars happen, supply lines get disrupted and new ones created... The problems the software product aimed to solve, are contextually changed by the changing world. New pain points may emerge that require adjustment to the software product. Previously known pain points may disappear resulting in overhead that can now be removed from the software products. Failing to detect changes in the contextual use of the software product threatens it's usefulness. As the product loses usefulness, its captured information becomes irrelevant over time. It's Entropy at play again, but working from the outside-in, instead of from the inside-out. But for this, discipline isn't enough. You also need Contextual Awareness to perceive the change happening (like applying the practices described in Wardley Mapping) and the knowledge how those changes affect the value of the problem-solution dynamic your software product offers.
If your goal is to maintain the value of a software product in the long term, you'll need discipline and contextual awareness. Two key skillsets that enable you to fight back Semantic Diffusion and Entropy.
Subscribe to my newsletter
Read articles from S.L. des Bouvrie directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
