designing for entropy

November 12, 2018

post-img

Created for the 1968 Mexico City Olympics, the painted, radiating pavements seen in this photograph are what remains of an ambitious urban orientation system, the remnants of which still define many of this massive city's urban spaces. Designed to unify the urban spaces and graphic identity of the event, the pavement was intended to immerse visitors to the Aztec Stadium, the country's largest football arena, in an urban-scale version of the well-known logo for the event.

These pavements have obviously faded over time, not least due to foot traffic to the sports venue. Their own decay is, in this sense, a perhaps inevitable consequence of their success as one of the attractions that draw crowds to this section of the city.


As a software engineer, I think about a similar set of questions as those this picture brings up very often. The most successful systems, including those driving the flow of some of the most crucial information imaginable, are similarly worn by their constant use. Like the pavements, which have been periodically repainted only to have the new coats of paint eventually wear off, many of these systems have been periodically patched in ways that have allowed them to remain functional.

If, like me, you have inherited legacy systems, you will know exactly what dealing with this type of patchwork situation looks like. But even if you get the chance, as I also have, to start something from scratch, you should keep the eventual decay of your system in mind. Everyone knows systems should fail gracefully when they fail (they all do), but we often pay less attention to how our systems will age, potentially become obsolete, eventually survive after being patched, or end up being replaced by other systems that do similar, hopefully better things than they do.

Inevitably, and perhaps particularly if they succeed, our systems will have to come to terms with their own entropy over time. Hopefully, our design will not only acknowledge this but even turn this condition into an advantage. While there is no real antidote to obsolescence in technology, clearly conveyed fundamentals and viable architectures allow systems to age gracefully and to be replaced by useful, better successors when their time is up.