The late comedian Mitch Hedberg once said:
My shirt is dry-clean only, which means that it is dirty.
This is one of his many funny one-liners, but it has significance when making software. If it’s a pain to take a shirt to a dry cleaners, you’re not likely to clean the shirt at all. The same goes for unit testing, making reliable backups, having a branching strategy, etc. Sometimes the tools you’re using make it hard to follow these best practices, so they don’t get done.
If you find yourself saying things like: “Branching, oh no, we use VSS, merging is a nightmare!” or “I can’t unit test, our code has so many dependencies”, maybe it’s time to start looking into fixing the reasons why you can’t branch or unit test. Maybe switch to git, or a recent version of TFS if you can. Set up some dependency injection so that your code is easier to test. Sometimes it’s not easy to make these types of changes, but it’s usually worth it.
What are some other “Dry-clean only shirts” in the software world, and how can you fix them?