Hiten Shah asks on Twitter:
Can someone please explain to me how products used by millions of people have so many bugs?
Can someone please explain to me how products used by millions of people have so many bugs?
— Hiten Shah (@hnshah) April 12, 2024
I get frustrated with how we software users – which these days is everyone – have to deal with buggy software products every day.
In the many responses to Hiten’s question, there are many variations on “lack of care”
I agree.
- It’s often hard to work out how to report bugs to a website.
- It’s hard to make a good bug report that the product team can use.
- We’ve learnt through experience that reporting is futile, with the product’s support team act as a impassable barrier.
- Lack of dogfooding: the product team is not using their own product, so they don’t realise that we are all working around the bugs in their product.
- A certain style of product management that considers bugs as merely “backlog items”, rather than urgent priorities.
- The death of formal QA in much modern software development. It used to be that a software product would have a QA team. These days it is more likely that testing is reduced to some automated tests. In itself, automated testing is good, but it is only one part of a good QA process.
So what can you and I do to keep the bugs out of our software?
Many things. The most important is to choose to aim for bug-free software.
A non-exhaustive list of things that SaaS teams can do:
- Keep your team humble: remind them that yes, it is possible that our software has bugs.
- Adopt a “fix bugs first” philosophy. If need be, the product team stops work on a new feature to deal with newly reported bugs.
- When a bug is reported, don’t point fingers and criticize. Instead work together to fix it right now.
- Eat your own dogfood: encourage each member of your team to be actual users of your software. This step alone will find lots of bugs, get them fixed, and will make your software more pleasant to use too.
- Be clear in your docs, on your support page, and in suitable places in your app, that you welcome bug reports.
- Have a simple way for team member to report bugs. Consider adding a channel to your Slack/Discord/MS Teams called “Bug reports” where anyone in your team can mention any newly received bug reports via any channel or their own discovery of a problem.
- Use a tool like Sentry or Honeybadger that captures any unexpected errors in your app and reports them to your team.
- Make it really easy to deploy fixes and code changes to production.
- Make your deploy process fast.
- Train your team to prefer making frequent small changes to production rather than a few big changes.
- Avoid the knee-jerk response to a nasty bug or two of making deploys laden with process. It seems logical to add extra approval steps , but experience shows that more changes, mostly small leads to better software than few changes, mostly big.
- Do code reviews. According to Code Complete, there is empirical evidence that code reviews find a significant percentage of all bugs.
- Get at least one additional set of eyes to do a smoke test of any UI changes.
- I’m certain you have a staging server. Actually use it, with realistic data.
You don’t need to do all of these things, at least at first. Pick a few that work for you.
Combining multiple approaches works well. It will keep the bugs out of your software, even if the rest of the software world continues to have so many bugs.