liveBook · Manning

Problem solving

As explained in The Creative Programmer

Problem solving is the process of analyzing a problem and developing, evaluating, and applying a solution.

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

Figure 1.3 The Creative Programmer mind map that ties together all seven chapters of this book.
CH01_F03_Groeneveld

Use the mind map to place problem-solving methods among the interconnected creativity themes that support a broader programming practice. section 1.4

How The Creative Programmer covers it

How deep it goes
Defines problem solving and offers toolbox habits, while deferring a complete catalog of techniques.
Examples
Uses request-handling options, Darwin’s observations, and cross-language thought experiments to prompt alternative solutions.
What it assumes
Assumes no particular programming language and presents methods as transferable beyond programming.
What you can do after
Apply it via a flexible toolbox: change perspective, test alternative tools, and adapt ideas from elsewhere.
How it connects
Connects problem solving with creativity, problem finding, attention, programming languages, and code maintainability.

Also explained in

Compare how 3 books explain problem solving →

Related concepts

This explainer was generated by Manning's knowledge graph from the text of The Creative Programmer. The section links point to the parts of the book it draws on.