This blog post originally published on the Pathfinder Development Blog.
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:
Image courtesy of my lovely fiancé Laura. :-)
And slowly we evolve to workplaces that look like this:
Creative Commons License photo 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.
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?