Pragmatic Thinking and Learning - Review & Notes

Published: 2015-06-02
Tagged: readings

Short Review

Before I get to the meaty notes part, I'll write a short review of this book.

I first saw this title when I was browsing The Pragmatic Bookshelf. They've got some laser-focused titles on specific sub-areas of things that interest me such as web development with clojure. They also branch out into the meatspace side of things. Pragmatic Thinking and Learning is one such book. The title sounds a bit gimmicky. I'm interested in all things learning and brain related, I hesitated before grabbing this book. What beat my hesitation? This book's author, Andrew Hunt, is the same guy that co-wrote The Pragmatic Programmer along with David Thomas.

The Pragmatic Programmer is my programming-zen book. I've read it twice, going to read it again soon. Every time I read it, I understand different parts of it due to accumulating experience since I've last read it.

Andrew's name on the cover made me think "this can't be mumbo jumbo 'learn-X in a weekend' bullshit". And it wasn't.

The book sets the stage by first introducing why learning is important and how the brain does learning. It covers things such as the Dreyfus model of skill acquisition as well as left-brain mode and right-brain mode.

After that the book delves into particular areas of learning and how to become better at it. It covers topics from focusing better through meditation to how to set goals you're actually able to meet, to external techniques that aid your learning. This is covered in a straightforward and direct way and each part ends with a list of actions to perform. This reminds me of a programming book where each chapter ends with exercises. This makes the book short but packed to the brim with material and I'm glad I took notes along the way to go back to.

The Bottom Line

This book introduces tools that work like compound interest. On one hand I wish I started using these earlier. On the other I don't think I'd understand these tools and their intended use earlier on my path. I would still recommend it for any one at any skill level because the dividends it pay are well worth. If you feel like you haven't captured the full value of this book, make a note to read it again later!


(Strong actionable items in bold)

The Dreyfus Model of Skill Acquisition:

Novice - follows rules; knows no context; cant judge or forsee consequences of own actions; focused on goal and not process. Advanced Beginner - limited contextual awareness; can start solving problems by analogy; but still doesn't have understanding of the system; can't qualify/prioritize parts of problems. Competent - enough conceptual knowledge/context to solve problems based on experience-based principles, not only analogy; beginning of deliberate planning but prioritizing is still a difficulty; more self-reflection. Proficient - understand and require conceptual knowledge/context and actively seek it; enough self-reflection to correct own behavior; understand own and other's experience; understand principles and rely on them instead of rules. Expert - source of knowledge; work from intuition; ability to prioritize items and determine their relevancy.

The path from novice to expert:

  1. Moving away from rules to intuition - gain experience, begin seeing patterns, seeing the big picture.
  2. Moving from a collection of parts to focus only on relevant parts.
  3. Moving from 3rd person observer to being an integral part of the system.

(This is somehow related to all the self-help books or articles that promise "Learn X in 20 minutes", which give you a basic set of rules. Great for going from absolute zero to novice, but at a single small step higher than absolute novice, these are useless. Good for kickstarting.)

Supplment "learning by synthesis" instead of analysis. Learn to build a frog instead of dissecting a frog. Learn by building your own framework instead of just using one.

The brain has two modes: l-mode and r-mode. L-mode is slow, analytical, linear, verbal, granular. R-mode is fast, fuzzy, visual, and holistic.

L-mode is great at conscious analysis. R-mode is great at creatively relating concepts and building bigger concepts. When trying to draw, L-mode is trying to make you draw using shapes and symbols. If you trick L-mode into shutting down by turning a picture upside-down and thus destroying it's symbolic meaning to you (ie. from "man sitting on chair" to "buncha squiggles"), R-mode is able to focus on the whole - lines, structure.

R-mode-to-L-mode flow - we can help these two modes work together to get more out of each brain cycle:

  1. Make a super shitty first draft - this gives r-mode the steering wheel - and polish the details with l-mode later. Don't even think about the details at first.
  2. Include multiple senses to budge r-mode into action - doodle things, put on music, touch objects, move around.
  3. Try to describe the problem using multiple sense - draw the problem, describe it verbally, build it physically using paper or blocks.
  4. Do some r-mode activities like drawing or rock climbing.
  5. Pair program - the driver is l-mode (focused on details), the navigator is in r-mode (seeing the big picture).
  6. Use metaphors to make analogies between problems in one domain with problems in other domains.

Journaling - "morning pages technique" - produce 3 handwritten pages first thing in the morning. About anything, no censoring. Do not skip a day.

Take long walks. (This is later expanded on when the author suggests giving yourself time to think.)

Change your viewpoint to solve a problem ie. When debugging, try different ways to cause the problem.

Brian Eno and Peter Schmidt - 100 Oblique Strategies - lateral thinking aid - phrases meant to help your mind "break" into another viewpoint.

Cognitive biases - too many to list, this stuff is easily found on the web and I personally have found limited use in knowing these.

Engineering log - keep a log of problems and solutions, design notes, coding questions, and other bits of information related to work. Mark each item every time an entry is retrieved.

Generational Archetypes - Strauss-Howe generational theory - a theory that boxes generations into four archetypes: prophets, nomads, heroes, artists. A cycle includes progressing through all 4 archetypes and so each cycle is roughly 80 years in length. This can be used to gauge the views of a person that is younger or older and originates from another archetype.

Feedback is key to learning. Creating focused and tight feedback loops boosts learning. Actions in learning should give direct feedback on progress - these loops should be short to incorporate feedback withing minutes or hours instead of weeks or months.

SMART Objectives - a framework of setting the right goals. Right goals are goals that are physically obtainable. These goals should adhere to the following criteria: - specific - measurable - achievable - relevant - time-boxed

These traits, when applied to a goal, really help in ensuring that goal is met. Helps to filter out goals that suck resources but are unobtainable.

Pragmatic Investment Plan - a learning plan that has the following traits:

  1. diversified like an investment portfolio.
  2. active investment - coupled with good feedback loops reevaluate the plan.
  3. regular investment - carve out time at regular intervals to spend on the plan.

The aim of the Pragmatic Investment Plan is to choose what to learn based on the value it brings you. Dividing skills into a diversified portfolio saves you from being a super specialized one trick pony. Regular investment helps you keep the plan on track and helps you focus on it - it's better to spend 30-60 minutes every day or every second day then 6 hours once a week. Finally, the plan shouldn't be rigid and should be open to modification based on feedback. Feedback mechanisms should be built into the plan.

Study Groups: make one or join one. Link up with coworkers, friends, or meetups. Take turns asking questions, presenting chapters from a book you're studying etc.

SQ3R - a method of digesting written knowledge. The acronym stands for the steps that should be performed on the material:

  1. Survey - check the table of contents to evaluate relevancy of the material
  2. Question - write down questions you have of the material or questions you hope the material answers.
  3. Read - read while having the questions from Q in mind so that you're actively assimilating the knowledge.
  4. Recite - answer your questions from Q in writing or orally - try to expand on them a little bit.
  5. Review - review sections that are or were unclear, make notes.

Information retrieval - use techniques that require active retrieval of information to strengthen that knowledge in your brain. This includes:

  1. Teaching this item of knowledge to others
  2. Write about this
  3. Apply the knowledge ie. build something

Mind Maps - a visualization of parts of a piece of knowledge. Should be hierarchical - starting with the main idea/entry point, and branching into smaller subjects building up or related to the main idea. Good for figuring out relationships between different items.

Build to learn, not learn to build. This is tangentially related to the synthesis note and the create a shitty first draft note. "Learn by playing" ie. building shitty stuff is better than building nothing at all. Also feels somehow related to Elon Musk's "I think it's important to reason from first principles rather than by analogy".

The Inner Game of X. Based on Timothy Gallwey's series of books called "The Inner Game of (Tennis|Work|etc)". These principles are:

  1. Tight and quick situational feedback
  2. "Seeing without judging" - notice things without emotional attachment
  3. "Seeing without judging... then correct" - simply improve the process
  4. aka a step back from the problem. Ask yourself "why is this happening?", "what parts are involved?", "how are they interacting?", "how could this lead to the problem?"

Give yourself the permission to fail to take more risk and fail more often and learn more from each failure. Sounds complicated, but just ask yourself this: "Will the world really end if I fail? Would I make this mistake again?"

Offload remembering things into your personal knowledge management system. From earlier in the book: carry a small notepad to write down ideas. Suggestions: set up a personal wiki to write notes in and establish relationships between them.

Reduce Context Switches

  1. Setup clear rules that say how and when you're interrupted
  2. Check emails at predetermined times only, get rid of "you've got mail notifications" from your workstation and phone.
  3. Don't check email first thing in the day - start off with solving a problem.
  4. "Send less email and get less email" - if you don't reply fast and often, people will send you less messages.
  5. Prepare to be interrupted by leaving yourself small notes ie. comments in code, comments in writing - that will help you come back to this context.
  6. Separate your tasks into different desktop workspaces ie. have a workspace focused solely on communications, on programming, on browsing.

Inaction is worse than errors. This is related to giving yourself permission to fail and The Inner Game of X.

Start taking responsibility:

  1. Ask questions - "why?", "how do you know?", "how do I know?"
  2. Get involved in the outcome, become part of the system and not an outside observer.

Hi, I'm Matt.

This blog is an unordered set of thoughts extracted from the mind of a software developer.

About Me PGP key

Archives  Feed  The Photolog!  t: pr0tagon1st