Please Crash!

Not long after I moved to San Francisco, I started singing regularly with a choir.

I hadn't sung with a choir in years, and this choir was pretty advanced: their material often included frequent key changes, and it was all sung a capella: without accompaniment.

I sucked. I was the worst singer, by far. So what did I do? I sang loud and confidently.

Why? For the same reason it is so, so important to crash: errors that cannot be observed cannot be fixed. By singing loudly, I made sure that my mistakes were really obvious! That made it much easier to fix them, and I became a much better singer much more quickly than I would have otherwise.

I know that crashes are scary. They inconvenience our fellow engineers. They inconvenience users. They trigger loud workstreams where people run around with their hair on fire trying to understand what the problem is.

There are scarier things than crashes, though: you can read a stack trace and see what happened. A system that eats crashes, on the other hand, can be completely broken in production without leaving any breadcrumbs to follow, or even any operational sign that there is a problem.

Crashes are our single best tool for surfacing errors in the apps we work on. Crashes get fixed, no matter who notices them.

Every crash that is hidden silences a customer having a bad experience with our product.

So: Please crash!