The simple bug tracking system that works for our two-person team
π¦πͺ²ππͺ°π¦πͺ²ππͺ°π¦πͺ²ππͺ°
I love scaling up systems β Thereβs nothing quite as satisfying as knowing something you hacked-together is working and helping the team rather than creating too much process. Itβs part of the beauty of really thoughtful software. When it feels familiar, work becomes effortless.Β
But making familiar software takes a ton of testing.Β
Itβs part of the reason why the best product teams like Apple and Linear take time to release things β the first draft of a software product will inevitably run into a lot of wonky edge cases that cause stuff to break, and you need a team of people to try to simulate as many of those edge cases as possible before you send it out to hundreds of thousands of people. One way you could simulate the wonky edges is to use a tool like Synthetic Traffic, but another is to just get as weird as you can with the app youβre building.Β Β
Just tracking bugs is a challenge in of itself, regardless of the tool you use. Couple that with the need to fit it into the minefield-discussion of how your team should manage tasks (Coda? Linear? Jira? Notion??), and youβre looking at a really gnarly and enraging debate. Itβs the difference between sipping a nice glass of fresh squeezed orange juice and getting a vat of vodka-Red Bull-pickle juice-sriracha dumped on you β itβs aggressive, sour, spicy, sticky, and a non-ideal Tuesday night.Β
There are infinite combinations of how people track bugs, but I wanted to share our system we use today because it may inspire small teams to focus on what will get more things done today, rather than find the perfect system to scale before you really need to.
We originally started working in Linear, as one should when preparing for scaling, but had a realization with our workflow: As much as we love Linear, organizing all of our bugs was actually getting in the way of getting the work done.Β
We needed to go simpler.Β
Kiet and I communicate asynchronously in Slack and Google Docs, so we needed a source of truth for bugs that was super easy to understand and organize. Ideally, the source of truth wouldnβt have to be another thing we need to check or log-into or have to remember where to find.
We started in Slack with our #bugs channel, where we came up with a color system using four bug emojis that communicate what prioritize at a glance.
:butterfly: = Feature request / larger UX improvement.
:beetle: = Small improvement / smaller UX suggestion / cosmetic adjustment
:ladybug: = Medium issue <-- default if you donβt know what to rate
:fly: = Shit / broken / crashing / really bad stuff
Why did we assign each of these roles to those specific emojis? Itβs mildly intuitive, and if you look closely, itβs a color spectrum from good to bad.
π¦ Butterfly / Blue β Good! Improvement, suggestion etc.
πͺ² Green Beetle / Green β Small improvement / cosmetic adjustment, not too critical.Β
π Ladybug / Red β Bad / needs attention.Β
πͺ° Fly / Brown β Really bad / poop / critical to be addressed.
What does the bug marking system look like in practice?Β
For example, letβs say that Kiet put out a new release, and I came across a bug while testing. Iβll drop a new header section in our Bug Tracking Google Doc for the date (an easy proxy for the likely version weβre testing) and make a checklist of what I come across. At the beginning of each point though, Iβll add the right bug emoji to make it easy to organize at a glance.Β
Kiet or I will often batch bug requests into groups, because the Butterflies (feature requests) can be put off for some time while Flys (Critical issues) need to be addressed much sooner.Β
And because this is done in a Google Doc, we can discuss, and re-batch bugs as needed depending on how long we think they could take and how urgent they may be. The Google Doc also gives us a long record of feature ideas weβve come up with in the past, so as we plan what to release next, we can go Butterfly hunting with CMD+F and start a new list of features we want to prioritize.Β
We have a #bugs channel in Slack where we originally were tracking these, and most of our conversation has shifted from the #bugs channel to the Bug Tracking Doc for asynchronous things, but the #bugs channel is a helpful place to track conversations without crowding the docβs sidebar. Also, because Slack is great for sharing screenshots and files, it can be better for providing richer context than Google Docs.
As an additional boost to our bug tracking, I set up a Zapier automation that will send a bug to our document if someone reacts with a bug emoji on a message.Β
The Google Doc is our source of truth, and itβs an easy to format checklist for us to work through, while we use the #bugs Slack channel for active back-and-forth discussion on bugs. Because each bug in the Google Doc has a link to the Slack message, we can continue to reference the discussion while keeping the original checklist clean with the general idea of the bug, and none of the noise.Β
If youβre just starting out on a project, my biggest advice would be to go simple with your tools. Every second you spend trying to build out a fancy system is time and energy spent away from either building a product or talking to people who youβre building for.Β
Paul Graham wrote about the idea of βPlaying houseβ in his essay Before the Startup and itβs a continued reminder that systemizing things or getting too complex with how you set up your processes is just not important in the early days.Β
We are big fans of these tools that help teams work together effortlessly, yet until we bring on more people outside of the founders, we need to keep things lean. If youβre asking yourself the question of βwhere do I put this ticket?β too often because you set up some project management tool that has way too many features, you may need to go simpler.
Youβll have plenty of time to systemize your process later, but for now, try catching bugs in an easier format.Β
This is an awesome idea! A fun way to reframe bug fixes lol