In an attempt to steer my referrer logs away from the HTC Hero, I wanted to get back to something I mentioned on Twitter a while back. I want to talk about rabbit holes in your code.
After a while, all code will have at least one rabbit hole in it. You know you’ve found one when a simple looking change starts you scratching a little deeper because the fix isn’t working or there’s a code smell you can’t quite figure out. You peek, you dig, and suddenly you realise that a 5 minute job has taken half a day.
It’s time to step back and evaluate. Take the red pill or the blue pill. Do you paper over the cracks as best as you can or do you find out how deep the rabbit hole goes? Take the first option and you’re taking the technical debt deeper in to the red, but take the second and you run the risk of not fixing bug zero : shipping.
There’s no magic answer to the question. I can’t tell you which pill to take, but please watch out for rabbit holes in your code. Be prepared to deal with them. And be prepared to live with them. Every architecture has pain points that lead to rabbit holes, but some have more than others.
How have you dealt with your rabbit holes?