Failure. You failed. F. All of these are things we are unconsciously conditioned to loathe from a very young age. I remember hearing “do your best”, “get that A”, and “make me proud” all the time from my parents. I don’t mean this is bad advice at all, that’s not what I am saying. Those little sentences can lead to the development of a fear of failure. This is so common in fact that there is a name for it: Atychiphobia. Failure is definitely something that we should avoid if we can–always do your best to succeed. But it is something we should not be afraid of. The mindset that is not afraid of failure (in moderation) is the best one for a programmer with x years of experience (x means “any” for you non math people). This is something I really struggled with when I first started programming and still struggle with to this day. Because it has caused me so much anguish over the years, I am going to do my best to help you all avoid it by helping you understand how and when to fail properly (lmao what a weird thing to say). So sit back, relax, and prepare yourself for a more serious (and longer) post than usual.
First, like you will see that I often do, I want to start this off with story time… When I was a kid, there was a lot of pressure on me to be smart. Now, I am no geneticist or behavioral psychologist (I can’t even spell that word without spell check). But I like to think a person’s personality comes from a combination of genetics and nurture. Intelligence is one trait that I believe is impacted mostly by nurture. Like I alluded to earlier, I was “nurtured” into being smart. Both of my parents were intelligent and I was encouraged to be even smarter than they were. They would tell me “You are so smart”, “you are going to do great things with your brain”, and my personal favorite “he/she is just jealous because you are smarter than them” (in order to console me for someone not liking me or something). Don’t get me wrong, I love my parents and I don’t blame them for this at all… I never would have accomplished everything I have in my without them pushing me and I will probably say the same kinds of things to my children. They constantly encouraged me to be anything I wanted alongside the idea that, whatever I did, I would be good at it. By the time I got to school, I was already (subconsciously, might I add) self-identifying as one of the “smart kids” (or ‘nerd’ if you are not one). Being in school further solidified this persona in my head because other kids would reflect this self-identification back on me and I would feel like others saw me as one of the smart kids. Now at this point you may be thinking, “Wow, this guy is so full of himself. All he has done so far is boast about how people all around him thought he was a child prodigy or something”. Well hold on a second buckeroo. I am leading up to a point, I promise. To put it in perspective a little bit, I really wasn’t that smart. School came pretty easily to me because I started reading and solving math problems from a very young age. This background kept me afloat for a while without really trying, but when I got to junior high and high school, I went through a rude awakening. Because I inherently believed that I was very intelligent, I didn’t know the value of hard work, effort, and the effect that they have on success. I actually wouldn’t learn that I had to practice to get good at something until I was in college. For the first 18 years of my life, I just assumed that I would pick things up instantly because of the ‘inherent intelligence’ that I assumed I had. But this wasn’t even the worst part. The worst part was the constant fear of inadequacy that even now continuously plagues me to this day. Now I know that sounded pretty dark, but it’s the truth. I was petrified of the possibility of not meeting expectations. This caused me to never ask questions in school because I didn’t want to sound dumb. The only time I ever talked in class was to answer a question that I definitely knew that I was right on (yes, I am so sorry, I was THAT kid). When I would get something wrong, it would ruin my entire day. I would question how I could have been so stupid to get whatever it was wrong. Basically, I was deathly afraid of failure. So afraid, in fact that I would have rather ceased all efforts and quit rather than fail. Now there is a bit of a happy ending to this story. After all, I am writing this to you right now, so obviously I realized it and took care of it, right? Well… sort of. This fear of failure isn’t just a switch that you can turn on and off in your head. It is a condition that is embedded in your view of yourself. I still struggle with the idea of failure. For example, my last internship was at a very fast paced company in the Bay Area. I went into it feeling like I had a lot to prove and, because of this, ended up asking less questions than I should have in the beginning. Not having a super solid foundation almost cost me a job offer at the end of the summer and it was all because of my stupid, dumb, irrational fear of failure.
Well I just read it back (yes, I do proofread… surprising right?), and honestly. I just spent like five minutes rambling on to you about how my life is so hard now because I am scared of failure because people told me I was smart my whole life blah blah blah. Sounds terrible right? Yeah, not really. I’m not looking for any sympathy, though. That’s not the reason I’m writing this (can you imagine how messed up it would be if I WAS just doing this for sympathy?). I do ask you to consider your own situation. Are you afraid of failure? Do you have questions but think twice before asking because you are scared of them making you look unintelligent? Do you ever have trouble starting a project or business just because you don’t want to mess up? Well if so, then hopefully I can give you some tips for overcoming your fear. What kind of blog would this be if I only complained about my mistakes without offering ways to avoid them?
Believe it or not, the best thing you can do for yourself to get over your fear of failure is to fail (seems easy right?). Take more risks, ask more questions, and most importantly: seek out criticism. Over time, you won’t overthink the failure part in advance, and as a result, won’t be paralyzed to the point of not starting. I would gladly argue with anyone that failing is the best way to increase learning potential (I’m serious about that: if you don’t believe me, just ask me). As programmers, we are constantly learning. New technologies are being developed nonstop, and if we ever stop learning, then we fall behind and our performance can suffer as a result. So yes, in order to achieve a high level of success as a programmer, you have to fail… a lot. Luckily for you, I have outlined a few specific examples of ways that we can open ourselves up to the possibility of failure in our jobs. You’re welcome.
I have mentioned it a lot already as examples for various points, but asking questions is, in my opinion, the best (and easiest) way to open yourself to the opportunity of failure. It is a win win. Either you ask a question that is relevant, on topic, and increases the perspective of not only you, but everyone else listening. Or, your question makes no sense, everyone around you knows that you don’t understand, and you feel embarrassed. While one of those outcomes feels more attractive than the other, they are actually both productive (assuming you have believed everything I have said so far). The second outcome is a form of failure that can be very helpful to you. If something like this happens, then whoever you are asking the question to will know you don’t understand and provide a more in depth explanation of whatever it is you are discussing with them. Chances are you will also be hyper focused for this second explanation because you don’t want to look like an idiot again the next time you have a question. As a result, you will get a better explanation, be more confident in your own understanding, and will be more likely to remember this particular topic because you won’t easily forget your own embarrassment. I know its a total clique and some of you think it doesn’t have to be said, but the only bad questions are the ones left unspoken.
Seeking out criticism is another form of failure that I believe is crucial for programmers to be familiar with (and before you say that this isn’t really failure, criticism means you did something wrong in someone else’s eyes and wrong=fail. I know it’s a stretch but bare with me). Code reviews are a common practice nowadays. I, like everyone else, have many opinions on the specifics behind them, but in a nutshell, I think they are essential in the process of writing high quality code. The result of a code review is a (sometimes endless) stream of comments and suggestions that someone else believes are applicable to your code. It’s true, some reviewers are much more strict than others, but I am going to go out on a limb and tell you to TAKE ALL SUGGESTIONS SERIOUSLY. Wow, all caps. I must really mean that. And I do. Just having someone else’s perspective is invaluable. Now how does this relate to failure you ask? Well, you may have guessed (based on your own experiences) that even though most programmers will say to keep an open mind during code reviews, no one likes getting comments. Comments imply that something in your code is not perfect. If you spent hours working on an elegant algorithm, then the reviewer looks at it and says something like “would it be better like this…”, it will be hard to make the change even if you know they are right. Suggestions of any kind, not just during code reviews, register as a failure in our brain. As a basic social principle, we, as humans, try to please as many people as we can. A suggestion means someone wants us to do something differently because we have failed to please them (it sounds extreme, I know, but hear me out). This can be hard to deal with especially for young programmers (and young people in general) because they feel like they have a lot to prove (I know that’s how I felt). But I am telling you, this is the most crucial time to keep an open mind. Respect all suggestions and constructive criticism you may receive in your life. Like I said, someone else’s opinion is invaluable. If you are particularly bad at receiving criticism (like me!), then whenever someone gives you a suggestion, take a deep breath, try to see it from their perspective, and speak peacefully (i.e. not defensively). Pretty easy acronym to remember: breath, perspective, and speak peacefully; or bfs for short (I definitely did that on purpose for all you programmers out there). Going back to what I said in the beginning, you should eventually try to go beyond the bfs system for dealing with criticism and seek it out yourself. You will get even more used to it and become a better programmer because as a result.
At this point this post is very long so sorry about that. I am tired of hearing my own voice in my head while writing this and honestly I am not sure why you are still reading. I hope that I have been able to provide you all with some helpful advice because this is a problem that I have struggled with my entire life. I set out to write this post about why failure is good in a mostly professional context. But after writing this, I am realizing that I have failed far more in my social life (honestly I could probably write a book on it, lol). So I am saving my encounters with non-professional failure in my social life for a later post. For now, ta ta and happy failing!