UnivAcc - Pragmatic > Autochecklist

Automate Your Checklists

The worst thing to do with a checklist is just mindlessly follow it. There are many reasons for it.

One of these reasons, of course, is that for checklists that a human being really needs to follow, there will be variations in what is needed depending on circumstances. You will know it is the case that there will be variations by virtue of the fact that a human being really needs to follow the checklist, because if a human being really does need to follow it, that is because human beings are much better at accounting for unforeseen variations than other entities capable of task execution. Thus, the key part of "the worst thing to do with a checklist is just mindlessly follow it" is the word "mindlessly". If you really do need to follow a checklist, never do it mindlessly.

This leads to the other big reason: checklists that humans do not really need to follow. These are checklists that should be automated.

Permanent checklists are mostly useful for only one thing: ensuring that a set of tasks that must be performed at least thrice can be performed in a repeatable manner. In the information technology world, "repeatable" is roughly synonymous with "automatable".

The difference between things that probably should not be automated when they can, and those that definitely should be automated when they can, is that first reason mindlessly following a checklist is such a terrible idea. If you need to think about the checklist carefully to identify cases where you must diverge from the otherwise repeatable set of tasks, you might not want to automate the entire checklist, though even then it might be a good idea to automate some of it. If you do not need to think about it to identify variations, and the checklist only exists to help enforce identical repetition, you should turn the checklist into an automation algorithm and (apart from maintenance concerns) forget about it. Turn your precious time toward doing more productive things than pretending to be a shell script.

When you are done automating it, you might want to return to it to determine what about it can be improved. Of particular interest to sentient life everywhere is the case where your checklist-execution system can be generalized so that it -- or at least a significant portion of it -- can be put to use by others. In such cases, consider whether it is best packaged as a library (possibly with a command line interface as well) so that it can be incorporated into bigger automation efforts, and endlessly reused. When doing so, of course, you should maximize reusability by using as reusable a license as possible.

As usual, I recommend the Open Works License.

written: 2012-03-24

All original content on this site may be redistributed under the terms of the Open Works License.