Blake Smith

create. code. learn.


on programming and finding mental rest

There’s something about working inside of your head all day that’s quite dangerous. A programmer’s mind is a place that’s in a constant struggle to bring organization to a chaotic stew of information. You spend all day sifting through your thoughts and the thoughts of others to try to glue together solutions to today’s tough problems. If you develop software for a living, you’ll spend more than half of your waking life trying to distill concise and simple business rules from long and messy conversations, or trying to dig deep into code that’s complicated, confusing and not as well tested as you thought it was. At the end of the day, your job is to bring order to chaos, to take all the jumbled mess of ideas that whirl around your organization and build something clear, coherent and well-structured.

So here you are, daily lassoing the ideas that are running in your head and trying to temper them into something that feels tangible and real. You’re building something that’s taking shape inside of your mind, but will never really exist in true physical form in the real world. You’re working one level detached from the senses of experience: you can’t touch a program, nor can you smell it or taste it. If you wanted to pick up a program and hold it against your face you’d probably start to look funny rubbing your cheek against your laptop screen. Even when you see a program, what you are seeing is only something represented on a glowing screen. Instead of building things that exist in the real world like roads and buildings, you’re building virtual roads and buildings that only exist through the expression of an idea. You’re hammering ideas into logical structure, rather than hammering a nail into a 2 by 4.

It’s not easy to spend all day inside your head. Your mind is often a much scarier place than you ever really imagined. It’s a mess of emotions and stresses and relationships and conflict and loss and pain and fear. We’re not creatures who can exist purely on logic, and yet so often that is the type of thinking that computer programming rewards.

In spite of this, I have come to realize that the software developers I look up to the most are the ones who are able to get outside of their heads. They are the ones who find ways to instill all the aspects of humanity including logic and reasoning into their work. They are the ones who can approach the keyboard each day as a well-rounded person who can see all the components that go into building great software, and that means not just the code that’s on the screen.

Last weekend, my wife and I were just waking up on a Sunday and the first thing I started telling her was about some new software project that I had been thinking about. I think she knew I had been thinking about it a lot because I started to talk really fast and my eyes started to get really big and I was twirling my hair while I told her about it. She was groggy, just waking up, but the way she looked at me made it clear that she was still listening. When I got done telling her about this idea, she just smiled, patted me on the head and said, “Oh honey, don’t you ever just want to give your mind a break? I think it needs to rest sometimes.”

My wife is amazing at listening to my crazy new ideas and being really encouraging, but she had a really good point. When do I ever really get to slow down? When do I make the intentional effort to give my mind the healthy break it deserves? A successful programmer is one who’s moving faster, learning more, and coming up with more and more ideas, but how can we ever expect the good ideas to come if we cannot give our minds the space to relax? A good programmer is also one who can operate comfortably at higher and higher levels of abstraction, but how can we appreciate those levels of abstraction if we’re so far removed from the here and the now?

I’ve seen what happens when these things are ignored, and it’s not pretty. Stress, anxiety and decreased levels of overall happiness soon follow the developer who doesn’t learn to get outside their head. Creativity drops, code quality decreases, and the pleasure of creating something starts to taper off.

Maybe getting outside of your head means something simple like exercise or a sport or hobby that requires some body movement and exercise. Maybe it means volunteering to help people by doing ‘menial labor’ that’s well below your pay grade. Whatever your physical outlet is, I encourage you to be intentional about pursuing it. Your success as a programmer means having a clear head that is given ample rest. Creativity and pleasure can only flow from a person who is well balanced and knows when it’s time to hit the mental accelerator, and when it’s time to hit the brakes.

about the author

Blake Smith is a Principal Software Engineer at Sprout Social.