SOFTWARE ENGINEERING blog & .lessons_learned
manuel aldana
Manuel Aldana

September 25th, 2010 · 3 Comments

Power of Checklists in Software Development

To a big degree Software Development involves creative and non-reoccuring actions. On the other side for the repetitive tasks you want to save time and increase quality with automation tools (scripts, build-tool, reporting). These should be a key part of your development/deployment/production cycle (building software, running tests, monitoring etc.). Still you also have to cover reoccuring tasks which are hard to automate and need human interaction, like:

  • Rolling out releases (most often each release is unique and needs different changes in several orders on system environment).
  • Implementing features, marking them as ‘done’.
  • QA process, from testing to approval for production.
  • Upgrading procedures.
  • etc. …

I’ve always found such repetitive tasks hard to remember (especially when they spawn over a wider range of time). The result was, that sometimes steps were missing or were executed in the wrong order. After all costly and annoying afterwork was necessary.

Good old-style Checklists

Even highly skilled professionals hardly memorize every detail of execution steps and order (humans tend to be very bad at fulfilling repetitive tasks 100% correctly). To follow better a proven procedure checklist can help a lot. Their setup is cheap and following them can avoid to miss steps.

Sample checklist: Marking feature ‘done’

General reminder, no fixed order:

Sample checklist: Merging Branch to Mainline

Sequential, fixed order:

Advantages

Checklists:

  • They improve awareness and common understanding of process
  • New team members can be introduced better to current process.
  • Relieving poor human memory.
  • Increase of both efficiency and quality (less afterwork of forgotten tasks).
  • Good cost/benefit ratio.

Of course it is important to not go overkill with checklists and list every milli-second step and fix the process (we’re not a car-factory dude!).

Lightweight Tooling

Checklists should be easy to to create, view, reset and follow (as foundation a wiki is perfect here). Often it is sufficient to have a simple table, because it lists all the steps sequentially and you can add notes to it. When there is a more complicated workflow an activity-diagram is better choice. Once you found a proven procedure, checklists tend to not change often, printing and pinning them up works also fine.

Tags: Software Engineering

3 responses

  • 1 XebiaLabs // Oct 4, 2010 at 3:36 pm

    Great article – checklists are so important to any business! In software development, especially, there are many important steps to keep track of. Automation really helps streamline certain steps, as you mention, and a complete end-to-end deployment solution can eliminate even more steps off your checklist. Not only does this save you time, but it will also help reduce the probability of human error, which can wreak havoc on a deployment if even a simple mistake is made. Checklists are still helpful for looking at the overall plan for a project, but completely automating deployments can give IT departments the flexibility to focus on more important tasks. Would you agree?

  • 2 manuel aldana // Oct 5, 2010 at 4:14 pm

    Automation is king (I once read ‘never favor a reoccuring cost against a one-time one’, especially for build + deployment).

    But 100% automation is unrealistic even for routine tasks. Some of them occur in a similar way but are not identical.

  • 3 XebiaLabs // Oct 12, 2010 at 5:28 pm

    You’re right, unfortunately it’s impossible to automate every task, but by analyzing how various tasks are done at each company, it’s beneficial to automate as much as possible, which is what we think agile shops should aim for, especially in terms of deployments.

You must log in to post a comment.