There is a recurring discussion on many domains, especially software development, and especially agile development about what is a team. From my experience in the military, then leading project managers, then leading program management offices, that getting the definition of a team right up front is a critical success factor.
My favorite definition comes from Jon Katzenbach:
A team is a small number of people with complementary skills who are committed to a common purpose, performance goals, and approach for which they are mutually accountable. (Katzenbach and Smith, 1993)
Each portion is critical to the success of the team.
- A small number - too many people get confused, overlapping roles, and can't focus on a single outcome.
- Complementary skills - duplicate skills, roles, responsibility are a waste
- Committed to a common purpose - why are we here, what are we building, what does done look like in tangible units of measure meaningful to the decision makers?
- Mutually accountable - this is the killer concept. If we don't hold each other mutually accountable, we can't have a shared outcome, and our efforts are for naught.
So when you hear about Mob Programming or even Pair Programming, ask if those ideas meet the Katzenbach test of a team.
One of the best examples of TEAM is in this. And I suspect that most working in small teams or even large commercial organizations don't think of teams in this manner. Our Space and Defense domain usually does.