On Making it Better

November 7, 2009

If you develop software for a living, you’re plagued ceaselessly by thoughts about how to make the software you build better. Sometimes, this results in feature creep. One will often try to stuff more into an application in an effort to make it ‘better’, to make it ‘do more’. After some years of experience, you realize that ‘more’ is not the same thing as ‘better’, and you stop doing that.

Once you move past that, you start trying to make your software ‘better’ in other ways. Sometimes, this means that you start to over-think the problems that your software is trying to solve. By this time you understand that it becomes exponentially more difficult to change your software as it becomes more specialized, so you start to prepare for eventualities. You write code ’safely’. In popular programming culture, this usually leads to someone coming up with some new paradigm that will, end hunger and cure cancer, such as “object-oriented programming”, or “modular programming”, or lists of acronyms such as RAD, SCRUM, TTD, etc. Mind you, none of these are bad ideas, but in the context of the argument I am making, they are ways of looking at your code to make it ‘better’, by securing it’s malleability in the future.

The problem is, for most of us, figuring out what the right balance of making it “better” and making it work, is something we never really master to perfection. While you are planning and re-factoring code, you aren’t actually getting anything done in the terms of man-hours or deadlines. You’re just making it “better”. This is not a bad thing. That’s called computer science, and thinking is encouraged. However, I think the people who pay us may occasionally have very different ideas, and hence, we need that balance.

I pride myself on trying to stay very pragmatic in my approaching to developing software for clients. I pride myself on the fact that I usually get the balance of “right or done” well adjusted, or at least close to. However, I am horribly, horribly guilty of failing in that balance on this blog. I’ve started at least four separate code bases for my blog – and to what end? Because I wanted to make it better. I’ve decided that that is a complete waste of time, as I should have done in the beginning. So, I am starting over; one more time. Completely fresh, and hosted by someone else so that I can’t be tempted to touch it.

So, fresh start for me. Good. Now, a fresh start for you. What are you working on that should be done by now? Maybe it’s time to be a bit more pragmatic.

Leave a Reply

You must be logged in to post a comment.