A great curated collection of facts about how to learn effectively and think clearly. Since it's written by a programmer, it makes many computer analogies that fellow programmers will appreciate. Non-programmers might feel a little left out.
We tend to look at the teacher/learner relationship the wrong way around: it's not that the teacher teaches; it's that the student learns. The learning is always up to you.
Only dead fish go with the flow.
In his seminal book The Fifth Discipline: The Art and Practice of the Learning Organization, Peter Senge popularized the term systems thinking to describe a different approach of viewing the world. In systems thinking, one tries to envision an object as a connection point of several systems, rather than as a discrete object unto itself.
Novices need clear context-free rules by which they can operate.
Experts are rendered ineffective if constrained to operate under those same rules.
By misunderstanding the Dreyfus model, we can rob them of their expertise. It's actually easy to derail an expert and ruin their performance. All you have to do is force them to follow the rules.
No one with expertise in the real world follows the rules to the letter; doing so is demonstrably inefficient.
Quite a bit changes as you move from novice to expert. You don't just “know more” or gain skill. Instead, you experience fundamental differences in how you perceive the world, how you approach problem solving, and the mental models you form and use. How you go about acquiring new skills changes. External factors that help your performance - or hinder it - change as well.
Charles Darwin: “Ignorance more frequently begets confidence than does knowledge.”
Most people, for most skills, for most of their lives, never get any higher than the second stage, advanced beginner: Performing the tasks they need and learning new tasks as the need arises but never acquiring a more broad-based, conceptual understanding of the task environment.
People at lower skill levels tend to overestimate their own abilities - by as much as 50 percent.
The only path to a more correct self-assessment is to improve the individual's skill level, which in turn increases metacognitive ability.
The hallmark of the expert is their use of intuition and the ability to recognize patterns in context.
Deliberate practice, according to noted cognitive scientist Dr. K. Anderson Ericsson, requires four conditions:
#1 - You need a well-defined task.
#2 - The task needs to be appropriately difficult - challenging but doable.
#3 - The environment needs to supply informative feedback that you can act on.
#4 - It should also provide opportunities for repetition and correction of errors.
Our goal, for most of the rest of this book, is to see how we might better harness intuition and get better at recognizing and applying patterns.
On a software team, this idea of providing the right environment for skilled developers is critical.
Keep practicing in order to remain expert.
You want thinking, responsible developers. Overreliance on formal models will tend to reward herd behavior and devalue individual creativity.
By targeting your methodology to novices, you will create a poor working environment for the experienced team members,
Any time someone starts a sentence with “All you need to do is...” or “Just do this...,” the odds are they are wrong.
For the breaking-and-entering example, “I want to open this locked door” really isn't sufficient. What's the context? Why does the door need to be opened? Is it appropriate to use an axe, a chainsaw, or lock-picking tools, or can we just go around back and use the other door? In systems thinking, as in object-oriented programming, it's often the relationships between things that are interesting, not the things themselves. These relationships help form the context that makes all the difference.
Novices need quick successes and context-free rules. You can't expect them to be able to handle novel situations on their own. Given a problem space, they'll stop to consider everything, whether it's relevant or not. Don't confuse them unnecessarily with the big picture.
Experts need to have access to the big picture; don't cripple them with restrictive, bureaucratic rules that aim to replace judgment. You want the benefit of their expert judgment.
Where do you see yourself in the Dreyfus model for the primary skills you use at work?
List the ways your current skill level impacts you.
Identify other skills where you are a novice, advanced beginner, and so on.
Be aware of the possibility of second-order incompetence when making these evaluations.
For each of these skills, decide what you need to advance to the next level.
Keep these examples in mind as you read the remainder of this book.
Think back to problems you've experienced on a project team. Could any of them have been avoided if the team had been aware of the Dreyfus model?
What can you do differently going forward?
Positive emotions are essential to learning and creative thinking. Being “happy” broadens your thought processes and brings more of the brain's hardware online.
Strive for good design; it really works better.
Neuroplasticity (the plastic nature of the brain) also means that the maximum amount you can learn, or the number of skills you attain, is not fixed. There is no upper limit - as long as you believe that.
According to Stanford University research psychologist Carol Dweck, author of Mindset: The New Psychology of Success, students who believed they could not increase their intelligence in fact couldn't. Those who believed in the plasticity of their brains increased their abilities easily. Thinking makes it so. In either case, what you think about the brain's capacities physically affects the “wiring” of the brain itself. That's a pretty profound observation. Just thinking that your brain has more capacity for learning makes it so.
Write Drunk, Revise Sober
Any software system should be able to be guided by an appropriate metaphor. For instance, a payroll system might be considered analogous to a post office, with discrete mailboxes, delivery schedules, and so on. All metaphors break down eventually, but the idea was that a sufficiently rich metaphor could help guide the design of a system and help answer questions that come up during development.
Why do we insert something into a container instead of add it? Programmers are sloppy in their use of metaphors - such as "tables".
Humor is often based on identifying relationships and distorting them.
Building fieldstone walls: you don't plan ahead to gather these particular stones for that wall. You just walk around and pick up a few good-looking stones for the future and make a pile. Then when you get around to building the wall, you look into the stone pile and find a nice match for the section you're working on at the moment. Make a habit of gathering mental fieldstones. Once you have some piled up, the process of building walls becomes easy. It's a good habit to get into.
Merlin transforms Arthur into different animals and birds so that he might experience the world in different ways. As a goose looking down on the landscape below, Arthur is struck with the insight that boundaries are artificial constructs: there are no painted lines on the ground showing kingdoms or countries. He begins to realize that all of England could be united under one king.
But you don't have to actually transform into a bird as Arthur did; just imagining yourself as a bird (for instance) would have the same effect. From this different vantage point, your brain's search engine will be forced to scrape up different ideas.
Only wet babies like change.
Do morning pages for at least two weeks.
Hone a quick wit. Look for connections or analogies between unrelated things.
Read something different from your usual material, for example, fiction, not science fiction, and so on.
4 broad categories of problems:
Cognitive biases: How your thinking can be led astray
Generational affinity: How your peers influence you
Personality tendencies: How your personality influences your thoughts
Hardware bugs: How older portions of your brain can override the smarter portions
Being aware of these bugs is the first step to mitigating them.
Wikipedia lists some ninety common cognitive biases.
Hawthorne effect: Researchers have noticed that people have a tendency to change their behaviors when they know they are being studied.
Fixing on a decision prematurely reduces your options, perhaps to the point of eliminating the successful choice.
You'll learn a little bit more every day. You'll learn more about the users, the project itself, your team, and the technology. That means you'll be at your peak of intelligence at the very end of the project and at your most ignorant at the very beginning. So, do you want to make decisions early on? No; you want to defer closure for as long as possible in order to make a better decision later. But that means critical issues may stay unsettled for a long time, which makes many people acutely uncomfortable. Resist the pressure. Know that you will reach a decision, and the matter will be settled, just not today.
Agile software development embraces the idea of working with uncertainty. Early on, you don't know what the project end date will really be. You're not 100 percent certain which features will be present in the next iteration. You don't know how many iterations there will be. And that's perfectly OK: that's the sort of uncertainty you want to be comfortable with.
Chinese proverb: the palest ink is better than the best memory.
"Anything that is in the world when you're born is normal and ordinary and is just a natural part of the way the world works. Anything that's invented between when you're 15 and 35 is new and exciting and revolutionary and you can probably get a career in it. Anything invented after you're 35 is against the natural order of things." - Douglas Adams, The Salmon of Doubt
The extravert is energized by being with people and socializing. The introvert is not; introverts are territorial and need private mental and environmental space. The introvert draws strength from solitary activities and finds social situations tiring. Seventy-five percent of the population lean to the extravert end of the scale. The other twenty-five percent of us wish they'd leave us alone.
Intuitive people are very imaginative and appreciate metaphor, are very innovative, and see many possibilities - life is always around the next corner. Intuitives may skip off to a new activity without completing any.
Thinking/Feeling: The T's strict view of the rules may seem cold-blooded to the feeling folks. The thinking folks view the F folks as “bleeding hearts.”
Allow for different bugs in different people.
Pretend you are the complete opposite type from yourself on each axis. What would the world look like to that kind of person? How would you interact with that person?
A recent report in the journal Nature about a very modern problem - road rage. In this study, the leading predictor of a tendency for road rage was the amount of personalization on a vehicle: custom paint job, decals, bumper stickers, and so on. Even more amazing, the content of bumper stickers didn't seem to matter, just the quantity. Five “Save the Whales” stickers could actually prove more dangerous than one “Right to Bear Arms” sticker, for example. Why? We're marking our territory.
“Bumper Stickers Reveal Link to Road Rage,” online at http://www.nature.com/news/2008/080613/full/news.2008.889.html.
In the old days of letter writing, the time it took to write longhand and the built-in delay before sending (awaiting the postal carrier) both allowed the cooler neocortex to intervene and remind you that perhaps this wasn't such a great idea. But Internet time short-circuits the neocortex and exposes our reptilian responses. It allows you to fully vent your initial visceral reaction.
It could be your expert intuition at work, or maybe it's just a cognitive bias or other bug. You need to get some feedback: create a prototype, run some unit tests, and chart some benchmarks. Do what you need to do to prove that your idea is a good one, because your intuition may have been wrong.
You need unit tests for yourself, too.
To help get a bigger picture perspective and test your understanding and mental model, ask yourself something like the following questions:
How do you know?
How does what I'm doing cause you to...?
Compared to what or whom?
Does it always happen?
Can you think of an exception?
What would happen if you did (or didn't)?
What stops you from...?
Is there anything you can actually measure?
Get hard numbers on?
These questions from the research on NLP meta models. See Tools of Critical Thinking: Metathoughts for Psychology.
If you think you've defined something, try to also define its opposite.
Mastering knowledge alone, without experience, isn't effective.
"You got to be careful if you don't know where you're going, because you might not get there." - Yogi Berra
SMART stands for Specific, Measurable, Achievable, Relevant, and Time-boxed. For any goal you have in mind (losing weight, deposing your boss, conquering the world, and so on), you need to have a plan: a series of objectives that will help get to your goal. Each objective should have the SMART characteristics.
Measurable goes hand-in-hand with being specific. It's hard to measure something general and abstract but much easier to measure something concrete and specific - using actual numbers. If you think you can't measure your objective, then it's probably not specific enough.
“To make time for” is a bit of a misnomer; time can't be created or destroyed. Time can only be allocated.
Part of diversification is considering the risk vs. return ratio. Any area you decide to invest in may be high or low risk and high or low return on investment. For instance, learning a popular technology such as .NET is fairly low risk - many legions of programmers are doing it, so there is plenty of support, published books, courses, job openings, and so on. But that also means it's fairly low return on investment - there are many legions of programmers doing it, so there's a lot of competition for those job openings. The fact that you do it isn't so special. Today, any number of technologies on the horizon are high risk and potentially high reward. They may go nowhere - that's the risk. Erlang or Haskell may be the next major language breakthrough. Or not.
One major difference between knowledge investments and financial investments is that all knowledge investments have some value.
This technique of studying a book or other printed matter is known as SQ3R; that's an acronym for the steps you need to take.
Survey: Scan the table of contents and chapter summaries for an overview.
Question: Note any questions you have.
Read: Read in its entirety.
Recite: Summarize, take notes, and put in your own words.
Review: Reread, expand notes, and discuss with colleagues.
Test-driven learning. When testing yourself, you can take advantage of the spacing effect.
Low-level detailed design documents become obsolete almost immediately.
Prepared Mind: Neural Activity Prior to Problem Presentation Predicts Subsequent Solution by Sudden Insight
Mental preparation that involves an inward focus of attention can promote flashes of insight, even if the preparation occurs well in advance of facing any particular problem. Turning your attention inward, as you would do when working with a mind map, sets up some condition in the brain that allows for happy flashes of insight later in the project. So, it might be that documenting is more important than documentation.
Try to explain your material to a child or someone outside your field of expertise. The trick is to do so in terms they can understand.
That's the real benefit to teaching in general; it clarifies your own understanding and reveals many of your underlying assumptions.
Take a new topic, and try to teach it.
"We should be careful to get out of an experience only the wisdom that is in it and stop there; lest we be like the cat that sits on a hot stove-lid; he will never sit on a hot stove-lid again - and that is well; but also he will never sit on a cold one anymore." - Mark Twain
Imagine you were taking a dance class, only to find you had to pass a test on “dance facts” before actually dancing.
We're not really designed to just receive information but rather to explore and build mental models on our own. We need to be able to poke at a problem, to explore it, or to “get used to it”
To solve a problem, ask yourself these questions:
What are the unknown aspects?
What do you know?
What data do you have?
What constraints and what rules apply?
Then make a plan, execute it, and review the results. Try to think of a familiar problem having the same or similar unknowns. Draw a picture. Solve a related or simpler problem; drop some constraints or use a subset of the data. Were all the data and constraints used? If not, why not? Try restating the problem. Try working backward from the unknown toward the data.
Fully embrace a new skill. You need to unlearn just as much as you need to learn.
Examples include moving from the horse and buggy to the automobile, from the typewriter to the computer, from procedural programming to object-oriented programming, and from single programs on the desktop to cloud computing.
For each of these transitions, the new way was fundamentally different from the old way. And where they were different, you had to let go of the old way.
A functional programming language, such as Erlang or Haskell, much of what you've previously learned about programming languages will just get in the way. They aren't similar to traditional procedural languages in any way that's helpful.
We tend to think of failure or ignorance in a very negative light, as something to be avoided at all costs. But it's not important to get it right the first time; it's important to get it right the last time.
We learn best by discovery, not instruction.
Permission to fail leads to success.
Pat Metheny: “Always be the worst guy in every band you're in. If you're the best guy there, you need to be in a different band. And I think that works for almost everything that's out there as well.”
Pretend you are the expert.
Experience using scaffolding. Swimmers do this by being attached to a rope and pulled through the water at high speed. Before a swimmer can achieve that sort of speed on their own, they get to experience what it will feel like.
The overabundance of information has resulted in a poverty of knowledge and attention.
Information is raw data in a given context. For instance, the fact that Microsoft bought some company for a billion dollars is just information, and there's no shortage of information these days. Knowledge imparts meaning to that information. You apply your time, attention, and skill to information to produce knowledge. Looking at that particular Microsoft acquisition and knowing how it might change the market, provide new opportunities, and destroy others constitutes knowledge.
Try to build up to a set period of twenty minutes or so every day, preferably at the same time.
Are you “cooking” when you're letting something marinate for twelve hours? Are you “working” when you're sitting around thinking about a problem? Yes.
If the task is something you really just don't want to do, then it's likely that any diversions are simply procrastination. If you're still interested in it but feel “stuck,” then the ideas are still stewing, and it's OK.
If you can't think of three ways a plan can go wrong or think of three different solutions to a problem, then you haven't thought it through enough.
Jerry Weinberg's The Secrets of Consulting
You can use a wiki implemented in your favorite text editor - a wiki-editing mode. This gives you WikiWord hyperlinks and syntax coloring or highlights within your editor environment. I've used this feature in vi.