Software Development with Linux

Do less do better do more

MON, 01 JUN 2009

It's something we all dislike, but express in different ways: feature creep, spaghetti code, verbosity, etc. Nobody likes those. Yet, we encounter this everyday. Why is it so hard to not fall in those anti-patterns?

We should not be (too) ashamed of this, since it does not affect only the software industry. Writers are also concerned about this bad behavior too. William Strunk Jr. and E. B. White talk about omitting needless words in The Elements of Style. If we look even farther, Mission Creep is the same problem again, but in another different domain.

Since I'm a software developer, it's the software domain that interest me most. In 2001, Kevlin Henney published a pretty good paper on the subject : "Minimalism: Omit Needless Code". Every software developer should have read this at least once.

This is in line with the KISS principle, and something we see everyday when using command line Linux tools. We got a multitude of tools, but each of them does a single simple thing.

Unfortunately, it is easy, as a software developer, to add every thinkable features. We like to create. We like to code. We like to show the worlds every great stuff we can produce. And it's not hard to add that small feature, it's just five lines of code.

Five lines of code that result in more testing. Five lines of code that result in more documentation. Five lines of code that may result in five more bugs. Solving those five bugs increase the code size, again.

Before adding more stuff, you should be damn sure that :

  • what you are already working on is 'Done'

  • it will add to the user-experience; it will provide some real benefits to the users

Otherwise, you may be heading the wrong way. You'll wake up some day, look at your code, realize that it's all a mess, and wonder how it came to this.

But that's not what you want. You want to be proud of your work. You want happy users.

So do less, but do it better, that's how you'll be doing more.