Fail, Fail, Fail Again

Last week was rough.

GitLab did this:

A co-worker told me she messed up production data:

A friend at a different company told me she deleted production data:

Yikes!

But hey, that’s what happens in software development. People aren’t perfect. Software isn’t perfect. Mistakes are going to be made, and luckily tech companies know this and have processes in place to help minimize most of the mistakes. That is actually one of the aspects of tech that I value most. The recognition that mistakes will happen.

At the company I work for, the code I write is reviewed and tested at several stages throughout the development process before it ever reaches an end-user. And there are about a bajillion chances that undesired behavior or buggy code can be caught. Because tech companies know that software development is difficult and people make mistakes.

When you’re afraid to make mistakes, you are more reluctant to take risks.

In my jobs prior to becoming a web developer, this safety net was non-existent. I had my tasks, and I executed them to the best of my abilities. But there were no intermediary steps between me and the client. My mistakes were made apparent to clients immediately, and the blame was all mine. I quickly became terrified of making mistakes. When you’re afraid to make mistakes, you are more reluctant to take risks. And when you don’t take risks, your job is boring and your company suffers. When that happens, you’re unhappy.

As a web developer, I make mistakes every single day. I write code that has unintended side effects. I don’t implement some part of a feature. I forget to update critical documentation. The list goes on…

And while I don’t celebrate these mistakes, I own them and learn from them instead of fear them. I don’t worry that my teammates will blame me. I know that they’ve all made mistakes, too, and they’re still sitting beside me writing code. They weren’t fired for their mistakes. And we all support each other and do our parts to minimize each other’s mistakes and to handle them as a team when they happen.

Making mistakes is part of building software. Building great software requires taking risks. As long as you were taking those risks within the established processes, there is no use in worrying about how you deleted production data or how there’s a bug in the feature you worked on. Own it, learn from it, fix it. Then continue on with your day, taking more risks and making several dozen more mistakes. And learn from those, too. We’re all right there with you.