Failing is one of those things we’re taught to avoid. It’s positioned in direct opposition of succeeding, in the way of being great at something.
And rightfully so: it can be awful. You know it isn’t the result you wanted, and yet here you are, exhausted, with a wholehearted effort that looks more like a flop.
Except for one thing— failure feels kind of great.
There’s something kind of great about throwing yourself into something so fully. Something that often gets forgotten about in the middle of failure is progress. Failure can suck, but it’s still progress, and movement in any direction is better than no movement in any direction at all.
On our first day at Flatiron School, Avi Flombaum told us to enjoy ourselves because, “You’ve already jumped off the cliff. It’s not going to do you any good to scream all the way down.” It’s a good reminder to enjoy the ride. If you're putting in work toward something you’re passionate about and want to get better at, failure is going to happen, inevitably. Without it, you’d just succeed at everything, which would suck even more than failure. Imagine never having to struggle through something, and getting everything you’ve ever wanted to learn on the first try. Nothing would be rewarding anymore.
However, there are some ways to, well, fail at failing. A failure born from a half-assed effort that was never really given the chance to succeed provides less of a lesson than a failure born from a full effort. So really, it’s less about failing, and more about failing smarter— or rather, failing, not flailing (coming back full circle with the title).
How to Fail (& Hopefully Not Flail)
Learn from every aspect of the process.
As soon as something pops up that’s unfamiliar, make a point to look it up. An old literature professor used to make us religiously write down and look up every term in our readings that was unfamiliar to us. It felt cruel at the time, but it’s been an extremely beneficial habit to have in the ol' learning arsenal.
Go back and redo.
Some of the most clarifying times in code for me have come from going back and revisiting a problem I felt like I mostly understood, but was still fuzzy about how a few parts work. It’s easy when working through something to breeze by because you’ve got the gist of what’s going on, but it’s often those little minor details that don’t fit into the gist that will trip you up later on. Going through something that isn’t totally clear step-by-step will help you realize where you need to fill in the gaps in your understanding.
Be open to learning.
Most importantly, perhaps the best way to avoid ineffective failure is the willingness to learn. I think it’s a natural tendency to start shutting down when you sense that you’re not doing well. However, that’s the time you stand to learn the most. Being open to learning and understanding why your effort is heading south is like, the single greatest possible way to learn exactly what is going wrong, why it’s going wrong, and learn how to not make that same mistake again. It’s like putting a binding.pry right in the middle of your effort and tinkering with the elements until you figure out what’s working and what isn’t.
Embrace the stupid.
You're a beginner, and could literally not know less than you do right now. So don't worry about seeming stupid— you are! As Milton Glaser says, "There's only one way out. Embrace the failure."
Success != Success
Sure, the answer may be right and the problem technically solved. But is there a better or more efficient way the problem could have been handled? How else could you have approached it? Taking a look back at something that's been solved and reexamining the approach can hold some enlightening lessons as well.