Obsession

Posted on May 19, 2015 by Derek VerLee

full disclosure

I’m not OCD, which is to say, I’m not obessive in the DSM, Obsessive Compulsive Disorder sense. I’m not much more “OCD” than the next guy. But I am compelled by a sort of perfectionism. I have a need to see things fall neatly into place. It bothers me when there are holes or gaps in the things I create. A discrepency against the rules I have created mentally, should either be explained both in terms of what it’s function is (why it should be an exception to the rule, not how it came to be), and how it can not effect the whole. Not “probably won’t” or “shouldn’t” or “I don’t see how it could”, but can not. If the gap can not be explained in both of those senses, it’s going to cause me stress.

Of course, I’m talking about programming, deployement, etc… Yep, my perfectionism does effect the rest of my life too, but in a little bit different form. I consider it a part of a matrix of related mental patterns.

tetris life

Like tetris, gaps are buried but not forgotten. I’m still carrying with me gaps from projects from years ago, long since passed on, and probably irrelevent. That’s bad. What’s worse, is the mental state I can get into. My mind obsesses, unproductively going over the issue again and again, looking for a way to close the gap. It causes irritation, frustration, and barely concealed anger.

The worst part is when my mind clenches up, it seems to clench so hard around some paticular gap or gaps that I stuggle to maintain perspective, and mostly loose creativity. Creativity, in terms of seeing outside the box (or in this case, the gap), and coorisponding creativity in terms of ability to create, or be productive.

and so

It isn’t entirely bad. Creating working software requires we create artificial boundries on what we should, and shouln’t do. One reason for this is that then number of programs we can create which seem mostly correct, is a vastly greater space than the number that actually are correct. The number of ways to write a program is vast, but for the vast majority of these, knowing for certainty that it will always do what you want is a very tricky problem. Other reasons include maintainability and readability.

seeking a way out

Let’s just stop creating gaps. If everyone would just understand my mental model of how things should fit together, well then, software would get built faster, have fewer bugs, and we’d all be a lot less frustrated, especially me.

While I’m waiting for that to happen, I’m seeking ways to maintain creativity and flexability in my thinking without loosing what’s good about my rules and my tetrisy approach. Maybe part of that is allowing myself to change the axis of my perception; is the gap a real gap, or a change to improve the rules I play by? But also I think it’s time to take the mental clench, the frustration and anger and other feelings that fuel the feedback cycle of nonproductive obsession, and learn to let it go. Easier said than done –

without shame

I have a sense that the trick lies with self compassion, and acknowleging the good that these feelings have done and the good intentions behind them, rather than focusing on the bad, which just adds a layer of guilt and more frustration into mix.

Of course, I’m not just talking about programming anymore (but also programming).