I’ve always been a little more tenacious than most people I know, willing to spend the time to flail before making the breakthrough that gets the results I’m looking for.1 I think part of that has to do with the fact that I do most of the flailing in private, at a computer where no one can point out my failures or see what I’m working on before it’s ready. But as I’ve taught other people programming over the years, I’m always surprised at how quickly they throw in the towel on problems that I know are solvable.
In fact, I’ve been able to come up with a good metric around if someone will be successful in programming or not and it’s all in how well they handle frustration. Frustration is a major part of the job. In fact, you could say that frustration is the job. I’m handling the frustration in getting this thing to work so that you don’t have to. People are willing to pay a lot of money to have that happen. I’m not saying that I don’t have skills that will save them money or make them money, but my best skill is that I’m willing to live with a lot of frustration in getting us there.
If I’m interviewing someone for a programmer position and they’re getting frustrated and giving up, I would never think of hiring them. As a programmer, you are either experiencing frustration each and every day or you’re doing something you’ve done before and not growing. And if you don’t know how to handle frustration without giving up, you’ve done far too little of the former and way too much of the later.
Which might be why I don’t see frustration as a bad thing, something to be avoided. If I’m not frustrated, I’m not learning. Frustration is the signal that I’m working on something important and all the different avenues I’m exploring in trying to solve the problem are things that I’ve never attempted before. Frustration is a friend that lets me know I’m on an interesting path. It might feel like I’m stuck or that I’m an idiot or that I don’t know what I’m doing, but I’ve felt that enough times to know what none of those feelings are true. Like the soreness you feel after working out2, it means that I’ve worked hard and I’m growing and I’m closer than ever to reaching my goals.
Some people say that being frustrated is like banging your head against the wall, and if that’s true then I guess I just have a harder head than others because I know that if I keep at it, that wall is coming down. But I see it more like I’m climbing a mountain. I’m climbing this mountain and I get to a point where I can’t go any higher. There’s a shelf that juts out above me or there’s just sheer rock with no finger holds at all. Here, in my analogy, most people just climb down and go home, thinking the task was impossible or beyond them. But there has to be a way. Other people have climbed this mountain, so it’s got to be possible. So I climb back down a little ways and try a different route. Dead end again? Try something else. And I’ll keep trying because I know something about frustration that others don’t seem to get:
- The feelings of frustration–stupidity, hopelessness, failure–aren’t real. None of that is real. The reality is that I just haven’t been here before, which is nothing to feel bad about and is actually a little exciting.
- The frustration is a sign, a sign that I’m learning something new. Something that no one has, or possibly can, teach me and I must learn by doing it.
- I will emerge on the other side with the right answer. I don’t know how or when, but I will succeed. Somebody has struggled with this before and if they can do it, so will I. And it will feel awesome in direct proportion to how bad the frustration felt.
So don’t give up. Ever. The best way past frustration is through it. There is another avenue. There is another way to approach the problem. Always. Can’t think of it? Take a nap. (Completely serious.) More experiments will come to you and eventually, I promise, you’ll figure it out.
You always will.