Skip to content The Cached Exception

Failure is a Virtue

Published: at 03:00 PM

My insecurities around my intelligence, self-worth, and inadequacy had me in a rut again.

When I made a PR, I would tweak it for hours, with no end in sight. “What if they say this”, I’d ask myself, and my mental health and code quality declined as a result. Ultimately, I received neither approval nor acceptance, but the simple, terse words “This is not the right solution.”

Software is Hard

Software development can be difficult. It’s a neverending journey of learning and growth. The moment you feel settled, you cease to grow meaningfully. A perpetually filled-to-the-brim list of tasks, self-doubt bouncing around unchecked.

We glamourize efficiency and productivity, and whilst not bad virtues on their own, I find them restrictive for fulfillment and happiness.

There is some amount of satisfaction from software, but purpose? I just don’t know if that’s what software was made for. We’re here to make other people’s visions come alive. To fulfill other people’s aspirations. Rarely do we see responses to our work, but rather just a Jira ticket moving to the Done column before we start anew.

The Failed Promise of Idealism

What if I can craft the perfect PR, the first time?


Avoid criticism at all costs. This is the dogma one often follows when struggling with imposter syndrome. Critique is one of the oldest fears, after all, and we helplessly tie it to our adequacy, or lack thereof.

I have flaws, and make mistakes. So what of it? If I quadruple check my work, I will never face the sting of inadequacy, the embarrassment that will certainly follow after I fail in front of my colleagues.

Paradoxically, this stunts true growth, and makes it impossible to conquer this fear at all. As I’ve talked about before, discomfort is the most effective catalyst I’ve found for growth and learning, and by purposefully avoiding it, you rob yourself of some of the most important lessons.

Moving Forward

I’ve decided that this is simply not the life I want to lead. Failure is the learning process. Failure is growth. And I’m not willing to forgo growth in this life for safety.

But how do we do this effectively? I’ve compiled a short list of steps I’ll be taking in the near future, and would love it if you would as well.

Set Smaller Goals

We often, as humans, are bad at estimations. Atomic Habits and Tiny Habits both do a great job of explaining this concept in depth, but the TLDR is that we work better with consistent, small feedback that we’re doing the right things. Exercise? Just start for 5 minutes each day. A new project? Take a simpler issue at first. Our jobs, after all, are all about breaking down complex tasks into more manageable ones!

Check In

As someone who struggles with imposter syndrome, I find myself halting for much too long before asking for help, especially when contributing to OSS. I don’t want to get in the way, or mess up the codebase. But this tends to lead to long gaps in between communication, where it’s easy to get too invested in the wrong solution. We should be willing to check in with our superiors, and ensure we’re on the right track. Most are simply satisfied that you’re spending time on their project, and are willing to help out. Just ask!

Reflect

Failure is not exclusive to external pressures. You should also be willing to look at your own past projects and reflect upon what you think worked, and what might need some work.

Conclusion

I firmly believe that failure is a virtue—a skill I haven’t mastered yet, but one I’m eager to learn and grow from. I genuinely hope this article was insightful.

Happy hacking, everybody!