The Longevity of Interim Solutions

From WikiContent

Revision as of 12:24, 24 July 2009 by Kmarquardt (Talk | contribs)
Jump to: navigation, search

Why do we create interim solutions?


In most systems and teams you will find software that is somewhat dis-integrated from the system, that is considered a draft to be changed sometime, that does not follow the standards and guidelines that shaped the rest of the code. Inevitably you will hear developers complaining about these. The reasons for their creation are many and varied, but the key to an interim solution's success is simple: It is useful.


So the interim solution remains in place. Forever.


Is this a problem?

The answer depends on your project, and on your personal stake in the production code standards. When the systems contains too many interim solutions, its entropy or internal complexity grows and its maintainability decreases. However, this is probably the wrong question to ask first. Remember that we are talking about a solution. It may not be your preferred solution — it is unlikely to be anybody's preferred solution — but the motivation to rework this solution is weak.

So what can we do if we see a problem?

  1. Avoid creating an interim solution in the first place.
  3. Leave it as is.

Let's examine these options more closely:

  1. Avoidance does not work in most places. There is an actual problem to solve, and the standards have turned out to be too restrictive. You might spend some energy trying to change the standards. A honourable albeit tedious endeavor... and that change will not be effective in time for your problem at hand.
  2. The forces are rooted in the project culture, which resists volitional changes. It could be successful in very small projects — in particular if it's just you — and you just happen to clean the mess without asking in advance. It could also be successful if the project is such a mess that it is visibly stalled and some time for cleaning up is commonly accepted.
  3. The status quo automatically applies if the previous option does not.

You will create many solutions, some of them will be interim, most of them will be useful. The best way to overcome interim solutions is to make them superfluous, to provide a more elegant and useful solution. May you be granted the serenity to accept the things you cannot change, courage to change the things you can, and wisdom to know the difference. [1]

By Klaus Marquardt

This work is licensed under a Creative Commons Attribution 3

Back to 97 Things Every Programmer Should Know home page


Personal tools