Preventive Maintenance

As I'm sitting here waiting for the numbness from my root canal earlier to wear off, I'm thinking about the preventive maintenance I could have performed to prevent needing it.  The standard stuff comes to mind of brush on a more regular basis, floss or use mouthwash, visit the dentist at least twice a year.  You know, the basics.  Stuff that is fairly common knowledge, but it's a matter of taking the time out of an already busy schedule to do the work necessary.

How does this apply to software?  If you think about it, it parallels pretty well.  Having to fix a bug in production is much the same as spending time in the dentist chair getting a cavity fixed (or in my case, a root canal).  Even worse is a full outage due to a error lingering in the code base that could have been prevented early on.  Code audits done every week or two is similar to brushing and flossing daily to prevent rot.  Checking with users a few times a year ensures the product is still fitting their needs and performing as they expect.  Granted your dentist doesn't come to you checking if everything is okay, but a couple check ups a year still prevents bigger problems.

It even applies to IT professionals.  Sure everybody does backups because it needs to be done, but how often are the backups checked by restoring from them?  If a system winds up becoming corrupted and a backup fails, it's the same as having to have a tooth pulled.  Both have to be replaced entirely.  On a more regular basis they should be verifying the systems are running as expected.  No excessive CPU spikes, adequate free disk space, no bloated memory usage.

Just as a toothbrush and floss help with regular maintenance of your teeth, tools like unit testing and system monitoring help with hardware and software maintenance.  The real question is, how often do you practice your IS & IT maintenance?