by Sam Savage
Life is full of helpful sounding procedures for improving your memory, losing weight, landing that perfect job, etc. I have found most of these to be worthless clichés with one notable exception: the five-step process of the renowned computer scientist Donald Knuth. In fact, it is the only thing I am religious about.
When I was studying computational complexity in graduate school in the early 1970s, I was exposed to Knuth’s multi-volume set on computer science, much of which went over my head. But early in one of the volumes he lays out the five steps of writing a computer program, which I have found invaluable in many settings. I state these in the context of analytical modeling, which I do more of these days than programming.
- Decide what you want to do.
What is the purpose of the analysis? Who is the audience?
- Decide how to do it.
Is a spreadsheet adequate for the analysis or will I need a more powerful tool? Will I model time discretely or continuously?
- Do it.
Put fingers to keyboard and press appropriately.
- Debug it.
Of course it didn’t work as planned. Who do you think you are, Einstein?
- Trash steps 1 through 4 now that you know what you really wanted in the first place.
The power of recursion!
Get to Step Five Fast
I’ll bet your organization spends a lot of time in steps 1 and 2 and calls it planning. I say, get to step 3 with a primitive prototype as quickly as possible. You will then be at step 4 before you know it, which qualifies you for the true enlightenment of step 5.
I consider myself a black belt in the Step Five Process. When I start a new modeling project, I am completely confident that I don’t know what I want, so I only spend 3 seconds on step 1. I give myself much longer on step 2, 30 seconds. If it takes longer than that, I quit. Step 3 is where the time comes in. I put on headphones, switch to my Eagles Channel on Pandora (as much as I love classical music, it does not work here), and typically work for 15 to 30 minutes before finding the fatal flaw, which I must debug. I don’t spend a lot of time debugging at step 4, maybe 5 minutes, because I know that step 5 is inevitable, and I can’t wait to start again on what I now think I wanted in the first place.
When do I terminate the Step Five Process cycle? When my model is dead! A living model is always evolving in this manner.