Practice makes perfect

Ryan Cormack
Moonpig Tech Blog
Published in
3 min readFeb 19, 2023
Practice makes perfect

As software engineers we practice writing code almost daily, but we don’t often get to build or design whole new systems. However, a lot of the time, it’s easy for engineers to do what they already know, with the systems they are familiar with. With this in mind, Moonpig teams have been running Architecture Kata sessions. When we’re winding down on Friday afternoons we’ll get together in our teams and break off into small groups or pairs and all attempt to design systems that solve a specific challenge. These have ranged from designing an image hosting platform, to a dedicated cover band audio streaming site.

A system diagram of a propsed architecture for an image hosting site
Image hosting design 1

There are no right or wrong answers to any of the challenges we set ourselves. The challenges don’t define every functional or non-functional requirement either. A lot of the time when Product teams come to technology with a problem, we have to work through it to understand everything that is needed, so these exercises help us think about the questions and problems that might come up. Interesting discussions naturally happen once the teams start discussing their different solutions. This leads to people across the multiple teams learning about new ways to approach and solve problems, but also reminds us all of the pros and cons of any given solution. There is no perfect answer. We may become too comfortable doing things the way we always have when we’re not given the freedom to design something completely new.

These two examples of how two teams approached our image hosting Kata both have some similarities, but are two very different solutions. The conversations and discussions which happen off the back of these sessions are a key part of how we learn from them. People are free to get a feel for how various services can and do work without the pressure of delivering a ticket or a project. It allows us as a group to share past experience with various services and how we could use various features in different ways.

Image hosting design 2

We’ve taken this model of running architecture katas further by running dedicated ones with our graduate, associate and apprentice engineering cohorts. These sessions take a slightly different approach with much more general discussion about how we can use various AWS Serverless technologies to build systems over a period of several weeks. This has allowed early career engineers to get a feeling for how we deal with architecture problems as platforms grow and evolve with us paying special attention to some of the problems that we might encounter along the way.

Moonpig has an all round great culture of learning and development and this is another way that our engineers get the time to practice and learn new things. We empower engineers to experiment with new technologies, by having entire one click pipelines set up for code spikes through to an internal platform dedicated to learning that anyone in the company can use. Engineering teams are encouraged to spend time on learning and development, with many of them allocating a day a month specifically to learning something new, on top of the day to day learning we do when using new technologies to solve our customer problems. It’s a really great way for us to drive engineering innovation.

If you’d like to be a part of this great engineering team, please check out all our current vacancies.

--

--

Ryan Cormack
Moonpig Tech Blog

Serverless engineer and AWS Community Builder working on event driven AWS solutions