About Bugs


Bugs! No matter how many times coders swear they will stop writing bugs, those ubiquitous creatures keep surfacing.  Even with layers of testing defenses, inevitably, bugs make it into production, where users can experience them.  The solution?  Have contingency plans in place for when they surface.  Here are some tips about releasing apps in the inevitably-buggy digital world.

Monitoring

Ensure you know when your app has a bug by monitoring how it’s doing in the field.  There are plenty of great services these days for remote monitoring that not only tell you when your app crashes but also give you logs so you can debug it.  At an absolute minimum, you’ll want remote crash reporting. Remote logging is also useful for issues that users hit that don’t crash the app.

Rollouts and Beta Testing

One easy way to limit the damage of your buggy app is to release it to fewer people.

Staged rollouts are a great tool for this. If you only push your crashy app to a small amount of users, then you’re limiting the scope of your disappointment while garnering the opportunity to address the issue with minimal blowback. fewer people.

You should also have a beta-tester program where testers opt to use less stable early releases for a great early warning system.

Feature Flags

Feature flags allow you to enable or disable features in your application.  They’re great for developing new features – i.e. when you release a new feature and something goes wrong, you can disable it without having to put out another release.

Timing

Never release just before a break – i.e. . weekends, holidays, vacations, conferences ect…  When something goes wrong…and it will…breaks over!

The Update Killswitch

In extreme cases, you may want to remotely disable the entire app and force users to upgrade. At Trello, we have a remote flag which can be used to render an old version of the app inoperable.

Do NOT take killswitches lightly – you’re also killing a lot of goodwill with your users when you activate them. However, they’re good to implant into your code just in case, for peace of mind. It’s better to have it and not use it, than not have it and need it.

For the record, we have never had to use our killswitch, so I have no fun stories about it. I’m sure that whenever we do use it, the story will make for a good post-mortem.

Ignore the Little Things

Finally: chill out.

Chances are, your app is not controlling Hawaii’s missile alert system. If the app crashes once, or something goes minorly wrong, it is not the end of the world.

You would be surprised how forgiving users are for one-off crashes or issues with easy workarounds. As long as they like your app as a whole, they’ll keep using it.

Your first instinct may be to rush another release out the door to fix the bug. Resist the urge! Rushed releases are much more error prone. Unless the issue is critical, take your time to fix it correctly.

We all release buggy apps, but if you go about it in a reasonable manner, you can live to tell the tale. Follow the steps above and you’ll sleep better at night.

 

Leave a Reply

Your email address will not be published. Required fields are marked *