Programming Problem Solving Model
"All models are wrong but some are useful." - George Box
- Reinterpret the Problem
- Design a Solution
- Code
- Test
- Debug
- Evaluate & Reflect
- Repeat & Improve
Programming Problem Solving Cheat Sheet
Phases and Roles
Based on Eric Roberts version.
Phase | Role |
---|---|
Problem | Lawyer |
Design | Architect |
Code | Engineer & Essayist |
Test | Vandal & Hacker |
Debug | Detective |
Evaluate & Reflect | Critic & Coach |
Repeat & Improve | Boss |
Reasoning
Model Life Cycle
Incremental (or Iterative) Development
Get something working and keep it working:
- Start small
Keep it working
Rapid cycles of Problem-Design-Code-Test-Debug phases
- Solving one sub-problem at a time
- Clean-up after solving one sub-problem (e.g., diagnostic print, extra comments, temporary variables)
Is the problem well-defined?
Planning Ahead (Insights) vs. Prototyping (Interactively)
The Model Can be Applied on Problems with various Magnitudes
Meta
- Metacognition
- Reflected Experience and Learning enable Pattern Matching from the Past
Copyright © 2020 Shlomi Hod.
All rights reserved.
All rights reserved.