Fear is such a fun topic to think about because it's one of those primal drivers of our own human existence. We can't seem to get away from fear and yet we do everything in our power to try very hard to minimize it's effects in our lives. We're constantly trying to numb out fear, make ourselves fearless, and just plain out ignore the fears that get in the way of what we want.

I think programmers have to have a special relationship with fear in order to get anything done. We're constantly being thrown into novel situations where we have to deal with machines that won't talk to each other, programming languages that seem to spring up like dandelions, and the very real fear that we're not good enough to tackle these challenges head-on. I know in my own experience that I worry that I'm not good enough or that I'm somehow letting everyone down by my actions or my inactions.

Tonight I was reading through the "The Rust Book" where it was talking about The Slice Type. It mentioned the &str type (which is a "pointer to a primitive string slice"). I then flashed back to my days of learning C when I kept getting & and * confused. Which one was the reference and which one was the dereference? I felt the fear rising up in me as I went to Google to search on that. I looked for a reference card for C to explain which was which (* is a pointer, & is an address. * dereferences, while & references. Simple, no?). I then wondered if I would ever get the terminology right or if I was going to be doomed forever to have to look these things up.

I then looked on Google to see if there were any tips on how programmers could work better through pushing through discomfort. Maybe there was something that I was missing.

You'll note that I'm not linking to any articles here because the advice I read was pretty terrible.

There was one site that (after the "take this quick quiz to see if you're a broken human being. Oh, congrats! Sign up for our free newsletter") had advice about how you just need to power straight through this, and that burnout didn't exist. It also talked about how famous programmer Scott Hanselman made a point to post a podcast every one to two weeks about a complex programming topic, and if he can do it then you can too. So to summarize, just keep working at it sport and everything will be just fine.

Needless to say I think that's half right and half dangerous.

I think there is value in pushing yourself to see how far you can go and running into your fears enough times until they no longer scare you. But I also feel that you can burn yourself out pretty heavily if you keep pushing yourself to the breaking point. We're not inexhaustible machines; we're human beings that have fears, neurosis, guilt, anger, and lots of emotional baggage that we cart along with us from project to project. What we need is a way to keep practicing with our fears in small doses until they no longer frighten us.

We also need to be kind with ourselves whenever we face a setback in our quest for knowledge. Learning is not about getting things right the first time, it's about breaking down neural pathways and preconceived notions until we don't have to think as hard about a problem.

Fear is part of the programming process. Learning to work with that fear and understand what it's telling us is far more useful than just powering through the fear. Much like powering through a painful injury only makes the injury worse we need to understand what our fear is telling us. Most of the time it's just saying "I'm scared that I can't handle this", which is a perfectly reasonable thing to think. But it's not the definitive answer on what we're doing. We can say "I don't know what I'm doing and that's why I'm pressing onward" and welcome our fear.

Here's to more fear in your programming practice, because it means you get a chance to keep practicing.