Think Like a Programmer
If you are a programmer who doesn't have a talent for creative problem solving then you are only really half a programmer until you read and use the material presented in this book.
- Makes it clear from the start who the target audience is and all of the presented material is appropriate for that audience.
- Clearly demonstrates how to break complex problems down into smaller and smaller ones until you get to the point where you know how to solve them easily.
- Covers the areas of problem solving that present the most difficulties for those without a talent for creative problem solving.
- Provides some problems at the end of each chapter that you can use to attempt to put into practice what you have just read.
- Wasn't written many years ago so that a lot of those programmers who have been struggling for many years could have used it earlier.
- First Edition: 20127
- 233 page paperback
- Published by No Starch press Inc
- ISBN: 978-1-59327-424-5
- An Introduction to Creative Problem Solving
- Author V. Anton Spraul
One thing I have noticed over the years is that at least 95% of programmers spend a long time writing what ought to be relatively simple code and that they usually end up with a lot more code than they really needed. The problem is that these programmers have only learnt half of what they really need to know in order to be able to write programs - the programming language itself. The other half of programming is a creative process that is not taught in most programming classes and which in part is a talent that can't be taught.
This book sets out to teach the part of the creative part of programming that can be taught to those who don't have the talent of visualising solutions to complex problems. Anyone who uses the techniques taught in this book will eventually find their way into that top 5% of programmers who can write good solutions to complex programming problems. As they use creative problem solving to produce more effective code their programming ability will improve even though they may have no greater understanding of the particular programming language syntax than they did at the start.
While just about everything in this book seemed trivial and obvious to me (but then I'm not part of the target audience for the book), experience has shown me that such things are seldom either trivial or obvious to most other programmers and I have not previously seen any resource that explains these processes as clearly as this book does. This is definitely a book that I would use in teaching programming to others,
The author has chosen C++ as the language used for the solutions to the various problems the book uses to demonstrate the problem solving process. This is a good choice because many modern languages use a similar syntax so that those who don't know C++ should still be able to understand what the code does well enough to be able to implement an equivalent in a language that they do know. The book also has several chapters that deal with the types of problems that are those most likely to cause problems for those programmers who don't really understand creative problem solving. Those are the ones where there are many solutions that will sort of work but which are either require many times as much code or will be extremely inefficient of both.
Those teaching computer programming no longer have an excuse for only teaching the students half of what they need to know to be good programmers. They should all now be adding an extra subject to their course to teach the other half using this book as the class text.