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