| Main Description |
Whole teams are self organizing, cross functional, fluid, and highly collaborative. Self organization
means that everyone on the team works together to determine the best way to perform the work required
fulfilling the goals of the team. A whole team is cross functional, containing people with the combined expertise
to perform the work. This includes people with modeling skills, testing skills, management skills, and programming
skills. It also includes stakeholders with the required domain knowledge. Fluidity refers to the idea that the
team composition will vary over time. For example, at the beginning of the project you may need someone with deep
build experience to help organize the team's build strategy, but once this work is done this person leaves the
team. Whole teams work in a highly collaborative manner, adopting the most effective communication techniques
for their situation and striving to work together as closely as possible: it is through collaboration that we make each
other better.
The goal of the Whole Team practice is to ensure that:
-
Everyone has a sense of belonging on the team, of being in it together. There should be no
"outsiders", no "them" but only "us". When everyone is on the team, people avoid blaming others
or doing finger pointing. Instead, there is a sense of collective ownership.
-
The team includes everyone required to build the system. Ideally you want a self contained
team which together has the skills and knowledge to get the job done. Realistically, this is not always
possible at all points in time and sometimes you will need to bring in outside experts for brief periods of time
for specific goals. For example, at the beginning of the project you might need someone with experience at
setting up your database, or in the middle of the project someone with specific expertise in a certain aspect of
the domain.
-
Everyone on the team contributes any way that they can. With a whole team approach there is a
move away from specialists who focus on a specific category of work, such as analysis or database
administration, towards generalizing specialists who may have that expertise but will also work outside
of their specialty to help address the current need.
-
The team is self-organizing. The people best suited to plan and organize the work are the
ones who do the work. This results in better estimates, particularly when people know that they'll be held to
the estimates, more realistic schedules, and increased acceptance of the plan by the team.
-
The team maintains a sustainable pace. Just like you don't sprint through a
marathon you can't go for weeks or months at a time doing unrealistic levels of overtime. Tired people are not
productive people.
-
Everyone works together closely. Not only is it safer, it is more importantly
recommended to ask each other for help when you need it: no one is an island unto
themselves. Another strategy for improving collaboration within the team is to have daily stand up
meetings where you share your current status and identify any problems that you might have. Non-solo
development practices such as pair programming and modeling with others are also common on whole teams.
|
| How to read this practice |
The best way to understand this practice is to:
-
Familiarize yourself with its overall structure - what it is in it and how it is organized.
-
Read the main description to understand the thinking behind the practice.
-
As appropriate, read the detailed guidelines around Maintain a Sustainable Pace, Daily Meetings, Self-Organize Work Assignments, and so on.
For more instructions on how to adopt this practice, see How to Adopt the Whole Team Practice.
|