This blog post makes me uncomfortable, because it's going to be about something fairly personal. I'm going to be talking about my biggest weakness, my biggest personality flaw, that which keeps me from becoming a great developer: Paralyzing fear of failure. It's a personal subject to me and I'm uncomfortable talking about it, but I think it's a good thing to get out of our comfort zones, so here goes.
Of late, I've been meditating on my job quite a bit. I'm not dissatisfied with my job at all; rather, I'm dissatisfied with my performance at my job. I find throughout the day that I hesitate to get projects started, I hesitate to finish them, and I hesitate to work on already-begun projects. I'll get distracted and work on something else. These acts of hesitation and distraction have become more pronounced of late, either because they've actually become worse or because I've just begun noticing them more. Regardless, I knew it was time I figured out what was going on, so I thought about and meditated on the subject.
The conclusion to which I came startled me: Deep down, I'm afraid that I'm not smart enough, that I don't know what I'm doing, and that those things will lead to failure. I'm afraid to start a project because I'm afraid that I won't be able to figure out some part of it and I'll look like an idiot. I'm afraid to make big decisions about the projects on which I'm working because I'm afraid they might be the wrong decisions. I'm afraid to finish up my projects because I'm afraid that when I let a superior look over my work, he or she will say I was wrong.
This fear would manifest in the deadliest of ways, by causing me to hesitate at each part of a project. I would put off each part of the project to avoid the confrontation with myself, the questioning of my ability and intelligence to solve the problem. This fear would also cause me to distract myself from my current project. Once I'd get to a part of the project that I was afraid I might screw up, I'd say, "Oh, hey, here's this other thing I need to do," and I'd again put off that confrontation. In short, my fear was causing me to sabotage my own efforts. It would take me far too long to start a project and far too long to finish it.
So how does one conquer this fear? I conquered it by simply thinking of all the things that I've accomplished in the last year. I compare myself as a developer now to myself as a developer even three months ago and realize that I'm always learning a mind-boggling amount about my job. Foremost, I realize that this growth in my job has enabled me to solve all kinds of different problems using all kinds of creative solutions. When I realize how many times I've doggedly solved a problem to which I had almost no understanding when I first confronted the problem, it shows me that I've been in the trenches of these kinds of conflicts for quite a while. In fact, I've realized that our job as developers is to creatively solve difficult problems. This change in viewpoint produced a change in actions: I now enjoy starting new projects because I know that I'll be presented with a problem to which I must apply my logical and creative thinking skills. I enjoy finishing projects because I enjoy contributing to the success of my company and feeling that I've created something of value.
A very wise leader once told me that fear is an emotion just like love, and like love, we as humans cannot control it. He said that what separates successful people from unsuccessful people wasn't a lack of fear, but a resolve to do one's job and perform one's duties in spite of that fear. Those words were spoken in a much more dire context than programming, but I've found as I've gotten older that it applies to almost every facet of life.