Network Mapping

You can view the final app here

In any office you get a sense of who works together simply by being there and speaking to them. In some offices, where there are clearly delineated teams working on the same problems, its very clear. In others, where a pool of resources works on a variety of tasks with a mix of people, it's less so.

I come from a consulting background, where in an office of ~100 people any particular person might be working on four different projects at once with ten different people. Officially there are team specialisations, but broadly at the junior levels people have the opportunity to work on a variety of different projects across teams. Some people always work together, some people work with a wide range, but it's hard to pin down.

I'd recently been reading about organisational network analytics, and had seen a talk by David Green where he touched on how it's deployed within the people analytics sphere. I was interested in learning how to do it, on a dataset of interest to me, so a mini network mapping project was born.

Being a consultant had a big advantage here - we track all time spent on client projects very closely through logging our "billable hours". Every project has a code, and every 15 minutes spent on the project is recorded. I therefore had a very detailed dataset of what everyone worked on.

It's a pretty small leap of logic to realise that if you know what everyone's spending their time doing, you can flip it the other way and look at who's working on each project - and thus who's working together.

So that's what I did - a bit of data cleaning and then wrangling in R produced a matrix of shared time between consultants.

I then used the igraph package for R, which took a little bit of getting used to, to plot these as an actual network map, coloured by official team. This was really interesting - some teams were very clearly delineated, while some groups of employees from different teams clustered together. Notably one team, which works primarily remotely, had almost all their interaction with the rest of the department flow through a single individual.

This didn't answer all my questions though - under this version simply sharing an hour on a project for the given month would count as "working together". So I introduced a new variable for "minimum number of hours shared" to allow the map to be filtered. As I also wanted to explore individuals, I decided to spin up a quick application in RShiny.

RShiny is a library for R that allow you to build interactive web applications, and is great for interactive exploratory analysis. It also makes it really easy to share them online with other people (or host them yourself for sensitive data).

The result was an interactive application allowing me to explore in more detail who worked with whom. The results were interesting - one employee who works remotely had far fewer coworkers than the average - but worked a lot more with each. There were some jack of all trades working across different teams and with lots of people, and some (primarily senior) who only worked with those in their team.

You can view the final app here

So what's the point?

As someone who myself was working with a lot of different people, it didn't tell me a huge amount I didn't already suspect, but it would have been really useful to anyone new to the team. I plotted it on a scatter to see the relationship between number of people worked with and time spent with other teams, grouped by team.

This showed pretty clearly that one team was far more likely to work with lots of people - but those people would generally be from their team. As this particular team was the result of an acquisition a few years before that wasn't especially surprising.

This data would be most useful if either trying to test a specific hypothesis, or track change over time. For example, if run monthly it could show how a new business was integrating. If linked to other metrics like performance it could show the impact of cross-team collaboration to success. It puts hard data on 'soft' concepts like how well a new joiner has integrated into a team, or how working remotely changes patterns of work.

This was ultimately an exercise in curiosity for me - I wanted to learn how to do network analysis, and I wanted to visualise my team. But it does open up a huge range of further questions and analysis scope. Doing it on a larger scale, such as with emails and performance data, could yield fascinating insights.