← Home

Terraforming a Skills Matrix with Go

Last week I gave a demo of some stuff I’ve been working on at the Infinity Works mini-conference. (Thanks to Gary for the photo [0] - he really captured the moment I broke my demo by accidentally closing a terminal window.)

Infinity Works is starting to get quite big as an organisation (70+ people) and we want to make sure that we’re helping our people to achieve their personal learning goals by spotting opportunities for skills exchange and spotting where there’s interest in a technology or skill, but a lack of experience in the company.

A few people mentioned that having a variation on the theme of “skills matrix” would be quite useful, Anna Broadhurst [1] talked about a presentation on Skills Mapping [2] she’d seen by Dan North, which was along the same lines as the method Glenn Crossley [3] showed me he uses.

The most important aspect of these methods is that there’s a current skill level and an aspiration / interest level, e.g. just because I’m good at VBScript (or used to be in 2001) doesn’t mean I’m interested in doing VBScript work in 2016, but I’ll do it if we need to.

Unfortunately, there’s a few basic issues with skills matrices:

  1. Coming up with a list of skills is hard.
  2. Collating and sharing data from a distributed team is difficult - how do you do it well, share a Google sheet?
  3. Making a spreadsheet that can hold the data is also difficult (I tried).

I had a look around to try and find something ready-made, on the basis that other people must have this problem, but I couldn’t find anything.

So Gary Green [4] and I got together and designed what an implementation might look like on a whiteboard:

The idea was to sidestep defining skills in advance, and get people to add in skills like they do on LinkedIn - in the form of a tag cloud. Then, everyone is free to add their skills as they see fit.

So, over the weekend, I put together a Web application in the Go programming language to allow the capture of the data and storage in MongoDB, I then hooked it up to Google authentication to restrict reporting access to members of the same Google domain (by the email address suffix) and created a report. Go is a great language for this kind of thing, very lightweight and simple.

I added some Terraform to the mix to build up a fault-tolerant infrastructure, and demonstrated launching the web app into AWS to the Infinity Works team.

With the data, we can search our team and find out who might be interested in upcoming opportunities or look for colleagues who might be able to help us with specific problems we’ve got.

The UI could use some improvement, but as a first pass, it’s useful enough. Having made the tool, I did think that we could ask if anyone is good at something in our company Slack channel. :) Anyway, the code is all up on Github at [5]

If you’re interested in using the app yourself, or funding some improvements, get in touch!