Umbilicus Mundi


Originally published 25 April 2010

After a few years of attempts to understand engineers and customers, I have come up with two analogies that make sense to many people.

Brushing cats.

I have a fairly long haired cat who likes to be brushed. The evidence is conflicting about the benefits or harm, and even the success or failure of the brushing.

  1. The brush is always filled with loose hair in a minute or two, so it must need to be done.
  2. She stands still and purrs loudly while being brushed, and will do so as long as I care to participate.
  3. She never goes bald, which is an indication that loose hair is constantly being produced by some unseen mechanism.
  4. You can stop for a few minutes and pick back up where you started or completely lose your place. It seems to make no difference to the cat or the outcome.
  5. At some point, I have to go to bed even though the job seems unfinished, and she is still covered with loose hair.

"Debugging" is a cat brushing activity, and cat brushing conversations are as likely to be had with customers as with the engineers. Customers may fail to perceive the benefits of a managed release, and frequently urge the engineering staff to make many tiny changes that only point to the things still left undone -- a pile that never shrinks.

I suppose there is always air brushing, but I will leave that for another day.

Brushing teeth.

Some years ago, I knew a woman who had a lot to trouble with her teeth. She just did not get the good dental genes, and it frustrated her that I had no cavities, no root canals, etc. She told me to use more toothpaste, and she frequently passed along advice to me not to use the soft or the medium or the hard toothbrushes; I have forgotten which. After a bit of listening I told her my theory that the important part about teeth brushing was doing it often and after meals, not how much toothpaste was used, nor exactly which manufacturer's toothbrush.

There are many things in software development that are like brushing teeth: just be sure to do them rather than not, and it is probably unnecessary to further optimize the activity. The most prominent analogy is in the field of tools and processes: it is important to do backups and to follow a version control system --- which tool is used or what time of day the backups are taken is an order of magnitude less important.