Before you write a program, be sure to understand the goal. Drawing input and output on paper can help.

Humans thunk when they design things. They divide the task into chunks, so they can think about one chunk at a time. Before they start working on a chunk, they should decide how the chunks will fit together.

Identify the big chunks for a task. Look for existing patterns you can use. A pattern is a way of doing something that has proved successful in the past.

This Web site has a pattern catalog. Use it if you need ideas about how to tackle a task.

You can’t just cut-and-paste patterns. You need to understand them. Often you need to adjust them to the needs at hand.

Input in IPO is an abstract step. To implement it, you need to use a concrete pattern like “Input from worksheet cells,” “Input from keyboard,” or “Input from file.” These concrete patterns nest inside IPO.

The O in IPO is abstract as well. You need to pick a concrete pattern when you write actual code.