I have been thinking a bit on two system approaches to handling messiness: one that is oriented towards mess ‘prevention’, and another that is more tolerant of messiness but instead prioritizes sense-making. Of course, it is possible to spend effort on both fronts when designing and implementing a system. But sometimes a compromise has to be made and one approach has to prevail on the other.
This thought process was seeded through recent experiences at work and also by points raised in online discussions that I follow. After boiling down the issues to what I perceived is a root cause of many misunderstandings, I realized just how much I prioritize sense-making over mess-prevention. Don’t get me wrong, I really value mess prevention and a good system or process design should set well-defined boundaries. However, if I could think of an efficient way to make sense of existing or future mess, I would gradually lose ‘faith’ in the need for mess-prevention efforts.
For example, my preference for sense-making leads to heightened interest towards natural language processing instead of required semantic mark-ups. I admit that I routinely use structured data formats, such as found in JSON/XML specifications or implied in relational database systems, so I don’t think I under-appreciate the importance of mess-prevention. However, where there are no systems or specifications in place, I am more open to considering lightweight systems with minimal requirements. Similarly, I like dynamically-typed programming languages and search engines that attempt to make sense of whatever and however I write.
There is just too much to lose when requirements are over-specified too early. In a research environment such as where I work, I think the tools chosen should be more naturally inclined towards sense-making rather than mess prevention. Enforcing manual code versioning steps is simply inappropriate especially when there is an opportunity to automate routine commands, such as creating hooks in git or mercurial. Time spent complying with strict standards would be better spent conducting actual research. A tool that has a good balance of tolerance for messiness and built-in capabilities for sense-making should be preferred over another that requires strict enforcement.
It’s sad that I have not been given an opportunity to explain all of the above where I work. But at least I have my personal projects where I could express the approach that I prefer and blogs to demonstrate what I mean.