I admit I am not an expert on this topic. I have not built dozens of teams, picking and choosing individuals for their individual merits, capabilities, and personality types. I have not read dozens of psychology texts on interpersonal interactions.
On the other hand, I have been on teams that have worked amazingly well and that have failed miserably. Based on that experience, I have identified the key success factors in building great teams.
I recently changed jobs and left the best team I had ever worked with. The team was the single strongest motivator I had to stay at the job, and to this day I still get together regularly with most of the team. I was managing the team, but I don't take credit for them being the exceptional team they turned into. In fact, I was traveling a lot, and I think that actually helped in strengthening the team.
Here are the success factors in building a great team:
Believe in the Product - Work for the Customer
I do not believe that it is possible for a team to become great if they don't truly believe in what they are doing. This is one of the areas that I think I was able to influence my team, because I believed in the product and I did everything I could to pass that on to the team. I spent time with customers, my team spent time with customers, we worked closely with product management, sales, and services to understand the customers. We knew that our product could make our customers' lives better.
To that end, we were all working towards a single goal of making our customers' lives better. Many times, there are ulterior motives driving people: wanting to look good for the boss, strengthening one's resume, etc. My goal was to make the customers, their needs, and how our product addressed those needs real for the team, and, in the process, all of the ulterior motives disappeared.
My team didn't have a choice, as I was out of the office a great deal of the time. In many cases, teams can begin to wander aimlessly in those circumstances, but a great team will not have that problem. The key is the customer focus mentioned above. While there may be occasional disputes on what is best for the customer (especially when the customer isn't always in the work room as Agile methods would like), those disputes are healthy and usually result in a better product (provided decision making is accounted for as mentioned below).
Agile methods promote the self-direction of teams for many reasons, but in my opinion, the greatest benefit of this is teams become closer. People have to learn to interact and disagree with others amicably. People don't always worry about themselves and their needs. They begin propping others up, instead of mentally tearing them down. Work starts to happen as a team instead of a group of individuals.
Leadership is important, but not in the way many people think. As the manager, I had leadership responsibilities. As technology specialists, some of the engineers had leadership responsibilities. The reality is that everybody had some leadership responsibilities.
Rather than a top-down leadership style, a great team will come together with everybody leading in various ways and at various times. More importantly, a great team will not have members who place themselves above other members. Every member realizes that every other member has strengths and weaknesses, and by bringing those together, the team and the product become better for it.
The true leadership in great teams is helping people overcome their shortcomings and increasing their capabilities.
Self-directing teams that are completely focused on the customer...there should be no need to have a final decision maker, right? Wrong. Occasionally, there will be disputes about the best way to accomplish something. If left unchecked, these disputes can cause wedges that will eventually break a team apart.
On features, the final decision is the job of the customer. That may be the actual customer, the product manager, or some other person who is THE designated customer proxy. Technology is a tougher issue, because people get religious about technology and customers are often unable to make those decisions.
It is critical that somebody be designated as the decision maker for those decisions. Typically this person is designated the "architect", but the title isn't important. What is important is that she is trusted by the other members of the team to make sounds technical decisions and to do so with the customer's best interests in mind.
Keep teams small. If you have a large group, break them down smaller. Agile methods encourage this for a reason. The smaller the groups, the easier it is for people to grow together and teams to become stronger. If you have to break groups apart, pick representatives of each of the groups and let them come together in a group of their own. Great groups are rarely larger than eight or 10 people.
There is obviously much more that could be said about how to build great teams. However, I strongly believe these five items are the most important predictors of success. Cultivate these, and your teams will become stronger; starve these, and your teams will become brittle.
To the team I worked with from around 2002 through 2006, thank you for giving me an amazing opportunity to see what a team can be.