97 Things Every Programmer Should Know

(Chris Devlin) #1

Collective Wisdom from the Experts 109

entropy or internal complexity grows and its maintainability decreases. How-
ever, this is probably the wrong question to ask first. Remember that we are talk-
ing about a solution. It may not be your preferred solution—it is unlikely to be
anyone’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.

  2. Change the forces that influence the decision of the project manager.

  3. Leave it as is.

Let’s examine these options more closely:

  1. Avoidance is simply not an option in many cases. There is an actual prob-
    lem to solve, and the standards have turned out to be too restrictive. You
    might spend some energy trying to change the standards—an honorable,
    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
    change. It could be successful in very small projects—especially if it’s only
    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 super-
fluous, to provide a more elegant and useful solution. May you be granted the
serenity to accept the things you cannot change, the courage to change the
things you can, and the wisdom to know the difference.

Free download pdf