I recently started as manager of a team of 10 developers that did manage itself before. I noticed that they do not act that well as a team but rather everybody fights for his own. There are a lot of arguments and even screaming at each other. The last few weeks I tried to find out what is the cause for this and will now start trying to improve the situation. I am unsure, however, how to measure if there is any improvement. Are there any metrics to measure a team's cohesion to use here?
This is a “human’s” problem, hence you can only track progress by asking people questions about how they think the issue is improving (as Anton already suggested).
I believe that you should have many integration sessions in order to allow the team to work together better. If you haven’t done that, this is a good time to start from scratch :)
Also, can I suggest that instead of tracking progress around this issue, you observe productivity and other general “metrics” as they will improve as a secondary effect?
Although I agree with Anton that at the moment anonymity will allow more sincere responses, you should aim to create a safe environment where people voice their concerns openly and transparently to everyone. Perhaps one of the first steps and this might sound silly, but I think you should speak privately with everyone and made them aware that it is a problem and that it has a lot of negative consequences as well as getting their perspectives on what’s going on and how to improve the situation (doing this is part of following one of the basic principles of agile: Valuing individuals and interactions over processes and tools).
I want to mention another hint that might help:
- Is everyone clear on their responsibilities / roles / expectations ? (who works on what, who owns what part of the project...) This allows everyone to focus on what they should as well as discussing only when they own part of that process or when it's relevant for them
- Do you have ways of working and work standards such as coding standards, release processes, discussion policies, etc.? You need everyone to agree on this points as it'll create frameworks for sorting disagreements as well as taking focus on what really matters for the team
Have a look at Work Rules! as a guide on taking further steps to create an amazing team.
In our company we just periodically send survey to people asking how they feel. Main point here is to clarify for them, that nobody will punish them for setting low marks. Maybe make it anonymous.
This is obviously very unreliable method, but only metric we found good enough.
Better method is to talk with people 1-on-1 about how they feel in the team, in the company, with you as a manager. Try to get their trust.
Some of the teams I worked with, had this issue. I have had a good degree of success by tackling this problem from multiple angles. Here is some of the Metrics/techniques you can use, how to get them:
- Periodic (once every sprint) retrospective. Facilitated well, to bring out real problems
- Implement (or make best efforts) on list of actions from retrospective
- 1-2-1 meetings with team members and setting objectives which require collaboration.
- Re-enforcing the message that as a manager, you can see this is not happening and you would like to see a change and you are actively monitoring and reporting on the situation.
- RACI - Create a clear RACI matrix for team members. Everyone should ideally have 1 clear responsibility.
- Team goals. Create achievable micro goals for teams. If delivered, these must demonstrate improvement in team work. Example: Improve CI process by using a tool OR Improve static code analysis reports OR improve execution time for automated tests etc.
Hope this helps.