Less anxiety, more exhaustion

The good, bad and ugly: my experience of mob programming

By Annette Wilson

What is mob programming?

Mob programming is when the whole team works on the same task at the same time on the same computer. My colleague Keith has already written in general terms about our experience as a squad of mob programming which you’ll probably want to read first, as he provides a detailed introduction to the what and the how of mob programming, and how it worked for the team as a whole. I want to write more about my individual experience of mob programming as a software engineer.

For context, of all our Travel Content Platform squad members, I​ have the longest tenure. I also joined our squad after most of its services were established, the various systems for creating, managing, storing, delivering the text and image content that appear through the website. So I’ve got the most knowledge of how lots of things work, even if I’ve often only got a second-hand understanding of the reasons why things are the way they are.

Our Travel Content Platform squad at work in the mob

Feeling the effect of the mob

Probably the biggest difference I experience about being in the mob is that I have much less freedom. Everything feels harder. If I have an idea I want to try I need to first push it through someone else’s head and out their fingers. This can be good when it stops me from over-engineering a solution (as I sometimes tend to) but it also disinclines me to try anything that isn’t safe and boring. Anything risky or speculative or even just hard to explain feels like too much effort.

On the other hand, while I feel much more constrained, I also feel a lot less personal anxiety. Before I’d be working on a task for a day or two or three and I’d worry that I wasn’t getting it done fast enough, that whatever I built would be inadequate or confusing or introduce too much of a maintenance burden. Working in the mob I don’t feel that acute anxiety anymore — there’s nothing hidden about my code and I spend less time worrying how people will react to my work because it’s all been done together.

In a way, I think I’m experiencing the process of Jessica Kerr describes in her post Hyperproductive Development. While I’m certainly not a ‘⨉10 developer’ (and generally dislike the term), I feel some affinity for the developer she describes in that role — it does feel that even though I’m going slower, we’re benefiting by building a happier, more confident, less fragile team.

The rest of the mob hard at work

I’m pretty introverted. If you give me one of those personality tests​ I’ll always end up picking small quiet gatherings over loud parties, structured interactions over small talk and quiet solitude over adventure and adrenaline. Prolonged social interaction wears me down — I need time alone to recharge. I need a lot of time to ponder, research, write and revise ideas. I find the mob exhausting. Throughout the day I’m not just thinking about how to solve problems, but constantly expending energy to take in communications, to understand what’s in other people’s heads and to articulate what’s in mine. It’s valuable and I think it probably helps the squad a lot, but it’s undeniably tiring and doesn’t seem to yield the same sense of satisfaction in a job well done.

One not entirely obvious negative side of this is that by expending a lot of social energy inside the mob, I feel more reluctant to use my time outside of the mob engaging with others throughout the company. I want to take every opportunity I can get to find some peace and quiet, to work alone and just focus on something, and this can mean I just don’t have the energy or enthusiasm to share and engage with others. I’m not really sure what to do about that, but it does leave me feeling a little sad.

Another area that can be difficult is mobbing when I’m genuinely lost. Since many times I’ll be the most experienced person in the mob, if I’m lost then there’s a non-zero chance everyone else is too. When I’m in this situation alone I’ll probably spend a lot of time reading, exploring, experimenting and even (perish the thought) asking for help. As a mob, all of these things feel much more unwieldy. I sometimes describe this by saying it’s difficult to ‘think up’ and ‘think down’ at the same time. ‘Thinking up’ is the process of exploring, hypothesising, experimenting and learning. ‘Thinking down’ is the work of being aware of everyone in the group and their level of understanding, of explaining, listening, guiding and teaching. Both are very important skills, but they’re particularly hard to do at the same time.

Given all my concern about the personal cost of mobbing, I’m interested to know if there are ways to keep mobbing but balance it with more individual time. However, I think this is not as simple as it sounds. I see mobbing, like Kanban or Scrum as being a ‘totalizing’ idea. Attempts to do ‘just a bit’ result in more overhead and context-switching. The more time you carve out to not do mobbing, the more difficult it becomes to coordinate enough people together when it is time for mobbing, and the more time you have to spend again preparing individual tasks, making sure they’re properly understood and subsequently reporting back. I worry it quickly dilutes the benefits attained by mobbing.

To be more positive, I am glad to say that I feel less indispensable. If I’m sick or on holiday I am much more confident that there’s no critically important piece of information that is in my head and nowhere else. For this reason, I think mobbing has been very positive for the squad as a whole, even if I’ve personally found it quite taxing. And I think it’s probably good for me too, in that it has pushed me a bit outside of my comfort zone.

We’re going to continue mobbing, but we’ve made a number of changes, including setting a bit more time outside the mob each day to attend to personal commitments and individual work. We’re much more aware of the things that we find mobbing isn’t good for, and for example will sometimes split up for an hour to research and experiment before sharing what we’ve discovered. It’s a much less frustrating experience than trying to puzzle over library documentation together! Mobbing isn’t always easy, but there’s definitely something special here that we don’t want to give up on.

Mobbing or not, we’re hiring!

Skyscanner is a great place to work. I’ve found it to be a really positive, supportive atmosphere, with many clever and kind people of varied interests and specialisms. We’ve got a few roles available* so please have a look if you think you would like it:

*At time of publishing these positions were open, but if they are no longer open do check out the other Skyscanner Engineering, Design and Marketing job roles.

Lastly, if you want to find out more about engineering at Skyscanner and hear about vacancies first, we’ll soon be launching a Skyscanner Engineering newsletter, for which you can sign up right now.

About the Author

I’m Annette Wilson and I work as a Software Engineer on Skyscanner’s content management and delivery systems. I’ve been a software engineer for twelve years and I’ve been with Skyscanner almost four. I enjoy puzzles, board games and drawing. My favourite swiss-army knives are Vim, jq and Python, and for fun projects I love PuzzleScript and PICO-8.

Annette Wilson, Skyscanner