Bugs

August 8, 2012

There are two kinds of bugs (I'm talking software). The first are the ones that keep you up at night, the ones that you're itching to squash but you can't find the ten minutes it takes to, the ones you know when you're rid of you'll feel a big burden lifted off your shoulder. The ones you know that are going to be painful but when it's gone, and no one will ever have to deal with it again, no matter how minor, you'll be so relieved and happy that there's one less bug in this world.

The other kind is another one that keeps you up at night, but they offer no sense of satisfaction, the ones where you hate that they're there, you hate fixing them, and you feel like shit afterward because you had to take the time to fix them. It's hard to describe these bugs, and they're rare, except in one glaringly obvious case: Internet Explorer. No matter how skilled and how much you practice and how beautiful your code, these are the things that will go wrong and you'll spend half the time figuring out what hack to do about it.

The first type is kind of endearing. It's clear I feel strongly about the second type. So it was unimaginable relief when we decided to just drop IE. Try it. It might not be the end of the world like you think. Of course this seems like something you have to make clear from the outset and not in the middle of a project. But think of it this way. You're doing these people that need to upgrade a favor. They deserve better.

It feels good to cross off a huge list of bugs in the course of a day or two. This list probably built up over a few days (or weeks) and you've tackled the most urgent ones as fast as possible, but there are the ones that build because you need to spend some time moving forward, not constantly patching things up. These aren't hard, although they can be frustrating, like a missing comma, or you need to refactor something minor, or it was just a silly slipup that you know the immediate solution to.

So I think we have a solution to fixing these non essential but heart wrenching bugs (every bug is heart wrenching). You know that amazing feeling you get when you push something you've been working on for a while? Like a new feature, fully tested, a couple weeks worth of engineering time put in, with even more sketches and iterations and thrown out ideas behind it? Treat your bugs like one of those. A mini project. Section off into one project you think you can finish in a day or two and dive in. You find that the momentum from pure concentration finishes them off quickly. We found one day a week works quite well.

Not only is it faster, but it almost feels like you fix the bugs better. When you have a whole day for it and you don't feel bad about it, its a lot easier to write tests, go about it carefully, and completely eradicate it instead of band-aiding it up which is tempting when you just want to move on.

Get in the zone when you fix bugs. It makes it fun.