05 July 2009

Google Wave and Collaborative Projects

My tea kettle is whistling with more than lukewarm ideas on how we might use Google Wave for collaborative software projects.

To separate the steam from the high-pitched whistle of market evangelism...
Google Wave is a communication platform.
How might we use a real-time communication platform to make the push-pull of our collaborative software projects easier?

The Google Wave model promises to be a comfortable fit for seeding and feeding post-agile software projects. We might use Google Waves for
  • Generating user stories
  • Planning iterations
  • Estimating tasks (e.g., real-time planning poker)
  • Managing task boards and
  • Spawning dashboard artifacts like burn-down charts
I like its threaded conversations of wavelets, blips, and drag-and-drop multimedia. Some Google Wave features that should make collaborative software projects easier are
  • Bots and Gadgets Developers can embed gadgets and build robots that automate tasks within a Wave. A robot might read the content of a wave and then perform an action.
  • Drag-and-Drop Sharing - Unlike clunky email attachments, you just drag-and-drop screen prints, wire-frames, buttons, stock photos, etc. on a Wave.
  • Wiki-like, Hopefully Better - Anything within a Wave is editable by others. One may correct, append, or add commentary. One can only hope this is where project artifacts live rather than die (as with many project Wikis).
  • Real-Time - See what your teammate is typing, character-by-character, unless it's planning poker - in which case you'll have to close your eyes.
  • Playback - Playback any part of a Wave to see what the SME actually said about how something works.
The immediacy of instant messaging, combined with the richness of an anabolic Wiki, might prove to be a worthy collaboration tool. I like the concept of having team-member participation in threaded conversations (a traditional bulletin board), but also having features like playback and custom-robots that interrogate Wave content to perform actions.

The possibilities heat my water to boiling point. Robots are like having another person participate in a Google Wave conversation, except that they’re automated and they operate on the content of a wave. All extensible by common day-laborers like me.

The actions spawned by a bot might range from notifications like build failed or single sign-on test succeeded to spawning wavelets of unit test methods that are peppered with scenarios plucked from business-side requirements, discussions, and feature assertions.

Imagine a bot that parsed a business thread for Behavior Driven Development keywords like

As persona [X}
I want [Y]
so that [Z]

AND, parsed a business thread for scenario keywords like

Given initial context,
When an event occurs,
then ensure some outcomes.

then spit out a unit test methods?

Challenges to Adoption

Widespread adoption of a technology-driven phenomena like Google Wave will likely have to first hurdle cognitive and social models in search of digestible user metaphors (see Adina Levin's excellent post Google Wave: still in the lab, potentially mindbending for adoption).

Many of the operational metaphors that make things easy for users to understand simply don't exist for Wave yet. The Wave model mashes the familiar (email threads, wiki documents, and streaming communication) together. Instant messaging in your favorite messaging client is an easy model to follow. It is a simple post, response, & repeat. Will a multimedia, multi-participant Wave be so straight-forward? How will users find content efficiently? How will users invited into to a Wave conversation get up to speed with the other participants? Wave touts a replay feature, but is that the most efficient thread content primer?

More...