Book Review: "Think Like a Programmer" by V. Anton Spraul
“Rewire your Brain”. The quote from the back of this book couldn’t have said it any better. I acquired this book to add to my every growing list of programming and scripting books in hopes that I can work through some of the ‘humps’ in my troubleshooting skills. Before I get started in this quick review I’ll give you a little background.
I started out dabbling in programming with Basic, utilizing QuickBasic back in the early 90’s, from there I self-taught myself C and Java programming but quickly forgot everything I learned. Fast forward 10+ years to where I spend a majority of my time scripting in Bash, Perl, and Powershell, with minor dabbling in C (mainly patching Linux, reading other’s code, or AVR programming). So when I saw this book I figured ‘hey, the back of the book says I don’t necessarily need C++ programming, this just might be up my alley’.
Okay, let's get that one thing out of the way before I start my review. Just because the back of the book says, and I quote “Just because the books examples are written in C++, the creative problem-solving concepts they illustrate go beyond any particular languages....”, if you don't know any of the fundamentals of C++, be it classes, arrays, memory allocation, etc then in all honesty you either need to pull out your C++ fundamentals books (like I had to) and brush up on your C++ or read the book for some of the really good problem solving examples. I would say 90% of this book deals with C++ examples and problem solving that has to do with C++ coding examples
Will this book make you a better programmer? Will it teach you to write better code, better syntax? No. However, this book will teach you what you are doing wrong in your code, how to streamline your code, and how to step back, take a breather and re-evaluate it for better or worse. Though I haven’t touched a line of C++ code in over a decade I was able to read this book (and even take some of the examples, turning them into C) and learn some of the mistakes I have made over the years. There were many times where I had been frustrated writing a program or a script, and in my frustration I turned out convoluted, obscure code that made absolutely no sense yet it ran in some twisted, duct tape and twine way. Had I read this book previously, taken a step back and utilized the steps illustrated in the book to properly evaluate what my end goal was then my end results would be the same (code runs) yet with fewer problems along the way.
So onto a quick look at the book. The first few chapters go over problem solving skills outside of the programming environment, like puzzles and day-to-day problem solving- utilizing critical thinking and analytical thinking to solve real world problems before you jump into your programming environment. From there the author goes into the skills necessary to problem solve in a programming environment, and then immediately jumps into the C++ examples.
Each example is broken down by chapter with each chapter guiding the reader in the ‘best practice’ scenarios for effective problem solving. Concluding each chapter is a list of programming exercises that the reader can complete, of which I highly recommend.
At the end of the book is a concluding chapter on problem solving that wraps up everything the reader has read on the examples and exercises outlined in the book.
My thoughts? If you have no C++ background I would honestly look elsewhere unless you want to pick up the book for the 2 or so chapters on ‘non C++’ problem solving guides. However if you are a student learning C++ or a veteran C++ programmer, I highly recommend adding this book to your ever growing bookshelf. You just may change the way you re-evaluate writing your code. I know I did; after reading this book I started going through scripts and code I have written in the last 15+ years and shaking my head in disbelief. Time to pick up my notebook and problem solve old scripts.
Special Reports: DevOps
Have projects in development that need help? Have a great development operation in place that can ALWAYS be better? Regardless of where you are in your DevOps process, Linux Journal can help!
With deep focus on Collaborative Development, Continuous Testing and Release & Deployment, we offer here the DEFINITIVE DevOps for Dummies, a mobile Application Development Primer, advice & help from the experts, plus a host of other books, videos, podcasts and more. All free with a quick, one-time registration. Start browsing now...