Posted By Quentin Carnicelli on August 28th, 2003
I just finished reading through Polya’s How to Solve It. It opens with the ‘How to Solve It’ list, basically a set of questions you ask yourself as you work through solving a problem. The bulk of the book stems from talking about each aspect of this list of questions in detail, with a few other related topics thrown in as well.
Since I started reading it, I have been using this ‘How to Solve It’ list when working on Audio Hijack 2. When I start in on a problem, say how to integrate a certain new feature, and I get stuck or can’t make any headway at all, I pull out the list and start asking the questions. What is the unknown? What are the data? What is the condition? And although the book is geared toward solving purely mathematical problems, just systematically working through the questions in the list tends get me unstuck and moving again.
I got tired of having to grab the book just to read through the list though, so today I typed it up (preserving the book formatting), printed it out, and taped it to my wall. Below is the complete list, as well as a printable version here.
How to Solve It


Understanding The Problem 
First.
You have to understand the problem.

What is the unknown? What are the data? What is the condition?
Is it possible to satisfy the condition? Is the condition sufficient to determine the unknown? Or is it insufficient? Or redundant? Or contradictory?
Draw a figure. Introduce suitable notation.
Separate the various parts of the condition. Can you write them down?


Devising A Plan 
Second.
Find the connections between the data and the unknown. You may be obliged consider auxiliary problems if an immediate connection can not be found. You should obtain eventually a plan of the solution.

Have you seen it before? Or have you seen the same problem in a slightly different form?
Do you know a related problem? Do you know a theorem that could be useful?
Look at the unknown! And try to think of a problem having the same or similar unknown.
Here is a problem related to yours and solved before. Could you use it? Could you use its result? Could you use its method? Should you introduce some auxiliary element in order to make its use possible?
Could you restate the problem? Could you restate it still differently? Go back to definitions
If you cannot solve the proposed problem try to solve first some related problem. Could you imagine a more accessible related problem? A more general problem? A more special problem? An analogous problem? Could you solve a part of the problem? Keep only part of the condition, drop the other part; how far is the unknown then determined, how can it vary? Could you derive something useful from the data? Could you think of other data appropriate to determine the unknown? Could you change the unknown or the data, or both is necessary, so that the new unknown and the new data are nearer to each other?
Did you use all the data? Did you use the whole condition? Have you taken into account all essential notions involved in the problem?


Carrying Out The Plan 
Third.
Carry out your plan.

Carry out the plan of the solution, check each step. Can you see clearly that the step is correct? Can you prove that it is correct?


Looking Back 
Fourth.
Examine the solution obtained.

Can you check the result? Can you check the argument?
Can you derive the result differently? Can you see it at a glance?
Can you use the result, or the method, for some other problem?

