How Learning to Fly improved my Software Development Process - Checklists

Gayan Perera, 30 July 2020

I started learning to fly about 15 years ago because I got bored writing code and it’s something I’d always wanted to do. As I started learning to fly, the instructors would always make a point to use checklists. Then, I started to see that the concepts being taught in aviation could be applied to the software development process to get better quality software produced.

One of these is the trusty checklist. A checklist helps to organise and carry out tasks in an orderly fashion which reduces errors and increases consistency thereby increasing efficiency.

In the software development lifecycle, one of the most error prone phases is the deployment phase. A simple mistake can cause catastrophic failures.

In aviation, there are a tonne of checklists, from before start-up, after start-up, while taxiing, during the runup, lineup, take off, etc.

An example is prior to taking off, there is a specific checklist. This checklist has multiple items but one of the items is the ‘flight controls full, free and correct’. What this means is that you move your available controls such as the control column/yoke full left, back, right, forward, the rudder pedals press in full left and right then visually check that controls move correctly with your input.

image

We do this to ensure we have full authority of the controls so that we can always operate the aircraft safely.

You’re probably thinking, well that’s logical but why do you need a checklist…well here’s a personal story. I fly a Piper Warrior II, when I got it, it didn’t have a control lock (A control lock is a mechanism to stop the controls flapping around during gusty conditions when the aircraft is parked up). So, a friend of mine loaned me his. This control lock goes underneath the rudder pedals and onto the control column (something like the image below).

image

In the image above, this control lock is on the pilot’s side, however, I put it on the co-pilot side. I got into the aircraft, started it, and started to taxi, then realised I didn’t have any rudder authority to move the aircraft left or right. Suddenly it came to me that I’d forgotten to take the control lock off. Why did this happen? Well, I’d been in a hurry, it was on the other side, slightly out of sight and I hadn’t used a checklist!

Luckily for me, I noticed it before getting into trouble! For aviation geeks or anyone interested in reading more, here are some fatal accidents caused by control locks/gust locks.

Software development/deployments are very similar to this, often we’re rushed, working with multiple people with different experience levels, different companies, different tasks for different types of projects etc. Therefore, to ensure our projects and deployments are as smooth as possible, we make use of multiple checklists. We’ve been doing this for the last 10+ years, we’d never be where we are today without them.

I’ll aim to share other lessons, concepts and principals from the aviation industry that we’ve applied to our business to ensure that we’re able to develop quality systems for our clients.