In 2015 we tried a new technique for fixing bugs. Instead of fixing issues as they come in we triaged them. When enough collected, our entire team took a break from their normal projects and focused on fixing bugs - a bugmash. Using bugmashes for bug fixing has taken a depressing process of constantly fixing broken software and turned it into a joyful sprint to the finish line. Here's how we go about it.
Look at bugs weekly
Every week a few of us gather in a Google Hangout to talk about the most recently updated bugs in our GitHub issue tracker:
For each new bug reported we take the time to consider the impact of the bug. Does it affect many people? Is it in an area of the application that is soon-to-be redesigned? Is it likely to be difficult to fix?
Our discussion about these questions will lead us to mark the bugs with various labels: Priority: Low, Priority: Medium, Priority: High, Low-hanging Fruit, and so on. If we run into high priority bugs, like security concerns or bugs impacting a large percentage of customers, we will look for someone to solve the problem right away.
Bugs tagged Priority: Medium or Low-hanging Fruit are ideal candidates for a bugmash and we give them one more label:
Watch bug counts
Over the weeks and months, the collection of bugs labelled ¡A GO! grows bit by bit. We keep our eye on this number as it helps to determine when we call our next bugmash.
So far we have found when the bug count gets above twenty it's getting to be time to pay down our debt. Since calling a bugmash involves interrupting the entire team, we look at projects and events going on at Harvest to help us to schedule the bugmash with as little impact as possible. For instance, we've found scheduling a bugmash directly after one of our biannual Summits in NYC to be a great fit. When the team returns home from a joyful week of socializing, it feels pretty good to clean house.
Bugmash until it's done
We do not have bugmash weeks at Harvest, but rather we have bugmashes. Since our weekly bug processing work has led to a pile of bugs that are of excellent value to complete, it makes the most sense to focus on fixing them all rather than constraining ourselves to a one-week window. However, we definitely reserve the right to pull a bug out of the bugmash if we discover it's not worth the time required to fix it. At Harvest we're fortunate that the entire organization supports the idea of bugmashing until it is done.
Make it fun
Since a bugmash involves the whole team taking a break from their normal projects, it’s a great time to work with someone new. It’s also good to take time to cheer on teammates as they mash bugs. It feels great to celebrate polishing up your product. (This is especially easy when you have worked at Harvest as long as I have and you see someone smoosh a four-year-old-problem-in-one-form-or-another once and for all!) Shout about progress at the end of each day — it’s part of what makes it fun!
Here's our HOWTO:
- Grab a bug: Find a bug labeled ¡A GO! and assign it to yo'self.
- Chat: Devs room in Slack.
- Track time: Bugmash – August 2015.
- Celebrate: Announce mashed bugs on Slack with hashtag #bugmash: "With the help of Doug I mashed the bug where PayPal payments weren't updating invoices. #bugmash"