In this article I will talk about how a high-performance engineering team at Moonpig adapted to a remote working environment, whilst they improved their ways of working, and continued to deliver on improving the experience we provide to our customers.
Moonpig Engineering consists of teams of people with complementary skill sets that enable features to be developed and tested in short spaces of time, whilst maintaining good engineering practices and user experience. This is achieved through collaboration within and across teams, and dedication to making a better product for our customers.
Each team has slightly different ways of working and they can adapt their processes to best suit them. The team that I work with use many extreme programming practices within our day-to-day engineering efforts. We are a team of eight people with diverse skill sets. We hold multiple agile ceremonies and meetings throughout the week and we pair or mob on each task and aim to maintain focus on a single piece of work at any given time.
In an office environment these processes are simple to implement. However, when the COVID-19 global pandemic broke out, forcing a lockdown in the UK during March 2020, Moonpig moved out of our office and into our homes. In a remote working environment, teams are physically separated, and their only channels of communication are through their computers, making collaboration more difficult. So how did Moonpig maintain these critical ways of working when our engineering team started working from home?
#1 The Google Meet “Town Square”
The first hurdle to overcome as a team was ensuring that we could still communicate easily and maintain the energy that we had in the office. We use an instant messaging system, Slack, to send messages to one another. We also use Google Meet for video conferencing in meetings. But how could we easily communicate outside of meetings and on a more casual level?
Our solution was the creation of our team’s “Town Square”, a single Google Meet room that any member of our team, or any other team, could join at any time. This very quickly became the equivalent of our desks. We would join the room in the morning, have our morning stand-up, host our mobbing sessions and have our team’s meetings within this room. We could also have more casual conversations here to help boost the team’s morale. It became our most important medium of communication as a team.
However, when we wanted to break into pairs or have multiple conversations we found this difficult in the one Google Meet. So we created a second Google Meet that we could use for Zoom-style “breakout” sessions. This became known as our “secondary control room”.
#2 Visual Studio Code Live Share
The second problem we encountered was “How do we mob remotely?” The solution to this was the Live Share extension for Visual Studio Code. We had already been using Visual Studio Code in the office so moving to remote mobbing was pretty simple. We all installed the extension and were quickly able to join each other’s coding sessions and work together on solutions whilst discussing them in our “Town Square”. Everyone in the session could see the code, access the host’s shared console and access any local servers being run by the host.
#3 Mural’s Interactive Whiteboards
In the office we would often create diagrams on the whiteboard before starting development. But when working from home, none of us have access to a whiteboard — and even if we did, how would we share it with one another? After a little research we discovered Mural, an interactive whiteboard tool that allows multiple collaborators to work together in the same space. This enabled us to doodle to our hearts’ content and assisted us in visualising pieces of work before we started developing them. We even found an integration that enabled us to directly create tickets in our project tracking system, JIRA, from our Mural sticky notes. We also started hosting our retrospectives and refinement meetings in Mural.
#4 But what about breaks?
Taking regular breaks is just as important as doing the work. In the office we would often stop what we were doing to go to the kitchen and make a hot beverage. In that time we could refresh our brains ready for the challenges that would lie ahead. In a remote world, without taking breaks we became tired and therefore less productive. We found that it becomes harder to keep track of time and ensure that everyone in the team takes regular breaks. Therefore, to get us into the habit of taking breaks, we introduced a Pomodoro timer to our mobbing sessions. There’s even a Pomodoro plugin for VS Code Live Share. This helped us get back into the routine of taking regular breaks and ensuring we were able to continue being productive as a team.
#5 Trust your team
As we continue to try new tools and processes we will continue to find new challenges. And as a team it is important that we are able to respond to these when they arise, and that we can find ways to adapt and improve our processes. No team is perfect and there are always things that can be improved. To help us improve, we have adopted a very important behaviour: trust. By trusting one another and being able to openly discuss opinions and provide constructive feedback we are able to regularly reflect on our ways of working. We have conversations that become “mini-retrospectives” which can lead to us experimenting with new ways of working, helping to make us a happier and better performing team.
We have found that by adopting new tools and processes to replace those we had in the office and by continuing to improve our ways of working, we are able to work just as efficiently remotely as when we were in the office and without compromising on the quality of the code or the morale of the team. In doing so the team’s productivity is sustainable and we can continue to create a better experience for our customers.
However, we haven’t solved all of our problems. For example, in the office we would often have “water cooler” conversations: the casual conversations that would happen between members of different teams whilst making a coffee. This becomes very difficult at home as there is no company-wide space for people to gather and talk. This is a problem we are still thinking about and we are trialling new ideas all of the time.
If you have any ideas or opinions, please let us know in the comments. It would be great to hear what you think!
I am a software engineer at Moonpig Engineering who is passionate about writing clean, well-factored code, using XP practices to solve problems and creating great experiences for our customers.