Checklist

Checklists are powerful. They let you off-load some mental effort into easily-accessible text. They prevent bad things from happening and they help you to remember about the good stuff.

You might think your work is too special to be described by a checklist, but consider two facts:

  • A checklist doesn’t need to reflect the task completely: it just needs to mention elements that are commonly missed, or have particularly catastrophic consequences when missed.
  • There probably are parts of your work that are more repeatable than you think, yet cannot be easily automated.

Here’s an example of checklist I use: pull request checklist.

- [ ] Did I look for parts that could be in an independent, smaller PR?
  - WHY?  To make it easy to review, and also easy to revert without unexpected consequences.
- [ ] Did I test the code?
  - WHY?  To not waste time of the reviewer.
- [ ] Did I make sure that there is no commented-out code or other debugging artifacts?
  - WHY?  Because it should never make it to production, though it sometimes happens.
- [ ] Did I comment where needed?
  - WHY?  So the system is understandable even when code alone is not expressive enough.
- [ ] (For visual changes) Did I attach a screenshot or GIF?
  - WHY?  To make it immediately obvious to the reviewer what changed.

The “WHY?” section helps me remember the intention behind each item, and makes it more accessible to others if I would share it. It also helps me to judge whether an item is still relevant; perhaps the core problem has been addressed in other way in the meantime – e.g., an automatic check for commented-out code was added as a git hook. Some items are optional or context-dependent, as the last item on this list.

Some other contexts where checklist can be useful:

  • Starting a new project
  • Job interview preparation (from either side)
  • Bug reporting
  • Git commit message & content
  • Writing an essay

If you perform given task everyday or almost everyday, it might be enough to just review the checklist from time to time (once a month, for example). If you do that task less often, use the checklist every time.