Agile Development and Play: Understanding the Value

My Addiction

I'm addicted to TED talks. There have been many nights where I've stayed up way too late watching them. For those who are unaware, TED is a yearly conference where world leaders and thinkers gather to share their ideas and spread their passions and work. I'm someone who gets fired up listening to outher people's passions. I love hearing about what gets other people excited, what makes them tick, what makes them want to share with the world.

One of the more interesting talks I've listened to recently is by Tim Brown at the Serious Play conference of 2008. Tim talks about how the elements of play can improve creativity and productivity in our workplace and life. I found the lessons learned from this talk something that can be very directly applied to software development, and taking some of these nuggets of teaching can help me be a better thinker and worker.

Playing a Game

The first exercise Tim does is to play a game with the audience. It's quite a
sophisticated adult thing to stand up on a stage and spend 20 minutes talking
about play, but it's another thing entirely to actually do it. Brown has the
audience perform several games. One of them: Drawing a picture of your neighbor
in 30 seconds. He does this primarily to demonstrate how adults are cultured to
shy away from play. After all, a civilized adult does not seriously use crayons
and markers to do any real work right? After this exercise he talks about how
when this test is given to adults, they often apologize to their neighbor, feel
embarassed, or otherwise don't enjoy the play at all. When the same test is
given to a group of children, they don't complain or apologize: They simply do
it and have fun with it. This teaches us a valuable lesson about how our
culture is geared toward play. When we're younger we go from schools that look
like this:

overview
Creative Commons License photo credit: LizMarie

And slowly we evolve to workplaces that look like this:

The office
Creative Commons Licensephoto credit: Wyscan
That's not really too exciting of a thought, is it?

This reminds me of the game that my colleague Michael Walkden played at Agile
Conference 2009. Participants are asked to build a building out of LEGOS, and
through this play, they discover some of the benefits of working with Agile
methods. When Michael was telling me more about his experiences playing this
game with audiences one of the questions I asked him was, "Don't you think if
we did this exercise with a client it'd be hard to convince them to take
playing a game seriously? Most people would see it as childish." To which he
responded yes, sometimes it can be difficult to convince a client to play and
'get into it'. There's a certain level of discomfort for play that we can have
as adults. We fear looking stupid, making a fool of ourselves, or getting too
caught up in what we think is the business of children. Michael went on to tell
me that once a client gains a certain level of comfort with playing, the value
gained from doing these kinds of exercises is enormous.

Modeling a Problem

Brown goes on to talk about the benefits of rapidly building a physical model
for a problem.  When we were children we learned by touching and doing.  This doesn't change when we are adults.  No matter how good we are at thinking abstractly as humans,
there's something about having a tangible model to work with that makes
us feel more connected to the work we're doing. Something to touch, feel
and hold brings great benefits to our creativity and imagination. This
reminds me of a neat talk I watched by Damien Katz, the creator of CouchDB. Among other things, Damien talks about when he switched to have CouchDB use HTTP and JSON what he felt like for the first time he could 'touch the data':

"I was so excited when I first started testing it out. Because a big
goal with CouchDB was that you would be able to feel like you could touch
your data
, like it was right there in your hand. There're certain tools
where you have this responsiveness and you don't feel like there's all these
layers between you that are obfuscating what you're trying to get
at."

Isn't this something we should set as a design goal for all of our software
projects? Shouldn't we strive to have our users feel like they're in control of
the computer, and not the other way around? When we use tools that allow us to
quickly and easily touch our ideas, we reap the benefits of not only enjoying
our work more, but being able to flesh it out more quickly and productively.

In Brown's talk, he tells a story about how a group of surgeons were trying to
come up with a solution for a new surgical tool. They spent a good amount of time saying something like, "It's sort of like this tool, combined with this other one, but it also has some elements of this tool." Finally, one of the surgeons went away for a few minutes, and came back with a white-board marker taped to a handle and said, "Is it something like this?", to which everyone agreed, "Yeah, that's exactly what we need!". We see this often with software. "It's kind of like Facebook with a mixture of
Wikipedia, but it focuses around people who study animals professionally."
Wouldn't it be more powerful to have a working prototype to show what it is? To
let people play with it, to let them touch it and experience it rather than
spend hours in meetings talking about what it? When you're stuck in a waterfall
process, it can be easy to get lost in the weeds of abstraction and
uncertainty. Spending months designing specs and not making anything
'touchable' can be a long death march that leaves all parties unfulfilled and
unsatisfied. Let's spend our time making things that are fun to touch and play
with instead.

Moving Forward

So I throw this out as a question to everyone. What do you think about the
current state of play in the software industry? We've seen the power of play,
experimentation and fun in the free software world. Do you think it's relevant
in commercial software industry? If so, how can we break down barriers of
discomfort in order to encourage our teams to grow and play?

Related Services:
Agile Development, Custom Software Development