Book review
This book totally shifted my thinking about problem solving in general. Probably ‘in general’ is a great phrase to use with this book because the methods and heuristics described here seem so widely applicable, I would recommend this book to nearly anybody who’s work involves some kind of problem solving.
The book takes the form of a short introductory section, where the method of the author is communicated. For ‘problems to find’, within which the majority of problems are found, the method was:
1. Understand the problem.
2. Obtain a plan to find the unknown.
3. Execute the plan.
4. Look back on your solution.
Seems like common sense, right? But when the details are drilled into for each of these points, there were really some insights that maybe I know but I hadn’t been able to verbalize. For example: when designing a plan to solve a problem, the first step should always be to ask ‘have I solved some similar problem before?’ If the answer is yes, large sections of the problem may already be solved in that instance. I never really thought to purposely ask this question of myself while problem solving. There are other insights in a similar vein to this.
The rest of the book is what the author calls a ‘Dictionary of Heuristic’. It’s not so much a dictionary but more an encyclopedia for problem solving with examples. It describes a problem solving heuristic, say ‘decomposition and recombination’, and provide a mathematical example where the heuristic is applied.
I must admit that I skimmed lots of it. I have a fairly justifiable reason: the examples are nearly all very mathematical and I am not practised in mathematics. Attempts were made, trust me, to understand some of the examples and work through them. But it really slowed down the reading process for me, often causing me to have to learn new aspects of mathematics to understand the examples. Therefore, I only recommend an in-depth analytical read of this book if you are mathematically experienced and you are often solving problems of a mathematical nature.
Me on the other hand, I am a software developer. I know some basic mathematics, yes, but most of my experience is in technical problem solving. Often with far more data and more complex conditions than most mathematical problems (but not necessarily harder). Despite this I was really taken aback at many points where large aspects of software developer practices are more specialised forms of the topics presented in this book.
‘Can you check your answer to build confidence in the solution?’
becomes
‘Have you written a test?’
‘Have you looked back on your solution?’
becomes
‘Have you checked your code for mistakes?’
‘Is there a more ideal way to express the solution?’
becomes
‘Is there a possibly refactoring? Is there simpler code that can do the same thing? Have you considered the design?’
‘You need to obtain a plan. Have you solved a similar problem before?’
becomes
‘Is there some library you can include or existing module you can re-use?
I could go on. From my conversations with friends working in mechanical and electronic engineering, these topics also seem to specialise well to areas of their practice also.
So in summary: an extremely valuable book for anybody who problem solves. Perhaps a gold mine if you are mathematically inclined and want to consciously understand how you solve problems.
- Goodreads rating – 4.16
- REVIEW – Joshua R Taylor