Saturday, October 25, 2008

Constraints are good

I may have written about this in the past.. I dunno. Also, someone seems to have put extra zen in my coffee this morning, so consider this a pontification warning.

If you check out this blog posting by Jamis Buck at 37Signals about embracing constraints, Jamis talks about self-immolation due to neato-creep and how important it is to realize the real world issues and separate them from the coolness factor issues you may have in your head. Part of me agrees with this -- part of me also thinks that sometimes we need to make the kinds of mistakes Jamis talks about in order to learn. If "less is more" then you need to understand more before you can understand less. That journey is incredibly valuable and I think Jamis' post is mildly dismissive of that. I don't think it was his intention to do so, but I think it bears pointing out the value of experience.

I think more importantly, his posting made me remember why I think the "embrace your constraints" is a valuable idiom. To me, it's because your constraints create the context in which you make decisions and by embracing your constraints you're lead to a better understanding of Why you're doing what you're doing. It means you can look at the environment, not just the moss on the side of the tree.

Why is this important for System Administration? I've too often seen admins get upset because the situation wasn't optimum for the conception of a system they had in their head. Instead of stepping back, embracing the constraints, and progressing toward their goal with a new understanding of the context, they'll shut down and not do anything, or rant-and-rave and make others fall into their line, or just do what they wanted in the first place and say "damn the torpedoes!" ignoring the constraints and end up with more enterprise cruft. That never works well for anyone and I think is a major reason why smart people hate enterprises.

Embracing constraints requires thoughtful reflection of the situation. Not doing so creates a toxic environment of anti-intellectualism [1].

Look at any ERP or Business Intelligence implementation and then look at what it replaced, and you'll see that the names are different but the larger issues are probably the same. It's because those systems, in a very real-world way, interface not just at data levels, but at context levels. They push and pull data that has a meta-value in the context of that data. Most people don't look at those contexts, or the corollary constraints those contexts give. So you end up with large brittle systems that mingle meaning and action and break when either change.

So, I guess, I don't think "embracing your constraints" as something of a trendy productivity enhancement catchphrase. Instead, I think it's a mantra for doing.

1 - Why is it toxic? Programming, System Administration, and computing in general all deal with virtual, logical, ephemeral things. They can and do change rapidly. Taking an anti-intellectual stance towards your environment means you'll never grow or learn with those things and always be in a reactionary, fire-fighting mode of operation. And you won't even know it. If you read The Daily WTF? you'll see examples of this every day. It's sad, really.

No comments: