Time was running out, the mob was coming; this was it. Luckily, this was not the kind of mob carrying torches and pitch forks, this was a new breed of mob! This mob was made up of a group of people ready to learn from each other.
Mob learning sessions were inspired by an idea that has been been gaining traction in recent years, mob programming. In mob programming, the idea is that a group of developers gather around a single computer and write code as a collective. Learning with the mob takes some of the key concepts of mob programming, leading to a much more effective learning experience.
An inside look into a mob learning session
The door swung open and in burst the mob; they'd found me! Which was good, because the room was listed on the meeting invitation. Step one, complete. Each person found a chair around a round table. There were no rows of seating where someone could hide up the back. This was a mob learning session, and participation is a must.
The sessions are set up in such a way that encourages all participants to, well, participate. This is a world apart from the traditional "one presenter, with questions saved until the end" talk. One or two participants will act as facilitator, but as more of a guide than a teacher. These facilitators are usually the ones that have the most knowledge or passion about a topic (or have been volunteered by good meaning mob members), but don't necessarily hold all the answers. They will direct the learning and regularly encourage mob discussion and knowledge sharing.
Due to the openness of conversation that is encouraged, tangential conversations will happen. Sometimes these can be very useful conversations, other times, they can get too far off track. When this happens, it's the responsibility of the entire mob to help bring the conversation back on track. If that isn't happening, the facilitators may need to step in and sheppard the mobs focus back to the topic at hand.
Theory is great and all, but practice makes perfect!
"These ideas for clean code sound fine on paper, but how can we even begin to use them on our code base?". The gloves had been thrown down, it was time to get practical! Visual Studio flew open (well, it opened in a kind of reasonable amount of time). After a flurry of keyboard shortcuts, we had some spaghetti code up on the screen, ready to jab pitch forks at. And that's exactly what we did. We practiced some of that "mob programming" and refactored a bunch of hard to follow code. We discussed some of the different ways things could be done better, and followed through with a couple to see how they looked. The mob was alive, and sh%t was getting done!
Adding a practical element to most sessions is a very effective way to help cement learning in to the group mindset. It takes a concept, and gives the mob a concrete way to move forward with it. This can be tricky and may not be relevant for some topics, and that's okay, but where it can be made practical, it should be! One of the funner sessions we've run made use of some of the puzzles on CodinGame. This is an amazing site full of programming challenges that often provide a visualisation of your code being executed in the form of a game. I'd highly recommend making use of it when giving the mob learning sessions a go; run a session on mob programming and have at it!
Split the mob and pit the sub-mobs against each other in a challenge
"Test driven development is too slow, I could outperform a TDD developer any day!". Game on! The mob was split, the challenge was on. The string calculator TDD kata was brought to bare. Each sub-mob was given a computer to use, and the battle began. Keyboards were mashed, eavesdropping was plentiful, and the energy in the room was amazing. The timer went off, and after several attempts to pull the sub-mobs away from their keyboard, the challenge was done, and TDD won!
New concepts that challenge existing practices are often met with resistance. Proving their merit through a powerpoint presentation can be tough, no matter how many of the animated powerpoint transitions you use. A friendly competition can help to settle these arguments. Be careful to limit the scope of the challenge to something that can be done in about half an hour, allowing you time at the end to look at how things went. Also try split the group up in such a way that people who like the concept are on the team proving it works, and nay sayers are on the team attempting to disprove it. Get that mixed up, and all sorts of sabotage might ensue!
Topics should focus on what the mob needs, and sometimes what they want
In they wandered, a few interested looks, but mostly they were just here because everyone else was. This was a session on the merits of testing. Nobody had asked for this session, I'd just gone ahead and teed it up. By the end of the session, the seeds were already starting to take root. Although not entirely convinced, each mob participant had engaged in the conversation and taken away something that resonated with them. The journey had just begun, but the boat was well afloat and currently on course not to hit an iceberg.
Topics that are picked for mob sessions should be a mixture of mob needs and wants. If a mob collectively wants to learn more about a topic that will help enlighten them, great! Find a champion of the topic in the mob, and go for it! On the other side, sometimes what a mob needs isn't what a mob wants. Automated testing was something that had not played over so well in the past and had a bit of stigma associated with it. Because of that, the mob didn't have a lot of interest in learning more about it. Without a suite of good automated tests, the mob was producing a product that was slow and cumbersome to validate, and thus hindering their ability to deliver good quality software quickly. And thus, it was evident that the mob needed to learn more about it, and so, several testing mob sessions were run. And the results were amazing! The mob members who were most reluctant to join the testing revolution are now some of its loudest advocates.
Mob learning sessions have now become a regular thing within our team. Collaboration is at an all time high and the sessions continue to be interesting, engaging and, most importantly, useful!
Do you have a topic you'd like to engage your team with? Why not try a mob learning session this week! All you need is a meeting space, a topic, and a mob. Just don't forget to ask nicely if they can leave their pitch forks and torches at home.