Checklists are a step-by-step list of instructions to follow.
They can help you plan for handling complex events or multi-step procedures.
A good checklist increases your confidence in what you are doing.
They're great tools for rare events, complex procedures, and stressful situations.
A friend once told me that checklists help you think while you are not stressed so you don't have to think when you are stressed.
Other industries make extensive use of checklists.
However, outside of larger DevOps teams with extensive playbooks, most software development teams do not routinely use checklists.
The airline industry and healthcare professionals have embraced checklists.
They have found that checklists reduce errors and improve outcomes.
Air travel is so safe in part because of checklists used by pilots and maintenance crews.
Healthcare professionals have found that checklists reduce complications and improve outcomes for their patients.
We have realized similar benefits in software development.
Checklists mitigate the risk of human error and improve the quality of our work.
A developer checklist is a list of steps for performing a software development task.
There are plenty of scenarios in software development where checklists are useful.
Code reviews, server migrations, and release management are just a few examples.
As a concrete example, a server migration requires several manual steps to complete.
Rehearsing those steps repeatedly is important.
Rehearsals help you identify and resolve issues before the final migration.
As you perform migration steps during rehearsal, you can write a checklist composed of every step you take.
All subsequent rehearsals can use the checklist.
Then, by the time you're conducting final migration, you have a tested and complete checklist to follow.
The opportunity for human error during this likely stressful event is greatly reduced!
While checklists may not eliminate your stress during complex procedures, they can reduce stress.
You will feel more confident running through a list of steps than winging it.
As we already mentioned, checklists also mitigate the risk of making errors.
If you are following a well-written checklist, you know which step comes next.
You also know the outcome of each step.
In other words, there are no surprises when you follow a checklist.
Additionally, checklists are reusable.
When you write a checklist for a complex procedure, you can reuse it for similar future procedures.
A server migration checklist is a good example.
While each server migration may be unique, the majority of the work required is similar.
Having a starting point for a checklist will help you recall all required activities for a migration, even if you have to change a few steps here and there.
At Twin Sun, we use developer checklists for any events that are rare or complex.
Here are some examples of developer checklists we have written:
- new developer setup checklist
- code review checklist
- new client project setup checklist
- server migration checklists
- app deployment checklists
- AWS infrastructure setup checklists
- postmortem checklist
If you're just getting started with checklists, consider starting with a checklist for a simple task.
For example, documenting new developer setup for your team can be a good starting point.
Even if you don't plan on a new developer joining your team, you can follow the checklist the next time you set up a new computer.
As you follow and maintain the checklist over a few attempts, you'll find that new developer setup is completed more quickly and confidently.
Common gotchas go away as you document steps for resolving them.
The time you spend writing a checklist will quickly pay dividends as it speeds up complex procedures.