Monday, July 03, 2006

Solitary Sport, Team Play

Programming is typically viewed as a solitary sport. That is, programmers are sent off into a cube, given their tasks, and emerge when the work is done. Obviously, a team exists, and get-togethers are common (sometimes too common). In some of the more agile environments, programmers are teamed together in pairs.

Recently, I spent some time "away from home," starting a new job (with the family to follow). I found myself, alone, in a apartment, with my evenings unadorned of family things: dinner, play, or any of the typical family-related evening activities. Did I mention that I was alone?

Great, I thought, I'll have plenty of uninterrupted time to work on some projects. I had plenty to do, lots of time to do it, and absolutely no motivation to get started. I found out something very interesting: it's hard to get motivated when you're the only one in the room (or whole apartment, in this case). I've not worked as a sole programmer on a project, so I'm not sure how they get motivated. However, I realized how important it is to put a team together and keep them together. They play off each other; they require each other to be "near" (even though they may not constantly communicate); we are a social animal, even when we work.

Watching the World Go By

I typically work while I eat my lunch. So, there I was, sitting at the restaurant eating lunch, working on something or another for work. As I like to do while I'm eating lunch in this way, I look up and watch...I watch people, things, and generally let my mind wander a little. I've discovered that this is an amazing thing.

You see, I remember watching Dead Poet's Society with Robin Williams. He was an English teacher, and one day, he had the entire class climb up on his desk (one at a time, of course), take a quick look around, and then jump down. The idea was to give them a different perspective on life. It's about taking the time to see what's going on around us. It's also about seeing things from a different perspective.

That's why I like to move around while I do my work. Since much of my work requires considerable thinking, it's important that I give my subconscious mind the time it needs to sort things out. And I've found that when I "wander," I'm able to see things differently. Sometimes, that makes all the difference.

Programming is a thinking-man's game. It requires deep and focused thought. And, I believe, it also requires variation, perspective, and time.