How do you solve a problem like developing….

…how do you catch a bug and pin it down?

David Lindley
Vodafone UK Engineering
5 min readSep 23, 2019

--

Developing code is hard. With so many potential ways to write one single piece of business logic, how do you go about ensuring that the code you write not only achieved the desired purpose but will do so without impacting performance, scalability and reliability?

Here at Vodafone UK we pride ourselves in striving to deliver quality software into production, within this blog I will outline three ways in which we work together as developers to achieve this!

  1. Pair programming 👦 👧
  2. Mob programming 👨‍👩‍👧‍👧
  3. Training 🚋

1. Pair Programming 👦 👧

As a keen developer you get given a task, you start coding and soon you hit a blocker. You can’t see a way out. Then frustration can set in.

At Vodafone we know this all too well, so we often implement pair programming techniques to avoid the above scenario:

How do we pair program?

  1. We start out by getting two developers, often with different technical abilities, together. Although we prefer pairing face-to-face we often do it over tools such as slack if location is a problem.
  2. We then set a clear goal for the pairing session, what is it we are going to try and achieve, there might then be a bit of discussion as to approaches to take.
  3. Each developer then takes turn at being the ‘driver’ and the ‘navigator’ both roles are crucial:

Driver — Sits at the machine and writes the code

Navigator — Tells the driver where to go, directs the session

We rotate each person usually between 30–60 mins to ensure we don’t get fatigue and also ensures everyone has ownership of the code.

4 . We take breaks, a bit of ping pong never hurt anyone!

5. We feed back to the wider team as to what we achieved and how we did it

Marco and JC (and Pikachu) running a pair programming session. Bugs you `gotta catch them all`.

We find that by pairing, bugs are reduced as there are two sets of eyes 👀 on every line. Also architecturally the code is better as it has been verbally reasoned before setting off.

A side effect of pair programming is your more junior developers learn faster as they are being thrown into the deep end 🏊, but with a lifeguard present (a more senior developer)!

2. Mob Programming 👨‍👩‍👧‍👧

A big brother/sister to pair programming. We use this technique when we want to make major changes to a codebase, or complex changes that we want everyone to be aware of AND have ownership over.

The concept is with 3+ developers you get yourself a nice area, comfy seats, a big screen and you code as a group.

As with pair programming it is important to:

  1. Set a clear goal 🥅
  2. Alternate who has the keyboard ⌨️
  3. Take breaks (this helps keep everyone engaged) 🏓
  4. Sum up at the end what was achieved and the reasons for the decisions made — this ensures everyone has ownership when the session is finished
Alex, JC and Brynley Mob’ing

One of the big side effects of mob programming is team engagement. Often in scrum teams certain developers like to work with other developers. By getting a large group of the developers together you get a much wider depth and breadth of knowledge.

3. Training 🚋

Often not associated to code quality, training we find is essential to the constant improvements in our applications. Why? Because the web never stays still.

At Vodafone, we try to allow all our developers' personal development time to continue to build up their toolkit 🛠 of knowledge that enables them to thrive in their day-to-day coding. We have subscriptions to several online platforms which allow us to learn at our own pace.

We also run training internally, giving developers the opportunity to share their knowledge and get feedback on their teaching technique, an often under valued transferable skill.

Clare, Ali, Dani and John at a training session

Why we find training improves quality?

Keeping up to date with best practices ❤️:

In order to keep our applications shiny, we need to check we are using the best tool for the job. One of the ways to achieve this is to learn what is actually considered best practice in the industry and then propose changes to our tooling and work flow.

Team engagement 💍:

By allowing teams time to train, it shows we want them to develop as individuals. Running training as a group of developers allows teams to unite and enjoy some time off from the fast passed coding they do daily

Food 🍕:

Whilst not directly related to training, when we run long training sessions we often provide food. This allows teams to have a meal together, building healthy working relationships.

Who doesn’t like pizza?

By building working relationships, next time a bug happens you may just have a developer in another team who you met on a training session that would be more than willing to help you fix it.

Catch that bug and pin it down…

Hopefully this article has given you small glimpse into some of the team focused ways we try to keep quality high. Although some not directly associated to quality, I believe they all have an impact into the quality of our code and team.

Want to know more?

If this article has inspired you, and you want to know more please reach out to us on our various social media channels.

If you want to work with us, find us on LinkedIn and drop us a message, we would love to hear from you! ✉️

--

--