Social Networks

The Social Network Analysis gives you a heuristic on the coordination needs between developers on different teams. The idea is based on Conway’s law - a project works best when its organizational structure is mirrored in software. Using the Social Network Analysis, you now have a way to ensure that your organization matches the way the system is designed with respect to the work the developers do.

The Social Network Is Build from How the Code Evolves

The social network paths are mined from how your codebase is developed. Fig. 41 illustrates how we build your social network.

An example of a social network in code

Fig. 41 An example of a social network in code.

Every time two developers have worked in the same part of the codebase, any part, they get a communication link between them. The more often they work in the same parts of the code, the stronger their link. Note that Empear Enterprise filters developers with too weak communication paths since they would clutter the visualization (you can change the threshold as described in the Repository Configuration Guide).

Define Your Development Teams

The social network lets you identify developers that should be close from an organizational perspective. The visualization above is from an open-source project without any formal organization or hierarchy. Thus, all developers belong to the same team and the network looks like a circle. If you hover over a developer, you highlight their peers that work in the same parts of the codebase.

While a flat visualization like this may provide insights, for example on key developers, it gets much more interesting if you add teams to the visualization as described in Configure Developers and Teams.

As soon as you define teams, sub-sequent analyses will organize the developers in the network by their respective team. That lets you uncover the ideal communication paths between developers in your organization. Please note that there’s no guarantee that these communication paths exist in the real world! That means you want to compare your organizational chart with the information below. Any discrepancies should be addressed.

Align Your Architecture and Organization

In a perfect world most of your communication paths would be between developers on the same team. That is, the teams have a meaning from an architectural perspective; People on the same team work on the same parts of the codebase. They share the same context, know each other and have a much easier time coordinating their work.

However, sometimes the world looks radically different. Have a look at social-network-anti.

An example of a social network anti-pattern

Fig. 42 An example of a social network anti-pattern.

The visualization in social-network-anti shows an organization with severe coordination problems. Since the data has been made anonymous to protect the guilty, you cannot read the names of the teams or developers. But you still see that the organization has four teams with a high degree of inter-team coordination between virtually every developer. In practice, this isn’t an organization with four different teams. Rather, it’s an organization with one giant team of 29 developers with artificial organizational boundaries between them. The resulting process loss due to coordination needs is likely to be severe and lead to inefficient development, quality issues and code that’s hard to evolve.