Skip to content

Problem-Solving

A teachable, repeatable process for moving from "I don't know how to do this" to a working solution — modeled on Pólya's four phases and adapted for engineering's tightest feedback loop: the debugger.

This section walks the full arc of solving a problem: understanding what's actually being asked, devising a plan, carrying it out, and reflecting once it works. It then treats debugging as the same loop run at high frequency, and ends with concrete moves for when you're genuinely stuck.

Topics

# Topic What you'll learn
01 Understanding the Problem Restating in your own words, separating knowns/unknowns/constraints, spotting the real ask behind the stated one, defining "done"
02 Devising a Plan Working backwards, solving a simpler subproblem, analogy to known solutions, choosing a strategy before touching code
03 Carrying Out the Plan Executing in small verifiable steps, checking each move, knowing when to abandon a plan vs push through
04 Looking Back and Reflecting Verifying the result, extracting reusable insight, generalizing the method, building a personal pattern library
05 Debugging as Problem-Solving Hypothesis-driven debugging, bisection, reproducing reliably, reading the evidence instead of guessing
06 Techniques When You Are Stuck Rubber-ducking, changing representation, taking a break, asking for help well, attacking from a different angle

How to use this section

Each topic has five depth levels — junior → middle → senior → professional — plus an interview Q&A bank and hands-on tasks. Start at your level and climb. The first four topics form one continuous loop (Pólya's phases); read them in order before dipping into debugging and unstuck tactics as needed.


Part of the Engineering Thinking roadmap. To frame problems before you solve them, back up to Computational Thinking; to reason about the systems your solutions live in, go to Systems Thinking.