If you have worked on any product at all that has seen a few winters, you would have run into that strange feature that almost nobody uses. It was built a long time ago and has been quiet and well behaved so nobody has noticed it. It might even be refactored now and then as others touch pieces of functionality close to it. Nobody notices it is there till someone asks – why is this here? Nobody uses it and it seems to be taking up space that it doesn’t need to. I call getting rid of such features, spring cleaning.
Here are a few reasons why it is important
- It adds complexity to your technology – there is always the possibility of bugs being introduced as new changes are made and just the fact that something exists makes it harder for new folks to understand the code or project
- It complicates the product – the fact that there is a functionality makes it easy to be reused and leveraged. If the functionality is old and not thought through, it is possibly affecting how new features are being built. For eg. if a UI element has a certain animation (which hasn’t turned out to be very useful), it is going to be mimicked in new designs and implementations and continues to add cost to development.
- Features accumulate. One of these old features may not matter much but the lack of a culture of spring cleaning usually means that there are more than one of these features scattered in your product. These translate into a hard to measure but gradual drag on progress.
Despite knowing all of this it is still hard to decide to do it. Here is why
- It is hard to quantify the benefit easily
- Building new things is more fun – same as buying new stuff is
- Fear of a backlash – There is a risk that someone somewhere cares about it enough to complain and you are afraid that it will put you in an awkward spot.
- Fear of a mistake – You might break something essential when ripping out unused pieces
Despite all of these risks, it is still important to spring clean regular so you don’t end up with a product that is the equivalent of the following house
