This is the first in a three part series of articles all about using checklists in your projects: why its important, creating a checklist you can start using, and what lessons we learned from our checklist.
Why Use a Checklist?
Checklists have helped transform a wide range of industries.
A checklist is ideal in situations where the complexity of the system exceeds the ability of even a single expert to remember all of the steps needed. Using a checklist forces best practices to be followed, even if they seem obvious, preventing costly mistakes.
Here are two examples:
An Aviation Checklist
The B-17 is the famous airplane from Boeing that was used extensively in World War 2. During its development, it was competing with other companies for a major government contract. It was expected to win the contract easily, since this plane was faster, could fly further, and could carry more bombs than any competitor.
However, on its final flight test, it tragically crashed, killing the pilot and several other men. It turns out the crash was due to human error. The captain had left an elevator lock on, which made certain needed controls not function.
Because of this incident, the plane was deemed unsafe to fly. Boeing was facing bankruptcy at the prospect of losing this contract. They determined the aircraft was too complex for a pilot’s memory, and the solution they proposed was the first use of the now standard pre-flight checklist.
Boeing test engineers flew 1.8 million hours with 18 B-17s without incident, using this checklist to verify every step of the flight was carried out safely, proved to the government they were safe, and the government bought nearly 13,000, which were put into use for WW2. The creation and use of this checklist saved this airplane, launched Boeing, helped the US win World War 2, and spawned the use of checklists for flights and pilots worldwide.
A Surgical Checklist
In his New Yorker column, Atul Gawande tells the story of a three year old girl in a small town in the Alps who fell in a frozen pond and wasn’t discovered for 30 minutes. When she was found, she was lifeless and her heart was stopped.
An amazing team of doctors did a series of incredibly complex surgeries to restart her heart, then her lungs, and then reduce swelling in her brain. Amazingly, she survived and completely recovered. A passage from his article helps summarize the astounding complexity:
To save this one child, scores of people had to carry out thousands of steps correctly: placing the heart-pump tubing into her without letting in air bubbles; maintaining the sterility of her lines, her open chest, the burr hole in her skull; keeping a temperamental battery of machines up and running. The degree of difficulty in any one of these steps is substantial. Then you must add the difficulties of orchestrating them in the right sequence, with nothing dropped, leaving some room for improvisation, but not too much.
How did they orchestrate this and save her? Checklists. Doctors at this hospital had a checklist prepared for what to do in the case of a frozen patient, from the moment they are found all the way through every complex surgery. They followed it exactly, never forgetting a critical step or wasting time to think, saving precious moments.
A 2009 study showed that by simply using a checklist, surgery mortality is reduced by 50%. Checklists have pervaded the medical industry. They are staples in hospitals for everything from avoiding infections while inserting an IV to using mechanical ventilators.
Applying this to software
While not quite as life or death as performing surgery or flying a plane, software projects are exceedingly complex. On the technical side, there are many steps needed to build something that works, and on the non-technical side, many steps are necessary to make something people need and want to use.
It would be rare for any one person to know all those steps, memorize them, and apply them to every project. That’s why a checklist is so useful.
Here's a few ways checklists can help in software:
- The number of steps required for success is too complex for memory - Most developers know what it takes to make a successful application. But, even the most qualified and experienced people are are incapable of keeping every task in memory, especially while they are performing those tasks.
- Learn from other's experience - There are best practices on any checklist that others have learned from painful experience are necessary. Rather than learn everything the hard way, it's better to compile a list of industry best practices and follow them.
- Force yourself to remember the "not so fun" stuff - Its easier to spend time on the parts of software you enjoy rather than the parts that are important. A checklist forces you to remember what is important and give it some attention.
- Guide awkward but important conversations - You'll see in the next article in this series that part of our software checklist involves hard questions for the management. A checklist based on previous project success will help guide conversations with management by providing some context and structure.
Why use a checklist?
What is in our checklist and how did we create it?
When we applied this checklist to our previous 9 years of projects at Bitovi, surprising lessons did we learn about how to make a project succeed?