Allison's Law: "The mess has to go somewhere"

When I was a growing up, we had a standard of cleanliness in our house called "daddy-clean." My brother and I were asked regularly to clean are rooms, like most American children, but when we were done, mom would always ask: Is it daddy-clean?  This usually resulted in a second round of cleaning to make sure everything was out of sight.

There was a flaw to this paradigm, however, which was that daddy-clean only applied to things that were visible.  Thus, I learned the art of shoving everything under my bed, which had a convenient bedskirt to hide everything.  Toys, clothes, paper; everything went underneath.  When under-the-bed got full, the closet was my second choice.  Eventually my parents found out about this, due to an abundance of random objects poking out, but they allowed me my secret messes so long as they didn't get in the way of finding important things, which they occasionally did.

Nowadays my messes look a little different.  In addition to paper, I have more abstract things like source code.  And my experience growing up has taught me: the mess has to go somewhere.  Most of the time, this is just a trade off between different aspects of cleanness of an end product and time, but it applies in so many cases.

Consider the process of creating a user interface.  The mess can go into the source code; everything hacked together in an ugly mess underneath.  The mess could also go into the UI itself: bad design with beautifully easy implementation.  Or, the mess could be absorbed with lots of time to have pretty code and sleek presentation.

Or consider a different piece of software, like an operating system.  The mess could go into the kernel, into the user experience, or passed on to developers for that platform.  Or, again, the mess can be absorbed by lots of time and effort.

In my experience, the mess of the very pretty Mac OS is passed on to developers.  D3, with its steep learning curve and beautiful graphics, also passes the mess to programmers.  Easy-to-use and powerful libraries like ggplot2 for R probably put the mess in some combination of the under-the-hood code and time.

I've also been thinking about this in terms of (machine learning) model development.  Usually elegant models require an intense amount of time to polish into their perfected forms.

It's not always the right choice to absorb mess with time; sometimes a project isn't worth doing exceptionally cleanly.  I think it is always worth it, however, to consider where your mess will be going in order to make a measured choice.

No comments: