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.