Books that changed my career - Pragmatic Thinking and Learning

This blog post is the second in the series which contains the most influential books that I have read in my programming career. This is my private ranking, each post contains a good dose of my private opinions (you have been warned :wink:), but besides that I hope that you will find it valuable.


Programming and designing is very thankful activity, when everything snaps and clicks together (programmers call this state flow). Nevertheless, it can be extremely frustrating as well, especially when you try to solve something really difficult, or you are overloaded with work, maybe personal issues. Sometimes the same hard problem will be solved in a day, sometimes it will take couple of weeks instead (and I am assuming doing it in both cases from scratch and for the first time).

But some people seem to be more effective than others at first sight. Like they do not have bad days at all. This can be observed especially in larger teams, for longer periods of time - when you can work with multiple colleagues several times, where each activity is separated by a few weeks. I am not a huge fan of biorythm pseudoscience, so there must be a different explanation.

In most cases they have got very good habits or huge self-awareness. This sounds almost like an obvious statement, but actually it is not so simple to bring it to your daily working environment. We are learning all the time (and someone who stops learning as an active programmer, while acting like an expert, has treated himself with the professional kiss of death) and it could be useful to know all science and these little tricks which will ease and improve the whole process.

Fortunately, someone has collected many of good techniques and advice in a book, with an addition of the science (neuroscience, psychology and cognitive science) necessary to explain everything in greater detail.

Pragmatic Thinking and Learning: Refactor Your Wetware

Programming Thinking and Learning

Why this book?

It is not a surprise that this person is Andy Hunt, one of pragmatic programmers. The first thing that (I hope :wink:) caught your attention is a subtitle. It has a subtle pun - the word wetware. I encourage you to dig deeper into the meaning of this word, because it is crucial to rewire your thinking to a proper attitude, necessary to work with this book effectively.

The book is structured in a very deliberate way, we are starting with definitions and theoretical introduction to the learning process (Dreyfus Skill Acquisition model). Then we are digging deeper into mechanisms that are working inside our brains, with a small dose of inevitable theory. After knowing how your brain works inside out, we are ready to rewire and refactor our wetware - we will try to overcome our primal instincts (I am the evolved one), we will try to learn deliberately, work in a focused manner. At the end author introduces the key concepts how be an expert, but still be a passionate and eager to learn even more. If you met Dreyfus Model before, the whole structure will look similar for you.

Besides science, the book also introduces many well-known and verified methods like GTD (Getting Things Done), positive psychology or techniques known from Agile or eXtreme Programming. Even referrals to the classical Pragmatic Programmer book are used in a proper context (e.g. rubber duck debugging or boiling frog explanation).

As engineers, we are rather skeptical in terms of emotions, instincts and psychology. This cannot be described, evaluated and verified with any mathematical or physical model that we know. It looks to us as voodoo, a kind of black magic which involves too many irrational things at once. But this book is different, the major advantage is that is written in a geek language for geeks, by a computer geek. And moreover you will experience only fully scientific explanations to the certain behaviors (supported by real studies, everything referenced in book contents or annotations). Even the chapter describing meditation techniques, which at the first sight definitely is not supported by any science, has some reasonable explanations based on research related to breathing techniques.

Obviously, many of these techniques are not a silver bullet for everyone, but I strongly suggest at least trying them. Do not rush through the book, even the author encourages slower reading and thinking about the chapter currently being read (and he does it by introducing small exercises which require e.g. walking or drawing :wink:). If you feel that a certain technique is not for you, it is fine - learn, think and adapt.

For me the most important and eye opening techniques are:

What’s next?

I am aware that I have started this series with less obvious positions in the programmer’s library. For the next review, I would like to shift a little bit - to the more standard and established books. This is a classical one, again from the Pragmatic Programmers sign. I have three copies of this book: in English (as an ebook), in Polish (again, as an ebook), but the most valuable for me is the printed Polish version, which I have received from my friend, with an inscription. Stay tuned! :wink: