Saturday morning weeding has turned into a quick 1 hour endeavor which I share with my wife. There was one area I neglected for about a month though and figured I would tackle it head on. As I was digging and pulling, similarities of software that has been neglected started coming to mind.
- The more time that you let weeds grow, the harder they become to pull out. The tiny thistle for instance, can be quickly grabbed just below the surface and usually the root just comes straight out with it. I often see code that may not be optimal get reused and reused because no one wanted to refactor it. The next thing you know you have a very stubborn area of your code that you will need to clean up
- The sprawling weeds. These are the ones that don’t have a lot of roots but they pop up all over the place as little nuisances. I liken this to inline styles in html, or a set of code that get’s copied over and over again with comments and all just to change a variable. Pretty soon, it becomes a mess when you need to change it all up.
- The worst are those weeds that infiltrate the root system of the good plants. In software, you can see this manifest as design pattern overload or global variables (I hope no one does that anymore).
What are the weeds in your software?