(by Andy Hunt)
Chapter 1: Introduction
Programming is all about problem solving. It requires creativity, ingenuity, and invention.
Software isn't designed in an IDE or other tool. It’s imagined and created in our heads.
Two of the most important modern skills are communication, and learning and thinking.
Chapter 2: Journey from Novice to Expert
- Event theories can be measured, verified, and proven. Construct theories are intangible abstractions, cannot be proven, and are evaluated by usefulness.
- It's often difficult for experts to explain their actions to a fine level of detail; many of their responses are so well practiced that they become preconscious actions.
- Novices need clear, context-free rules by which they can operate, just as the expert would be rendered ineffective if he were constrained to operate under those same rules.
- When becoming an expert, you don't just know more, but you experience fundamental differences in how you perceive the world, how you approach problem solving, and the mental models you form and use.
- At stage 1 of the Dreyfus model, novices can be somewhat effective by following context-free rules, but are vulnerable to confusion when mistakes happen or things go awry.
- At stage 2, advanced beginners try things on their own, take advice, and want information fast, but still have problems troubleshooting and don't see a big picture.
- At stage 3, competent practitioners can develop and use mental models, troubleshoot problems on their own, and find and apply advice from experts.
- At stage 4, proficient practitioners can correct previous poor task performance, learn from the experience of others, and know what likely happens next or what can break.
- At stage 5, experts are primary sources of knowledge, continually look for better methods, and work from intuition instead of reason.
- Novices following rules by experts thrive, while experts following rules by other experts suffer. Their tool is intuition.
- Three most important changes are moving from rules to intuition, equal weighting of parts to distinguishing important and unimportant ones, and detached observer to involved influencer.
- Most people are advanced beginners who overstate their abilities (the Dunning-Kruger effect) because metacognitive abilities tend to only appear at higher skill levels.
- A competent practitioner might be better suited to teach a novice than an expert, who are often unable to articulate why they reached a particular decision.
- Deliberate practice requires tackling a well-defined and appropriately difficult task, in an environment that provides feedback and provides opportunities for repetition and correction of errors.
- To help promote the skills of advanced beginners to competent practitioners, have good exemplars in the environment; they will be watched and imitated.
- Trumpeter Clark Terry told students the secret to learning music was to imitate, assimilate, and then innovate.
- Tools and models are useful in the right environments, but none are a panacea, and their misapplication has probably done more damage than good.
- Avoid formal rules if you need creativity, intuition, or inventiveness.
- Context matters, as the expert uses context-dependent intuition, but the lower stages of the Dreyfus model aren't skilled enough to use it.
Chapter 3: This Is Your Brain
- The R-mode of your brain is critical for intuition, problem solving, and creativity. The L-mode gives you the power to work through the details and make it happen.
- Memory is actively maintained by an executing loop. Like dynamic RAM, your brain needs constant refreshing, or its memories fade.
- Like describing a dream, R-mode yields many results that can't be verbalized. Additionally, it's like peripheral vision, outside your direct control.
- R-mode is unpredictable, so you need to be ready to capture any insight or idea at any time.
- Once you start keeping track of ideas, you'll get more of them. Everyone has good ideas to capture.
- L-mode gives you verbal, analytic, symbolic, abstract, temporal, rational, digital, logical, and linear thinking abilities.
- R-mode is non-verbal, non-rational, synthetic to compose and form wholes, spatial, concrete, intuitive, analogic, and holistic to recognize patterns and structures. This is where intuition lies.
- Building things you can learn from, like prototypes and unit tests, is R-mode synthesis; inspecting and dissecting is L-mode analysis.
- When you are fearful or angry, filled with negative emotions, your body shuts down extra resources in preparation for for fight or flight.
- Creativity comes from the selection of the right components in the right presentation to create the work. And selection comes from pattern matching.
- R-mode helps you find global, holistic patterns. L-mode lets you analyze parts and look into the detail.
- Believing in the plasticity of your brain, or the amount you can learn and number of skills you can attain, increases those abilities.
Chapter 4: Get in Your Right Mind
- Activate more neural pathways than usual to involve more of your brain. For example, fiddle with a tactile puzzle while pondering a tricky problem.
- Allow several senses to interact, like writing a problem down, drawing it, describing it verbally, engaging in open discussion, and act out roles.
- Listening to music, drawing, meditation, jogging, needlework, rock climbing, and so on can engage the R-mode that shuts off the L-mode.
- Once you experience the shift to R-mode, you'll better know what R-mode processing feels like, and it will become easier over time.
- You want to let the R-mode lead and then switch to the L-mode to "productize" it.
- Working together is an effective way to discover helpful and interesting abstractions. In pair programming, the driver is in L-mode, while the navigator is in R-mode.
- A strong metaphor comes from suddenly switching from one frame of reference to a different, unexpected one. That junction between the two frames is the bisociation.
- The farther away the ideas are, the harder it is to join them in a metaphor that works. But such imprinting from one frame to another is very powerful.
- Programmers are sloppy in their use of metaphors. For example, using
insert() instead of
add() on a container, tables that aren't like tables, threads that aren't like threads.
- Humor comes from drawing or extending relationships beyond the norm, which also helps build stronger metaphors.
- Your brain stores every input it receives, although does not necessarily index them. Your R-mode asynchronously scans these memories, albeit inefficiently.
- Image streaming harvests R-mode imagery: Pose a question, then close your eyes, and describe out loud every image that crosses your mind. Imagine it using all five senses.
- With the morning pages technique, write three uncensored pages long hand before you "wake up." This gives you an unguarded, unconscious R-mode brain dump.
- Insight can come at odd times like taking a shower or mowing the lawn because the L-mode gets bored and tunes out, leaving the R-mode to present its findings.
- As Poincaré did, write down everything you know about a problem, and then go on a walk without focusing on it, allowing the R-mode to dominate.
- Making source code human-readable means making the larger patterns in the code easier to see.
- Use consistent typographic cues to aid visual perception. Conflicting styles are contentious because they represent conflicting patterns.
- Change your viewpoint on a problem by viewing it in reverse, exaggerating an idea, combining disparate ideas, and non-goal-directed playing with ideas.
- Even small changes in your routine, like where you park, where you part your hair, when you eat, and what days you shave help prevent neural ruts.
Chapter 5: Debug Your Mind
- Cognitive biases are mental "bugs" that affect your decision making, memory, perception, rationality, and so on. There are a lot of them.
- Symbolic reduction, or reducing large, complex systems to simple, easily manipulated symbols, is essential to computer programming and knowledge-based work.
- Humans are bad at trying to extrapolate future events from previous ones. We assume a stable, linear progression, with easily defined cause and effect.
- Don't discount unobserved or rare phenomena as impossible. And homogeneity and randomness are different things.
- On an exploratory or inventive project, you learn as you go, and so you know most at the end. So defer closure in order to make better decisions later.
- Agile development embraces uncertainty; it is not a bad thing. Chip away at the details, and don't nail them down until ready.
- Write things down. As a Chinese proverb says, the palest ink is better than the best memory.
- Attitudes on risk, individualism vs teamwork, stability vs freedom, and family vs work are affected by your cohort and your parents.
- Generation X form the greatest entrepreneurial generation in U.S. history. They're fiercely individualistic, and resist being labeled at all costs.
- The four generational archetypes are the prophet, with vision, values; the nomad, with liberty, survival, honor; the hero, with community, affluence; and the artist, with pluralism, expertise, due process.
- With Howe/Strauss generational archetypes, the hero begets the artist, who begets the prophet, who begets nomad, who begets the hero.
- The best way to keep from falling victim to your generation’s particular set of biases is to embrace diversity.
- Within the MBTI framework, sensing (S) vs intuition (N) is probably the largest source of miscommunication and misunderstanding. 75 percent of folks are sening.
- Work out a compromise. Do not try to change the other person’s temperament to match your own.
- Our primeval characteristics include immediate fight or flight, wanting everything now, being dominant, defending territory, crying foul, and considering anyone different evil.
- Attitudes, beliefs, behaviors, and emotions are all contagious.
- It's easy to write a short and snippy e-mail because it doesn't give the neocortex time to intervene, unlike writing a longhand letter.
- Lead with intuition, but follow up with provable, linear feedback. Your intuition may be wrong.
- Expectations color reality. So ask hard questions about a problem, measure all you can, get the opinion of others, and define its opposite to draw a more critical eye.
Chapter 6: Learn Deliberately
- Learning isn't done to you, it's something you do. "Education" comes from "educare," which literally means "led out." And knowledge alone, without experience, isn't effective.
- To develop competence and expertise, you need continuing goals, feedback to understand your progress, and a deliberate approach to the whole thing.
- An objective is something you do to get you closer to a goal. It should be specific, measurable, achievable, relevant, and time-boxed. Together, SMART objectives.
- By being deliberate about your learning, by allocating appropriate time, and by using that time wisely, you can be much more efficient in your learning.
- All knowledge investments have some value. Even if you never use a particular technology vocationally, it will impact the way you think and solve problems.
- Not all learning sessions will be equally productive, but by scheduling them regularly, you will win out in the long run.
- Visual learners need to see the material, auditory learners need to hear the material, and kinesthetic learners need to physically experience the material.
- Howard Gardner defined seven facets of intelligence: kinesthetic, linguistic, logical/mathematical, visual/spatial, musical, interpersonal, and intrapersonal.
- The team that studies together learns together, teaches each other, and learns more effectively.
- Written instructions are considered the least efficient because many parts of the brain and body you want to train or educate aren't the parts that process language.
- After surveying the work, forming questions, and then reading, recite the information by playing with it, exercising your R-mode. Finally, review it.
- Reading the same material over and over doesn't help you remember it. Instead, test yourself by trying to recall the material over and over.
- Redrawing a mind map from memory helps strengthen the connections and may expose additional insights in the process.
- For exploratory mind maps, use words as titles, draw icons to represent key ideas, and make important lines thick. Do it quickly, giving the R-mode unfettered access.
- For a collaborative mind map, write ideas on stick notes, cluster related notes together, and draw circles around each group and connect them with lines.
- Documenting makes you turn your attention inward, as you would when working with a mind map, promoting insight later in the project.
- Teaching others clarifies your own understanding of something and reveals many of your underlying assumptions.
Chapter 7: Gain Experience
- Non-goal-directed exploring, or playing with a problem, doesn't make it any easier, but it gets us closer to how we're wired to learn.
- Working with new material or solving a problem in a playful manner makes it more enjoyable and also easier to learn.
- When learning from similarities, clinging to them thinking may prevent us from fully embracing a new skill. And our notion of "similar" may be completely wrong.
- "I don't know" is a fine answer, but don't let it end there. And it's not important to get something right the first time; it's important to get it right the last time.
- Version control allows backtracking; unit testing measures progress; automation ensures repetition. Together, they give you the ability to experiment with little risk.
- Inner game stresses learning from your own experience. It's difficult to learn something by words; we learn something better by discovery, not instruction.
- When playing the inner game, just be aware. Don't try to get it right, but notice when it's wrong, and act to correct it.
- When debugging, be fully aware of how the system is behaving, and then decide what part is wrong before moving on to devise a solution.
- Not only does your creativity suffer with a deadline looming, but it suffers for two days after the deadline. So end a project iteration on a Friday.
- Once you create an environment where it's acceptable to fail, the pressure is off, and you can be attentive, comfortable, and observant. See unit testing and prototyping.
- Much of perception is based on prediction, which is based on context and past experience, so much that current, real-time input takes a backseat.
- You can imagine experiences and learn from as effectively as if you had lived them for real, because your brain has difficulty telling the difference.
- Intuition grows by having more patterns to draw on and apply, and a growing body of tacit knowledge of what to look for and when.
Chapter 8: Manage Focus
- Information is raw data in a given context, while knowledge imparts meaning to that information, from the application of time, attention, or skill.
- Much of meditation, yoga, and similar practices offer some relief from the idle chatter of your L-mode, to live in the moment, and to not divide your mental energy unnecessarily.
- With Vipassana meditation, explicitly focus on your breathing. Words can come, but just let them go, and return attention to your breath.
- With the segmented breath controlled breathing approach, on the inhale, fill the lower belly first, then the chest, and then finally up to the collar bones.
- Handing over work to the unconscious only works if you have some data to fill up on.
- Tools you use for mental support outside your brain become part of your operating mind. They help form your exocortex.
- Whether a wiki or a shoebox, once you have a place or page to put some type of thought, you'll get more thoughts of that type.
- Transcribing notes to the wiki or cleaning them up on the wiki helps get your head around the material.
- Multitasking can cost you 20 to 50 percent of your productivity, while after an interruption it make 20 minutes to pick up where you left off.
- GTD suggests scanning the input queue only once, processing each pile of work in order, and not keeping lists in your head.
- Set up times of the day when you aren't to be interrupted, and other times for collaboration, daily stand-up meetings, and other assorted contingencies.
- To control the flood of email, remember that you'll receive less email if you send less email, and that your reply speed sets the tempo for a conversation.
- To try and keep context, raise the physical cost of entry and exit to remind you of the mental cost.
- In the few seconds before an interruption takes hold, leave some breadcrumbs or cues that you can pick up on when you get back to resuming the task.
- You can instantly recognize productivity gains of 20 to 30 percent with a second monitor. Get one of the same size and brand to minimize distractions.
- Organize virtual desktops by task, such as communications, writing, coding, surfing, and music.
Chapter 9: Beyond Expertise
- To manage effective change, remember: Start with a plan, fear inaction and not error, give it a fair chance, believe that change is possible, and take small and achievable steps.
- The professional kiss of death for the expert is to act like one. Your own judgment and views, instead of supporting you, can imprison you.
- Leonardo Da Vinci said: "People look without seeing, hear without listening, eat without awareness of taste, touch without feeling, and talk without thinking."
Last modified 06 April 2022