I tend to be an optimist. I’ve had some pretty shitty things happen to me in my life, and sometimes I’ve found myself in a tight corner, but on the whole, things have tended to work out. Not always the way I’d planned or expected, but nevertheless I find myself some weeks or months later in a different place. Hard to say if that’s the cause or effect of my optimism.
Nonetheless, I take it for granted that things, on the whole, improve. I take it for granted that there’s a way out, a solution of some sort, even if it’s not the one I envisage at the time.
And this, strangely enough, is a useful tool for my work in developing software. We programmers tend to be an obsessive bunch. We like to have it all worked out before we do the next bit. My personal demon is that once I’ve thought of an optimisation, I physically can’t implement any new features until I’ve gone back and refactored everything. It’s like deciding halfway through laying the tiles in your bathroom that actually, yes, underfloor heating would be a much more elegant solution, and ripping out all the tiles, jack-hammering up the concrete, laying that underfloor heating, then re-pouring all the concrete, re-laying the tiles and then, only then, even thinking about looking in the Philippe Starck catalogue.
Ha – that just reminded me of a friend of mine who bought a kitchen and they forgot to sell him any drawers. For the cutlery. Not pants.
Anyway, yes – taking things for granted. At various times I’ve had the joy of running teams of developers, and without exception they have been delightful, intelligent, curious and engaging people. However it must be said that they share a tendency to obsess about problems for which they do not yet personally have a solution.
An example: I remember working with a very smart chap who had the job of implementing an application, part of which involved a serial control protocol for a piece of video equipment. He was convinced that the protocol prohibited the sending of instructions to the VTR which would cause it to pre-roll with frame accuracy. I became aware of this conviction when, after three weeks, none of the rest of the application had been started. His conviction had caused him to lose faith in the final goal, and he had been largely procrastinating because, like, what’s the point of building the rest of the app if it’s doomed to failure anyway, right?
I said to him that surely we could take it for granted the protocol did in fact allow for this feature because we could observe VTRs prerolling with frame accuracy under this same serial protocol by the VTR operators in our own video facility every day?
He blinked. Then he went back to his desk and solved the problem that afternoon.
Now this chap was smart, like I say. He was a great programmer, but he was lousy at the big picture. Not an uncommon description when it comes to developers, and I include myself. The solution, I strongly suggest, is just to take more for granted. Look around, see what other people are doing. If it looks like a solved problem, take it for granted that you, too, will solve it.
It’s very easy for obsessive people to go down a rabbit hole, and good developers are by nature obsessive. Sometimes, you just need to back the truck up, park it, and move on to something else.
And inevitably that something else will be far more important to your users.



