Improving your life with checklists

November 16, 2007

I recently migrated a fairly important chunk of our mail service from an old mailer on an old server to a new mailer on a new server. It wasn't a simple process, as it involved moving data from the old server to our SAN, updating all sorts of configurations, changing scripts, and various other things. But I managed to do it smoothly, with only one or two moments of panic, and one of the big reasons for this is I made a detailed checklist.

Well before I started the migration, I set out to write down all of the things I'd need to do. I didn't let myself get away with vague handwaves or high level overviews; I made myself write down precise details just to make sure I really did understand exactly what I'd need to do when the time came and all of the implications and consequences.

(As you might guess from the moments of panic, I can't claim that I got this completely right. But I did manage to mostly foresee things.)

At the same time, I didn't try to use the checklist as a frozen thing that had to be fully complete before I did anything and then followed mechanically. I reordered items, sometimes on the fly, added new things, changed entries, and so on, and actually wound up using the checklist file as kind of action log to keep track of what steps I'd done and any notes I had.

Once I'd written down enough of the checklist it became clear that some things could be done in advance, and some more or less in parallel, so at times I was hopping back and forth between preparatory items depending on what I felt like working on next. A few times I realized it made sense to move entire chunks of preparation earlier or later, or split up something that had seemed monolithic into preparation and execution chunks. And as things went on it became clear that some items were simply not as crucial so could be deferred.

None of this should really be news to me; I've seen detailed checklists work before, and I've seen a lack of them cause problems. In part I'm writing this experience down now as reinforcement for myself, so that next time I'm more likely to do it again.

Comments on this page:

From at 2007-11-19 13:27:01:

I agree completely. One way of improving checklists, at least for the tests you run after the switch, is to turn them into a Makefile, or a Perl script that uses Test::More. There's nothing like typing "make" to launch all your tests, or seeing a long string of "ok responding" from a script.

Written on 16 November 2007.
« Platform risk and platform (in)security
Fighting spam always costs »

Page tools: View Source, View Normal, Add Comment.
Login: Password:
Atom Syndication: Recent Comments.

Last modified: Fri Nov 16 23:10:25 2007
This dinky wiki is brought to you by the Insane Hackers Guild, Python sub-branch.