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 ), but besides that I hope that you will find it valuable.
Introduction
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
Why this book?
It is not a surprise that this person is Andy Hunt, one of pragmatic programmers. The first thing that (I hope ) 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 ). 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:
- Learning and experiencing with all senses - I was a huge believer in the theory that people learn with some senses better, which turns out not to be true. You should learn and experience using as many senses and techniques as you can (it enables more areas in your brain). Try to scribble and listen during meetings, try acting, role play during planning - it brings new solutions and creative ways to the table.
- Deliberate scribbling - I have done this in the past, but I have stopped (because I thought that noting everything digitally will much better). That was a wrong move - you can see above why, but that’s the immediate thing that brings value after doing it one or two times. I just feel more focused and I can see visually the actual problem and solution in my head. I will never stop doing that again.
- Morning Text Dump - Another eye opening technique. It may sounds funny at the beginning, but the first thing you should do after waking up is not a coffee, but a morning text dump. You should literally write 2-3 pages of text, just after out of the bed - the things that you actually remember. After couple of days you will be able to dump almost anything that is in the back of your head (processed by the rich mode of your brain).
- Myers-Briggs Type Indicator - I strongly recommend to read about this and take a test. Results can be ground breaking for you, but even if they will acknowledge what you already know, the original test has some advice and explanations why with type of your personality some things can be hard.
- Lizard Brain - Very important knowledge, especially if you are a very impulsive and judging type. It is the root cause of almost all problems related to subconscious, compulsive behaviors that you may express, especially if you are dealing with huge stress or deadlines.
- Oblique Statements - For me that was the strangest one, but I gave it a try and the results also amazed me. I suggest you to try it by yourself, it is astonishing to see what your brain can deduce, in your actual context from, at the very first sight, words cluster (because they sound and look like this sometimes ).
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!