Why, oh why, is it so difficult to create a smoothly functioning, high-performing software team? Probably because the people on the team are human beings, with widely varying experiences, background, and preferences, and lots (lots!) of opinions about the best way to carry out a project.
According to Michael Valenty , a successful team has an identity that transcends individuals. To achieve that identity, Valenty suggests having the team gather in front of a whiteboard and come up with a list of words that describes positive software quality factors. Words such as scalable, efficient, elegant, consistent, and reusable, among the many possibilities. Each team member then selects his or her top five factors and writes them on the whiteboard and the team members discuss and negotiate these factors until they’ve narrowed the list down to a mere three.
This exercise requires time and effort. But it seems evident that if team members favor different sets of factors, they might very well clash about how to carry out a project. Valenty views this exercise as a way to make explicit how the team will make decisions, and it’s an early step in establishing a culture and basis for trust between members of the team.
Another aspect of creating a high-performing team is reaching agreement on key aspects of carrying out a project. One of the most common sources of potential conflict among team members is the meaning of “done,” whether it pertains to a task, a test, an iteration, or an entire project. As Mitch Lacey notes , establishing a shared understanding of "done"—and doing so upfront—can save teams and their customers “countless hours of refactoring, process-thrash, unclear communication, and hidden work.”
If it’s important to create a shared understanding among the members of a team, it’s even more important to do so when teams plan to collaborate with each other. This is especially the case with cross-functional teams, which might entail, say, people in IT and finance interacting and advising each other. According to John Baldoni, writing in Inc. magazine, it’s especially important for the teams to define what it means, and what it doesn’t mean, to offer help, so that neither team views help by the other in some unintended way, such as an attempt to grab power.