Ralph Johnson writes
about creativity being a cooporative effort rather than a solitary
endeavor.
Creativity requires breaking out of the ruts of our minds. Working with
the right person helps us to be creative because what seems normal to them
is strange to us, and our usual way of working seems odd to them. Creative
collaboration requires people to differ in some important way.
I certainly experienced that in several different ways over the last few
weeks. The first example was my exploration into Ruby-based dependency
injection. It was sparked by Jamis Buck’s presentation on Copland at
RubyConf2004. I wrote up some ideas and Jamis took those bare ideas and
fleshed them out into a real product (Needle) which represents the
lightweight view of Dependency Injection. Evind Eklund also made some
suggestions for improvements and the final result is something better that
any of us would have come up with in isolation.
Another example happened this past month in the weeks after RubyConf. David
Heinemeier Hansson has decided to include support for my XML Builder object
in Rails. He mentioned to me that support for the processing instructions
and declarations would be nice. I threw something together, but got some of
the details wrong. Later that evening Rich Kilmer pops up an IM window and
together we work out the rough spots in the design. Along the way, we come
up with a cool way of supporting namespaces that fits well with the Builder
style. It was a great session with each of us contributing and feeding off
the ideas of the other.
I think Extreme Programming’s emphasis of pair programming is an
attempt to tap into the creative potential of two different minds attacking
a problem from different viewpoints. And it works fairly well at that. Now
I’m wondering what other activities might benefit from the "two
heads are better than one" approach. Maybe I’ll grab a friend
and we will think about it together.