I’m writing this while sitting on a beach chair overlooking the Gulf of Guinea near Cape Coast in Ghana, West Africa. Although it’s slightly overcast the view is amazing, with whitewater stretching out in both directions as far as my laser-corrected eyes can see.
Being in a foreign country is one of two experiences that allow me to take a step back from my life and look at it with a fresh pair of eyes (backpacking is the other). Being away from home and having no day-to-day responsibilities has the effect of a sculptor’s chisel; it slowly knocks away the ever-present and intense focus I have on getting things done. After about a week I can see a noticeable difference in the way I’m able to analyze my life back in the states. Gaining this external perspective on life, or what I call the panoramic view, is a critical part of becoming a better developer.
Focus and 19th Century Prisons
Most programmers, by nature of our jobs, are highly focused individuals. We get so engrossed in our work that we have trouble noticing the passage of time, and we also become pretty good at tuning out the outside world and distractions such as the people walking by our cubicles who never discovered the concept of an “indoor voice.” How often have you been so wrapped up in your code that that you suddenly realize that the biggest movement you’ve made in hours is to shift your hand to the left to hit Ctrl-s?
While this trait can lead to periods of intense productivity, it tends to be less of a blessing when it comes to managing life. How many developers do you know who can write excellent software but can’t pay their bills on time, have no social life, and live in squalor reminiscent of a 19th century Turkish prison? That’s because they’re so heads-down productive that they don’t want to take the time to look up and notice or engage in what’s going on around them. But that’s another article altogether.
This type of focus causes people to obsess on one task after another, working on whatever’s in front of them but rarely, if ever, evaluating whether the task is actually worth doing. This is how most people live their lives to one degree or another, and it’s what I like to call tunnel vision. Living this way is a lot like pulling out of your driveway and thinking so much about pushing the clutch in that you never look to see if you’re headed into a crosswalk full of nuns.
Why Should You Care?
One thing I’m sure you’re wondering by now is how does having a panoramic view make you a better developer? The whole concept is similar to that of a sabbatical, which is widely accepted in academia, and which Joel Spolsky talks about here. The goal is to renew focus, intention, purpose, and a passion for life and work. Each of us could use renewal in these areas from time to time.
In addition, when you have the big picture in mind you’re able to withstand a lot more frustration without breaking down, because you know what is truly important and what is simply a detail of life. This makes you a better person, and being a better person is good for the psyche and the soul (on this you can cite the authority of my wife who is in the last stages of finishing a PhD in Clinical Psychology and a Masters in Theology, and who talks to me incessantly about how to become an optimally-functioning human). The Questions
So what do I think about once I’ve spent this week away and can suddenly see the panoramic view of my life?
Here’s the list of questions I’m thinking about this time around. I started by taking the questions that are still relevant from the last time I ran through this exercise, which was about a year ago in Costa Rica. I realize they are somewhat general, but I use them as a starting point to get me thinking about specific themes in my life which I follow up with more specific questions. You can use them as a starting point, but I encourage you to come up with your own set that’s relevant to your current situation.
What do I like most about my life?
What do I like least?
What is my concept of the “ideal” life and how is mine different from that?
What do I want my life to look like in 5 years?
What do I need to do to prepare for those changes?
Am I happy with my job?
Do I get excited when I tell people about it?
Am I expanding my skills?
Are there skills I should be learning that I’m not?
Is there anything else I’d rather be doing?
Most of these take around 30 minutes to think through, though some take 2 or 3 hours. I make lists of answers and jot down additional questions that come to mind. The most difficult part is genuinely and thoughtfully questioning the basic assumptions of my life. The transparent view helps with this, but it still takes a substantial amount of time and effort.
And now, story time! Here’s the way this process began in my life and why I feel it’s so valuable:
In the days of yore, like every recent college grad with a guitar, I wanted to make a living from music. During the day I worked a 9 to 5, but every evening I dreamed the dream as I wrote and practiced my songs.
Periodically I would reflect on my rock star progress (or lack thereof) and feel incredibly frustrated and dejected. During a trip to Europe, after years of following this same cycle, I realized that although I had the desire to play music, I wasn’t living the life it takes to make the goal a reality. Although I spent a lot of time practicing and writing, I wasn’t ready to give every part of my life up so that I could make it in the unforgiving business of music. The more I thought about it, the more that became okay. I have been happy every since knowing that when I sing, play, write and record, that I’m doing it for fun, not for a goal that will weigh on me but that I will never achieve.
The bottom line of all this is to be intentional about what you do with your life and your work. Don’t live in a tunnel, never stopping to reflect on what you’re doing and why you’re doing it. Taking the time to renew your focus and passion is a critical part of becoming a better developer. And watch out, you may even find yourself turning into a better human being.