Just like gardening, growing teams takes time and demands effort. This is especially true when we talk about development teams. The abstract nature of software adds to the natural intricacies of social interaction. The result only reinforces the main characteristic of people teams, which is complexity. People’s behavior is often unpredictable and influenced by many external factors.
From the perspective of the leader, this unpredictability can be intimidating. Traditional management presupposes measurement and control. But the fact that teams are complex does not mean they're impervious to improvement. As a leader, there are actions you can take to tend the garden - that is, create conditions in which your team can thrive. Here are a few suggestions:
1) Know Thyself
A team consists not only of people, but also of interpersonal relationships. We all have our idiosyncrasies, and we can't simply leave them at the door when we come to work. Try to understand what motivates, frustrates and influences you. Learn to predict how you will react to certain situations. Encourage your team to do the same. Tools such as the Myers-Briggs Type Indicator (MBTI) and Predictive Index (PI) can be useful. Have people sharing their results with others, as far as they're comfortable. This will enable people to shape their interactions to make the most out of each other.
2) Act on Trust
Trust is a word that's often abused and taken out of context. Trusting people is not only being able to predict how they'll behave. In the context of a team, trust has to do with belief and exposure. When people believe other's motives are good and feel comfortable around them, there's trust. This requires people to be open, even vulnerable, to each other. People in a trusting team are confident on each other's abilities to get the job done. They also understand each other's weaknesses and are able to self-organize around them.
Fostering trust in a team can be as simple as starting a conversation. Inspire people to open up and share things about their personal lives. It's amazing what a quick round of peer introduction can do to a group of people who've never met before. Help people identify their own strengths and weaknesses and bring those to the team. Avoid second-guessing people's abilities, but instead show you're confident they can do it. Take risks by delegating actual responsibilities to others. And, more importantly, be vulnerable yourself. Don't be afraid of admitting mistakes and letting your shortcomings show up. When a leader is transparent about her errors, people feel trusted to be open about themselves too.
3) Discover Your Measurable Goal (and make it public)
When you're in a software project, several things can be desirable achievements. On time delivery, fewer bugs, high code coverage, low turnover, etc. Yet, it's also true that each project has to have a few objectives that are more important than the others. Otherwise, by "focusing on everything", you actually end up prioritizing nothing.
To achieve success, a team needs to have clear alignment on what's their primary goal. They also need to be able to measure their progress towards that goal. Above all else, you can't set a team's goal from outside; you can only help them find it. And once you do, make use of boards, charts and other radiators to ensure it's crystal clear. Talk about it often, and make sure everyone knows precisely where they are towards it. To achieve true commitment, you need to ensure people are included in the decision process. We can only comfortably agree to something we had a say on, even if we don't get our way. Consensus can be dangerous, and healthy teams don't get paralyzed waiting for it.
4) Encourage a Culture of High Standards
It's easy to fall for the trap of holding people accountable. Obviously, if you're a manager, part of your job is to align expectations and monitor results. However, true performance has little to do with pressure, and everything to do with motivation. You can hardly motivate anyone by telling them what you want them to do. In any case, great teams don't need many external motivators. They self-motivate, as their people hold each other to high standards. When a team is committed to a shared, clear, measurable goal, people know they depend on each other to succeed. As a result, they know the quality of their work is contingent on the efficiency of their peers. And, if there's trust, they'll make their expectations on each other clear through healthy, constructive conflict.
5) Rinse and Repeat
The "growing" metaphor is not only about providing the conditions for the team to thrive. If you grow a beautiful flower garden and then leave it alone, entropy can quickly bring it down. In a similar way, maintaining effectiveness in a team requires constant work. People can easily drift away from good team practices when work starts to pile on. Just as important as taking the steps above is to persist on them. If something hurts, do it more often. When practices become habits, habits can become principles. And when your team starts to act on these principles, there's no way it won't achieve effectiveness.
- Brooks, Jr., Frederick P. The Mythical Man-Month: Essays On Software Engineering, © 1995, Addison Wesley Longman Inc.
- DeMarco, Tom and Timothy Lister. Peopleware: 2nd Edition. New York: Dorset House Pub, 1999. [DeMarco, Lister 1999].
- Appelo, Jurgen. Management 3.0. Upper Saddle River, NJ: Addison-Wesley, 2011. Print.
- Lencioni, Patrick. The Five Dysfunctions Of A Team. San Francisco: Jossey-Bass, 2002. Print.