We talk about teams a lot in software development. That’s understandable, since most projects need more than one person to work together to accomplish everything that needs to be done in the project. That team needs to be composed of people with different strengths, but they all need to have a clear understanding of the business goals. The team also needs to understand the strategy and tactics that they’ll employ to achieve those goals. This is no different than a sports team. But in software development, we hardly ever talk about coaches. You may think that a manager is the same thing as a coach, and there is a definite overlap between those skill sets. However, many organizations fail to cultivate the specific characteristics required for managers to be effective coaches.
First and foremost, coaches have to have credibility. The team must believe that the coach’s advice is worthwhile. In software, this frequently comes from the manager having “been there and done that” as a developer or test engineer. Having a first-hand understanding of the challenges facing technical teams, and being able to provide specific technical guidance, gives the team faith that the coach knows what he or she is talking about. The coach doesn’t have to be the smartest person in the room, or know the latest and greatest technology. But the coach absolutely must have the standing with the team to get them to change.
A good coach also has insight into the reasons why a team succeeds or fails. Most managers can correctly observe successes and failures, but a good coach will understand why things are going well, or not. Discovering those insights, and encouraging the team members to reflect and come up with their own, is a necessary activity for continuous improvement. This can be one of the most difficult things for a team to achieve, since the team must admit their mistakes and discuss why they happened. But when a team can honestly discuss their flaws, they can also find ways to address them.
Of course, insight and credibility are only useful if the coach knows how to communicate with the team. Change can happen only when the team can identify alternatives, discuss the benefits and drawbacks of each, and come to consensus on the way forward. The coach needs to be able to articulate his or her own ideas to the team, but also needs to be able to listen to the team members and help them structure their own thoughts. Creating that environment where team members are free to express their observations about how the work is done, and what could be done better, is one of the most powerful things a coach can do to support organizational change.
While there’s no bright line between the definitions of manager, coach, or leader, I think it’s critically important for software development managers to think of themselves as coaches. It’s not enough to observe how the team functions. The manager must also analyze the team’s performance, determine what changes to make and motivate the team to make those changes. The best coaches will involve their team members in that conversation, turning each one of them into a source of great ideas for improvement. Not every team will be able to function at that level, but without a good coach, none of them will.