Skip to content

Instantly share code, notes, and snippets.

@tlhakhan
Created November 16, 2025 17:07
Show Gist options
  • Select an option

  • Save tlhakhan/d708bc56b0ad1d678ec29b72cc3474c0 to your computer and use it in GitHub Desktop.

Select an option

Save tlhakhan/d708bc56b0ad1d678ec29b72cc3474c0 to your computer and use it in GitHub Desktop.

Absolutely — great job finishing Problem Solving (2nd Edition) by S. Ian Robertson. It’s a dense book but one of the most practical introductions to how humans actually solve problems, why we sometimes fail, and how to deliberately improve.

Below is a structured refresher plus concrete, actionable takeaways tuned for your personal learning style (you tend to like systems, breakdowns, templates, right-brain/left-brain alternation, and deep skill-building).


🧠 High-Level Summary of the Book

Robertson’s core premise:

Problem solving is a skill built from understanding how minds work — not just logic, but perception, memory, heuristics, biases, creativity, and metacognition.

He blends cognitive psychology with practical strategies and research findings. The big themes:

1. Perception and Representation Matter More Than Intelligence

How you frame or represent a problem influences how solvable it becomes. Two people with equal intelligence produce very different results depending on how they structure the problem.

2. Memory is a Double-Edged Sword

Memory stores patterns, but the mind also “reconstructs” rather than retrieves — which leads to traps, assumptions, and biases.

3. Heuristics Work — Until They Don’t

We rely on shortcuts (hill climbing, working backward, means-end analysis). These are incredibly useful but also limit creativity.

4. Creativity is a Trainable, Not Magical, Skill

Insight problems (“aha!” moments) often require stepping outside habitual frames. Thinking styles can be intentionally shifted.

5. Expertise Comes From Schema Building

Experts aren't faster thinkers — they have richer, more organized mental representations (schemas). This drastically improves accuracy and speed.

6. Metacognition (Thinking About Thinking) Is the Real Superpower

Monitoring your own strategies, failures, and progress teaches your brain to correct mistakes automatically.


🔍 Detailed Refresher: Key Concepts & Why They Matter

1. Problem Representation

The way you encode a problem determines whether a solution is possible.

  • Good representation: clarifies constraints, goals, operators, and subgoals.
  • Bad representation: traps you in unproductive assumptions (“functional fixedness”).

Examples from the book:

  • The candle problem (functional fixedness).
  • Nine-dot problem (assumption that the line must remain inside an imaginary square).

Relevance to you: You do lots of system design, programming, and homelab architecture — these are representation-heavy domains. Shifting interpretations leads to dramatically better solutions.


2. Heuristics

Three major heuristics Robertson emphasizes:

  • Hill climbing: Always take steps that appear to move closer to the goal. Good for optimization; bad for problems needing backward steps.

  • Means-end analysis: Identify gaps between current state and goal, then reduce each gap. Excellent in engineering and coding.

  • Working backwards: Start from the goal state and reverse-engineer. Useful for debugging and planning infrastructure or complex refactors.


3. Insight and Creativity

Insight problems often require:

  • Breaking assumptions
  • Re-representing the problem
  • Changing the “search space”

Robertson’s studies show that insight often appears when the brain stops fixating and starts associating.

Practical implication: You need alternating focus mode and diffuse mode — something you already do with your “creative right-brain breaks.” Keep doing that.


4. Memory Limitations

Your brain:

  • reconstructs memory
  • fills in gaps
  • is vulnerable to priming
  • requires chunking for complexity

This explains why expertise is largely organization of knowledge — not just adding more of it.


5. Transfer of Learning

One of the book’s big research-backed findings:

You don't transfer skills unless the structure of the new problem resembles previous practice.

This means:

  • generalized problem-solving “power” is rare
  • domain-specific practice is essential (coding problems → better at coding; math problems → better at math; etc.)

6. Metacognitive Monitoring

The best solvers:

  • track errors
  • adjust strategies
  • reflect on what worked and what didn’t
  • consciously select heuristics

You already lean toward structured systems — metacognitive routines amplify that.


🧩 Practical Takeaways for Your Personal Learning

A refined and expanded guide you can use daily.

Below are actionable habits and strategies organized into clear sections. You can treat this as a personal “problem solving operating system.”


✔️ 1. Start Every Problem with a Clear Representation

Your brain defaults to assumptions — Robertson shows this is the #1 cause of failure. So train yourself to deliberately build a problem model before doing anything else.

Representation Template (Use this every time)

  1. Goal state: What exactly must be achieved?

  2. Current state: What do I know? What is observed?

  3. Operators: What actions/techniques/tools are available?

  4. Constraints: Which are real? Which are assumptions?

  5. Unknowns: What variables or data do I not have yet?

  6. Alternative forms: Can I restate this visually? Mathematically? Stepwise?

  7. Test for hidden assumptions:

    • “Am I assuming something is fixed when it isn’t?”
    • “What if I remove this rule?”

Why this matters for you

Homelab problems, Kubernetes config, network issues, debugging code, and even math problems all benefit massively from tightening the representation before you start.


✔️ 2. Rotate Through Problem-Solving Strategies

Different problems require different heuristics; using the same one repeatedly leads to fixation.

Strategy Rotation List

Keep this nearby when working:

  • Means-end analysis: Identify gaps and systematically reduce them.
  • Working backward: Start from the desired end state. Great for debugging.
  • Generate-and-test: Brainstorm multiple paths; test small steps quickly.
  • Constraint relaxation: What if X isn’t actually required?
  • Analogy/transfer: What similar problem have I solved before?
  • Diagram/visualization: Turn abstract problems into shapes or diagrams.
  • Divide-and-conquer: Split into smaller subproblems.
  • Counterfactual: “What would I do if I had to solve this in 10 minutes?”
  • Deliberate brute force: Useful for small combinatorial problems.

Why this matters for you

Your brain is analytical, but tends to use means-end analysis and direct logic. Adding variation prevents rigid thinking and improves creativity.


✔️ 3. Build Expertise Through Chunking

Expertise = building reusable cognitive “units” called chunks or schemas.

How to chunk effectively

  • Identify recurring patterns in your work.
  • Document the pattern, when it applies, pitfalls, and examples.
  • Practice variations of the same pattern to strengthen it.
  • Use small “drills” for the most important patterns.

Examples of chunking in your domains

  • Network schemas: DHCP, DNS, mDNS, interfaces, Netplan patterns.
  • Kubernetes schemas: bootstrap steps, PV/PVC patterns, CNI configs.
  • Math schemas: factoring, substitution, limits, algebraic transformations.
  • Programming schemas: OOP patterns, FP combinators, container setup patterns.

When chunks accumulate, you solve new problems faster because you recognize the structure instantly, rather than reasoning from scratch.


✔️ 4. Alternate Between Focus Mode and Insight Mode

Insight emerges when the brain breaks fixation.

When stuck for more than 8–12 minutes:

Trigger “Diffuse Mode”:

  • take a short walk
  • switch to a different mental task (coding → piano, math → drawing)
  • sketch the problem abstractly
  • restate the problem with different constraints
  • revisit the problem after a short break

Additional insight triggers

  • Ask: “How would a complete beginner view this?”
  • Imagine explaining the problem to a child.
  • Reverse the problem (“What problem would have this as a solution?”).
  • Change modality: text → diagram → equation → pseudocode.

Insight = jumping to a more productive representation.


✔️ 5. Apply Memory Principles to Strengthen Learning

🧱 Chunking

Group items into meaningful clusters. Example: When studying math, group transformations (e.g., substitution, factoring, completing the square).

🔗 Elaborative encoding

Link new knowledge to:

  • your homelab
  • a story
  • an example
  • a personal experience
  • another concept you know

Elaboration increases retention dramatically.

🧠 Dual coding

Combine verbal + visual representations. Use diagrams, timelines, boxes-and-arrows, etc.

📆 Spaced repetition

Use the optimal sequence:

Day 1 → Day 3 → Day 7 → Day 14 → Day 30

Works beautifully for:

  • math skills
  • programming concepts
  • language syntax
  • system architecture patterns
  • troubleshooting steps

✔️ 6. Use Structural Mapping (Cross-Domain Transfer)

Transfer only happens when two problems share the same underlying structure. To grow your “mental library,” explicitly search for structural similarity.

Questions for transfer

  • “What is this like in another domain?”
  • “What underlying pattern does this resemble?”
  • “Is this a search problem? Optimization? Constraint satisfaction?”
  • “Which past solution matches this structure?”

Examples of structural mapping for you

  • Kubernetes node join flow ↔ state machine patterns
  • mDNS resolution failures ↔ DNS caching problems ↔ memory interference
  • Math substitution ↔ refactoring code
  • Terraform module design ↔ object-oriented encapsulation principles
  • Network troubleshooting ↔ graph search

Making these connections builds general problem-solving power.


✔️ 7. Keep a Problem-Solving Journal

This is one of the highest ROI habits.

What to log

  • The problem
  • Your original representation
  • Strategies you tried
  • Where you got stuck
  • What finally worked
  • What chunk/schema it relates to
  • What you learned about your thinking

Why it works

  • improves metacognition
  • exposes recurring assumptions
  • helps you identify your strongest heuristics
  • trains your brain to adapt quicker next time

Over months, this becomes a personal “book of problem-solving patterns.”


✔️ 8. Practice Constraint Surfacing

Constraint surfacing is a simple exercise that uncovers hidden assumptions.

How to do it

Make a list of all constraints you think the problem has. Label each:

  • Real — imposed by physical or external reality
  • Assumed — inferred but unverified
  • Negotiable — can be changed with moderate effort
  • Arbitrary — exists only because you're used to it
  • Unnecessary — remove and test

Why it works

Most breakthrough solutions come from realizing:

a constraint wasn’t actually real.

This is crucial in systems design, debugging, and mathematics.


✔️ 9. Strengthen Creativity with Insight-Heavy Problems

To become a more flexible thinker, incorporate:

  • math puzzles requiring creative transformations
  • logic or lateral-thinking puzzles
  • spatial puzzles
  • short creative coding exercises (animations, fractals, simulations)
  • drawing or visual tasks that reshape perception

Creativity is not separate from analytical skill — it helps you escape mental ruts.


✔️ 10. Build a Learning Cycle Around Real Projects

Robertson emphasizes that abstract practice rarely transfers. Your strength: you always have real systems to improve.

Use project-based learning:

Examples:

  • learning OOP → apply to a real CLI or Ansible module
  • learning math → apply to procedural graphics or physics simulation
  • learning networking theory → test it in your homelab
  • learning Linux internals → apply in Kubernetes troubleshooting

Real problems provide feedback loops that build deep expertise.


🧠 11. Adopt a “Problem-Solving Loop” (Daily Habit)

  1. Represent the problem (5 minutes)
  2. Pick a strategy (1–2 minutes)
  3. Try for 8–12 minutes
  4. If stuck → shift mode
  5. Solve or break it into smaller parts
  6. Reflect + log
  7. Add to your schemas/chunks
  8. Apply to a different domain

Doing this consistently creates exponential growth in your skill.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment