A human being should be able to change a diaper, plan an invasion, butcher a hog, conn a ship, design a building, write a sonnet, balance accounts, build a wall, set a bone, comfort the dying, take orders, give orders, cooperate, act alone, solve equations, analyze a new problem, pitch manure, program a computer, cook a tasty meal, fight efficiently, die gallantly. Specialization is for insects.
- Robert Heinlein, Time Enough For Love (emphasis mine)
Programming is not my life.
There, I said it. I love programming, development, software, anything in that space, but I'm not seeking out additional time to program. It's how I pay the bills, and I'm always looking to improve, but it isn't something I need to do after a day at work.
You could say that I'm a 9-5 programmer. I go to the office, I do my work (which I very much enjoy), I kick ass, and then I go home to be with my family (and occasionally I blog). I don't live to work, I work to live.
My conversations with Luis seem to have really gotten to me, because I started thinking more and more about what kinds of boundaries I've had to set with myself to keep my ravenous brain in check.
See, I used to be the all-code-all-the-time guy. Throughout my college days and my first real job, I basically didn't stop programming. Every free moment was filled with variables and methods and classes. My brain compelled me to figure out the next problem, solve for the next requirement, implement the latest technique, and I couldn't (or didn't know how to) turn it off. My mind was a gaping maw, eager to process all the information it could possibly lay its hands on.
It was exhausting. I couldn't keep up with my desire to consume knowledge, and it had, without my approval or notice, risen up and taken over all aspects of my life. Code in the morning, code at lunch, code at night. I was mentally tired from running this rat race, and as I began to approach the finish line I could see burnout, clapping and cheering, eagar for me to complete the race so it could claim its next victim.
My lovely wife, having noticed that I wasn't doing anything else, pulled me off the track and suggested (rather forcefully) that we should do something together. So she rented a few TV shows (we had just gotten married and couldn't afford much in the way of entertainment) and over a few days we watched them together, deliberately avoiding distractions like phones or computers. At the end of those few days, I realized that this was what I had been missing, what I could use to avoid the burnout that was waiting for me to submit to it: I needed to do something else.
So I started going outside. On a whim, my wife and I went to Flagstaff, a two-hour drive from Phoenix and over a mile higher in elevation, just to walk our dog in the forest and breathe some fresh air. We got annual memberships to our local zoo because we both love animals; we still have these memberships and go at least every other month. We started putting money aside specifically for entertainment; it became our "go do something else" fund. We started doing things other than our jobs.
My wife and I, on reflection much later, realized that these "other" things we what kept us sane. When the baby was crying at 2:30 in the morning for no reason we could discern, when the dogs decided the living room would work as a toilet, when my job needed me to come in for several Saturdays in a row and I had to leave her to fend for herself with a toddler and an infant for another day in an already long week, all of these things were what kept us focused and happy.
Those other things prevented burnout from claiming me.
Programming is simply a part of my life; it is not the sole focus of my life. It's enjoyable, I'm good at it (I think), and I want to get better at it, but it is just one facet of my multifaceted existence. I program so I can live.
Living, to me, is more than just coding. You know what I live for? Camping. Reading. Chatting with my wife. Playing with my kids. Driving. Taking pictures. Seeing my family. Visiting museums. Hiking. Playing board and card games. Listening to music. Writing. Cooking (although I'm not very good at it). Seeing a play. Going to the movies. All of these things I love to do, and none of them directly involve me writing code.
If you feel like burnout is coming for you, go do something else! Do anything that is not your job. Go fix that home project you've been putting off, go jogging around the block, or even just read a book, anything other than what your job is. We all need many different interests to keep our lives interesting, and if programming doesn't fill that void, then do something else.