Software Development

Pragmatic Thinking and Learning – how to think consciously about thinking and learning

Firstly, I think every programmer should read this book, even more, anyone whose career requires constant learning new things, skills of effective thinking and problem solving, should read this book as well. Why? Because in this publication author really carefully gathered the available scientific knowledge about how our brain works, how it processes information and how it stores the new knowledge. And more importantly, he described how we can change our behavior to make the process of learning and problem solving the most effective. And I don’t think I need to convince anyone that effective learning and thinking is very useful (if not necessary) in our work.

The book itself covers various areas of how our brain works, how we learn and solve problems. The list of most interesting and useful topics included in this title below.

Dreyfus skill model

Skill level, according to Dreyfus, is divided into five levels:

– Novice, when you need step by step instructions (this new Hello World application using new language/web framework you have done recently?) to get things done. You have problems with troubleshooting or doing something what is not described in “recipe”

– Advanced Beginner: you can do something on your own, add a component which is not described in the tutorial, etc. but it is still difficult to solve problems.

– Competent: you can troubleshoot, you can do a lot on your own without tutorials and detailed instructions. You actions are based on past experience.

– Proficient: you are able to understand a big picture, a concept around which framework/library was built. You can also apply your knowledge to a similar context

– Expert: when you simply, intuitively know the answer and (what can be most surprising) sometimes can’t explain why you choose that way and not the other.

Majority of people in most areas are in one of three first levels. Proficiency and being an expert requires a lot of learning, trying, failing and derive knowledge from other’s experience. Only about 1 to 5 percent of people are experts in something.

L-Mode and R-Mode

Our mind is working in two modes: Linear Mode and Rich Mode. Most of the time we use the first but sometimes when we are stuck with a problem, it is good to give Rich Mode some space to start working. We can do it by just going for a walk, taking a shower, mowing a lawn, etc. Any tedious or not-requiring full concentration task will do the job. When our mind isn’t busy with constant thinking, it could switch to Rich Mode and surprisingly deliver the answer while we weren’t (consciously) thinking about the problem. I guess that is why I liked one of my previous job where my desk was quite far from toilets so I needed to have a small walk a few times a day.

Write Drunk, Revise Sober

Don’t strive for perfection, try to unleash your creativity. Not aiming in being 100% accurate and perfect is the most important when doing first drafts, sketching a prototype and researching new areas. Just relax and allow yourself to be creative. Don’t care about some inaccuracies and minor errors. They will be taken into account later, now it’s time to create something new.

Target SMART Objectives

It is very important to pick a proper objectives in your life. We all have heard about those New Year’s resolutions which are abandoned by the end of January. Their problem is that they are not well-thought-out objectives. To make our life better and our objectives easier to achieve we should follow those five rules. Objective should be:

Specific, so the more detailed it is the better. Instead of “I will loose weight” you should say “I will loose 10kg”.

Measurable, connected with the first one. if objective is specific it will be also easy to measure. 10 kilos are easy to check. So you should try to define your goals so they are easy to measure.

Achievable. Its not the best idea to say “I will learn Scala in one week” because it is not specific, hard to measure and, most important, very hard or even impossible to achieve in such short amount of time. Instead you should say “I will learn how to create Console Calculator in one week using Scala”. And it is definitely doable.

Relevant. If you don’t like Microsoft and all its products, picking a C# as a new language to learn won’t work. You should care about your objective. The more warm feelings you have about your objective the better. You will find impossible to motivate yourself if you hate/don’t like what you are trying to achieve. In your example, you should pick a language you like or you have positive associations, maybe it is Scala (the next Java), maybe Kotlin (because it is also the name of Ketchup producer in Poland)

Time-Boxed. You should always include information about deadline in your objective. “I will pass this certificate” seems ok but when? In a three months or in a five years? And five years makes this objective almost useless.

Read Deliberately – SQ3R

When reading a book about subject you want to learn, try to follow SQ3R rule:

Scan table of contents and chapter summaries to get a rough idea what is book about and what knowledge it contains

Question: write down questions that comes to your mind after scanning

Read entirely

Recite: summarize, take some notes using your own words and your understanding of the subject

Review: reread, update your notes, join or start a discussion with someone about what you’ve learnt/read

Similar technique of reading called PQ RAR is described here.

Manage your knowledge

You should have a place to gather your knowledge and things you think might be useful in the future. It can be personal wiki, notes written in Evernote or Springpad. And another important thing, every time you have an idea you should be able to write it down, using either a classic paper notepad or application in your mobile phone. You should choose something you can easily take with you everywhere or almost everywhere.

Some valuable quotes

And for the end, some quotes from the book I found really intriguing:

– You got to be careful if you don’t know where you’re going, because you might not get there.
– Time can’t be created or destroyed, only allocated.
– Give yourself permission to fail; it’s the path to success.
– Inaction is the enemy, not error.
– Remember the danger doesn’t lie in doing something wrong; it lies in doing nothing at all. Don’t be afraid to make mistakes.


As I wrote in the beginning, this books is really, really worth reading if you want to squeeze more out of your brain. It will help you to optimize learning and thinking process so you could be more effective at your day-to-day work without spending more on hardware, software or more comfortable furniture.

And what about you? Do you have your own special tricks to learn faster or solve problems easier? If yes, please share them in the comments.

Reference: Pragmatic Thinking and Learning – how to think consciously about thinking and learning from our JCG partner Tomasz Dziurko at the Code Hard Go Pro blog.

Notify of

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Inline Feedbacks
View all comments
Back to top button