Book Review: Pragmatic Thinking and Learning
Any book that claims to help you "refactor your wetware" and has a chapter on debugging your brain is a natural eye-catcher, right? Reading Andy Hunt's "Pragmatic Thinking and Learning" probably won't elevate your IQ twenty points or teach you tactile telekinesis, but it's a solid read, containing loads of information about how the human brain processes information, the nature of learning, and how you can take advantage of these things through helpful productivity hacks.
Don't let the shelving label suggested here fool you; this book really has more in common with self-improvement books than it does with programming texts. And like most self-improvement books it drags in places and tends to re-emphasize some of the same points over and over. But this really is a self-improvement and cognitive interest book created specifically for knowledge workers, and as such, it's particularly targeted at you and me. And that's A Good Thing, as many similar texts are much more focused on the theoretical underpinnings of the science rather than how we can immediately benefit.
Hunt starts off by examining the brain and learning processes through use of established indicators like the Dreyfus model and Meyers-Briggs (hey, I'm an INTP! Surprise). He also talks about what it means to be an "expert" in a particular subject -- noting that context is king -- and how intuition / instinct is the single largest factor in determining where you stand on the scale from novice to expert.
The next chunk of the book delves into the real meat of the subject, analyzing the differences between l- and r-mode processing and suggesting ways that you can "trick" your brain into using them collaboratively through certain games and tasks. Examples used range from keeping dream journals, to making frequent use of metaphors, brainteasers, rock climbing, and drawing exercises. Some of the most fascinating material in the book resides here, as you can actually try the suggested exercises for yourself and observe the results. And of course, this is all happily related back to how these same techniques work into programming best practices such as pair programming and refactoring.
The very nature of learning itself is examined next, and Hunt lashes out against corporate training and certification programs as ineffective ways to actually learn anything of long-lasting value. Instead, he posits, learning should be deliberate and continual. Surely this isn't a surprise to anyone who has taken the time to seek out this book in the first place or read this review. Learning by teaching and "learning by playing" are also stressed. Different learning biases are examined, and concepts like mind maps are introduced that can be helpful in organizing your thoughts. Personally I've never really seen a lot of value in "formal" mind mapping, but carrying around a simple unlined notebook and getting into the regular habit of scribbling down thoughts down is something everyone should try. Re-transcribing and expanding on those notes later provides even further value.
Managing Focus, the penultimate chapter of the book, is probably one of its strongest, and a good way to wrap things up with more immediately useful practical advice. Hunt describes tips for using meditation and purposeful defocusing (and non-goal-directed thinking) to increase overall awareness and take advantage of r-mode thinking. He also mentions, albeit briefly, the GTD philosophy, and discusses the benefits of using note-taking devices and Wikis to "increase exocortex storage". What good is encyclopedic knowledge of a programming language syntax, after all, when you can just use an external reference to easily look that information up? True knowledge is vastly different than mere memorization, and we should always farm out what we can to external sources.
Probably the most important point that Hunt raises here is the importance of context in our daily work. Focusing on a single task at a time with minimal interruptions raises productivity significantly. As humans, we are truly truly awful at multi-tasking (I can personally confirm this); instead of trying to juggle too many simultaneous tasks, we should instead just avoid it whenever possible. Context switches are costly -- Hunt reports that it often takes upwards of 20 minutes to "reload context the context stack" -- and the benefits of being constantly interrupted rarely outweigh the costs of the consequentual productivity losses. Hunt advises us to set aside certain safe times for phone calls, emails, and other bits of necessary communication (along with other tips for proper single task management), and that by doing so not only will our productivity increase but our stress levels will decrease accordingly.
I'd definitely recommend Pragmatic Thinking and Learning to fellow developers who are interested in pushing the limits of their personal productivity, or just to anyone who might be interested in the basics of human learning processes and cognitive science. It's certainly a bit weak in theory from an academic point of view, choosing rather to focus on immediately applicable productivity tips, but at 250 pages, it's a quick read and does a nice job of introducing the basics (which is more than most casual readers will most likely be interested in).
If you're interested enough to dig deeper into the theroetical underpinnings that make these productivity hacks work, the included biography is full of influential texts that will get you what you need. Just make sure to use the techniques presented in this book for reviewing them in order to maximize your reading experience and knowledge recall ;-).