01-engineering-foundations

Problem Solving

01-engineering-foundations/problem-solving

Problem Solving

Overview

Problem solving is the skill of turning ambiguity into a clear, testable next step.


Why It Matters

The fastest engineers are usually the ones who can define the problem well before they code.


Core Concepts

  • Separate symptoms from causes.
  • Reduce the problem size.
  • Use the stack trace, logs, or UI state as evidence.

Mental Models

Work from observable facts outward. If you can reproduce it, you can shrink it.


Best Practices

  • Reproduce the issue.
  • Isolate the smallest failing case.
  • Change one thing at a time.

Common Mistakes

  • Guessing from intuition alone.
  • Fixing the symptom in one caller only.
  • Changing too many variables at once.

Trade-offs

More investigation takes time, but it usually saves more time than a premature fix.


Decision Framework

flowchart TD
  A[Problem appears] --> B[Reproduce]
  B --> C[Isolate]
  C --> D[Hypothesize]
  D --> E[Test smallest change]
  E --> F[Fix root cause]

Examples

  • A 200 response with a broken UI usually points to state, mapping, or rendering.
  • A recurring bug should be fixed in the shared path, not just the reported screen.

Checklists

  • Can I reproduce the issue reliably?
  • Do I know where in the stack it fails?
  • Is the fix addressing the root cause?

Senior Engineer Notes

Senior engineers are calm under ambiguity because they know how to reduce it. Problem solving is mostly disciplined narrowing.


Further Reading

Use search, the sidebar, or the page links to keep moving.