Problem solving analyzes a defined difficulty and develops, evaluates, and applies a response. In programming, it matters most when familiar approaches stall: a web application under heavy request load may prompt candidates such as message queuing, load balancing, caching, or coroutines. Generating such alternatives can break the circle of repeatedly trying the same move. section 1.2
A technique becomes creative when it encourages creative action and is judged creative by you and your peers. That leaves room for skepticism: asking “Why?” five times may be useful without feeling especially inventive. Treat techniques as adaptable prompts, not a fixed cookbook. section 8.1
Build a flexible problem-solving practice by:
- Switching tools and zooming out to view a complex problem from another perspective. section 8.5
- Learning from other disciplines and adapting their techniques rather than copying them wholesale. section 8.1
- Trying ideas from another programming language, then back-porting the useful insight when appropriate. section 8.4.2
- Stepping away when stuck, protecting attention, and returning with a refreshed mind. section 7.6
When the problem is not yet visible
Problem solving presumes a problem has been found and defined. When that is not true, problem finding comes first: observe, take notes, and question the assumed task. Darwin’s voyage began as coastal charting, while later observations helped seed a different question about natural selection and the origin of species. section 1.2
Use the mind map to place problem-solving methods among the interconnected creativity themes that support a broader programming practice. section 1.4


