Collaboration vs Interruption
There was a comment on the extremeprogramming Yahoo! group last week that I found insightful.
When two people share a common task to completion, communication between them is considered collaboration. When two people work on a task in series, communication between them is often considered interruption.
I see this frequently on web application teams with a division between design and development. The two disciplines operate on separate tracks. Designers do visual comps of the screens and hand those off to the developers to implement. Invariably the developer needs assistance or clarification from the designer, who is now working on designing some other screen. The designer has to context switch, and may feel that time is being taken away from their current task.
This supports a few patterns of agile/lean development:
- Interdisciplinary teams. Build small teams with all the skills needed to implement a feature from start to finish.
- Work vertically in small batches. Develop one small feature from end to end. Then repeat.
- Optimize at the team level. Don't try to sub-optimize the utilization of each team member. Let the team figure out how to best get the work done and measure their team velocity.