Red Squirrel Reflections
Dave Hoover explores the psychology of software development


[Archives]
THIS BLOG HAS MOVED to http://redsquirrel.com/cgi-bin/dave
Switching Blog Software
Wednesday, January 12, 2005

After over 2 years using greymatter, I'm switching to blosxom. I'm going to keep this blog up, but I will be turning off comments.

The new blog will be located at http://redsquirrel.com/cgi-bin/dave. Not much there so far.

Posted by Dave [Link]

Can Somebody Name This Practice?
Saturday, January 8, 2005

In every job that must be done, there is an element of fun. You find the fun and [SNAP], the job's a game! --Mary Poppins

I want to share a software development practice. It has evolved out of the practices of extreme programming. I have found that this practice can transform the act of developing software into a game far more explicitly than any other practice I have experienced. I'm not sure what to call this practice, but it needs to be named so that it can be more easily shared. I'm sure that I'm not the right person to name it, since I did not create this practice.

This practice is a child of two well-known XP practices: pair programming and test-driven development. These practices by themselves are a lot of fun. But this is extreme programming, and we like to push the envelope, right? So let's turn the fun dial up to eleven...

I first experienced (what I will temporarily call) Ping Pong Development when I visited Object Mentor in 2002. I was attending their Java Language Immersion with Test Driven Development and I was the only student of Micah Martin for the entire week. We had fun. As we worked through the payroll exercise, Micah would start by writing a test. I would then try to make it pass. At first, I would take giant leaps ahead of him, coding far more than it took to get to a green bar. He would patiently watch me as I stumbled around, often getting lost down rabbit holes. Periodically, he would drive for a moment, and do something absurdly simple and get the test to pass.

I started getting a feel for how easy it was to take small steps. And I started to enjoy taking as small a step as possible, which forced Micah to write more rigorous tests. One time, just as I was getting us to a green bar, Micah prompted me to write the next test. I fumbled around, trying to pick up on the direction he was driving us with the tests he had written. And I wrote a test. Red bar.

Micah got the test to pass. Green bar. Micah refactored. Green bar. Micah wrote a test. Red bar.

I got the test to pass. Green bar. I wrote a test (couldn't see anything to refactor). Red bar.

Micah was insanely lazy and got the test to pass in a couple seconds. Green bar. Micah added to the test I had just written. Red bar.

You bastard, now I have to do some thinking to get this thing to pass. 10 points for Micah...

For someone who loves games and competition, the rhythm that develops in these programming sessions feels like home. The great thing is that it is competitive and collaborative at the same time. As you compete to do the least amount of work, you are collaboratively building up a rigorously tested set of barely sufficient objects.

Since my week with Micah, I have tried Ping Pong Development with a number of people. On my last project, Aslak Hellesoy re-introduced me to it and it became the standard way we pair programmed on the project. I feel like it's time we give this practice a name. I think the XP community would benefit from it.

Update: How about Turn-Based Programming? The phrase "turned-based" has its roots in computer strategy games, which fits into the "programming is a game" idea.

"Programming is the Great Game. It consumes you, body and soul. When you're caught up in it, nothing else matters." --How Software Companies Die, Orson Scott Card

Another update: It looks like someone has already referred to this practice as ping pong programming back in 2003. That's good enough for me. That's what I'm going to call it.

Posted by Dave [Link]

Relationships: Opposites
Thursday, January 6, 2005

"A system is not just the sum of its parts -- it is the product of their interactions." --Lean Software Development: An Agile Toolkit, p. 153, Mary and Tom Poppendieck

What is it about this line of thinking that is so attractive to me? I find myself continually coming back to this idea: that relationships are at the core of software development, between humans and between objects. Push these two fundamental relationship types in opposite directions and you're on the right path. Humans in software development should relate to as many other people in as many ways as possible, while their objects' relationships should be limited, narrow, and layered.

"How, then, shall teams communicate with one another? In as many ways as possible." --The Mythical Man Month, p. 75, Frederick Brooks

Posted by Dave [Link]

Enjoying the Grid
Saturday, December 18, 2004

It has been tremedously satisfying to watch the fatherhood gridblog spread and read some excellent posts. Rob Styles' post entitled Poo is hilarious. Alan's post on self-sacrificial love was touching and relevant to my current situation. I'm glad that Tim found the courage to post the piece he wrote at AYE. It provides a glimpse into the depths and passions of Tim.

Gridblogging rocks. I wonder how much further the grid will spread? Google is probably the best way to track the boundaries.

Posted by Dave [Link]

[grid::fatherhood] A Happy Wife
Friday, December 17, 2004

What advice would you have liked to receive when you were a new or expectant father?

"As much as the child will change your life, it will change your wife's life more."

Spending time with children is one of my favorite things to do. There has rarely been a time in my life that I wasn't spending time with children in at least one context. Growing into fatherhood felt natural to me. And I think I'm a "good enough" father to my three kids. Where I could have used some advice is in being attentive to the radical changes in my wife's life. To be honest, I did hear some good advice on this topic, although the source of the advice is a little embarrasing.

In the movie Looks Who's Talking, John Travolta (the good-hearted cab driver) said that he felt that the husband's role was to keep his wife happy so that she doesn't kill the kids (or something to that effect). At the time, it struck me as patriarchal. But for some reason it stuck with me (though I've never done a great job of heeding it). Now that I am a husband to a woman who spends almost every mintue of the day with three children under six, it turns out to be excellent advice.

If only I could heed it. Maybe this gridblogging will help...

Posted by Dave [Link]

Gridblogging: Fatherly Advice
Tuesday, December 14, 2004

Tim Bacon and I have been meaning to read and write about fatherhood. Last week we agreed that we would simultaneously blog on the topic of fathers in the software industry. The plan has evolved and we have been joined by Laurent Bossavit, Richard Watt, and Alan Francis. We invite all fathers in the blogosphere to answer the following question on Friday, December 17th, 2004:

What advice would you have liked to receive when you were a new or expectant father?

The phenomenon we are trying to facilicate is known as gridblogging.

Posted by Dave [Link]

Any fool can write code that a computer can understand
Monday, December 13, 2004

Just a little piece on writing understandable code.

Posted by Dave [Link]


[Archives]

Powered by Greymatter

Listed on BlogShares