Feb 192014

Have you ever been working on something, and had a thought how something should be done, started to talk it out with somebody, only have the phrase “it’s not that important” get used? If it’s not important enough to think about doing well, why are we thinking about doing it at all then?

Let me stop and differentiate here, I’m not talking about “it’s not important enough to do right now, but we’ll need to do it in a later release”, or “that’s not something we should worry about right now”, or even “that’s over-engineering given the scope and expected use-case of this software”. I’m talking about just flat-out, purely dismissive “it’s not that important”. As in, “Who cares? It’s not like this is really worth expending effort on.” Maybe it’s just growing up with a father was fond of saying things like “If it’s worth doing, it’s worth doing well [or right]”, but “It’s not that important” bugs the crap out of me.

Here’s the thing, time is extremely precious, hence that “time is money” cliche. You don’t want to spend money on something that’s important, so why would anyone want to spend their time on something that isn’t important either? It’s important enough to be doing, so it’s important enough to justify taking the time and effort to do correctly. Yes, it may take longer, and be more work than the problem seems to justify, but that’s OK. The job will be done well, and in a way that you can recycle it for something else later, and you’re going to want to dust it off and use it later.

Development can move fast. Sometimes you want to throw something together, get it released, and then go back and tune it up based on user reports. That’s fine, but you should always be working under an assumption that whatever it is you’re doing has some type of actual value. That impending deadline may mean you hard-code in some stuff for the 1 use case you have right now, but if you have time to write proper configuration files, write proper configuration files and put as many specifics as you can in there. If some nifty design makes it easy to turn that one-off to a system-wide option,  do some nifty design, even if nobody has any intention of using it anytime in the foreseeable future.

“It’s not that important” is where technical debt comes from, and time has a tendency to making the decision to do things the right way the first time the right call. Whatever it is you’re doing, this is worth precious, and very limited, time out of your life, don’t fall into the trap of thinking that it’s not important.

 Posted by at 1:46 AM