Thinking About Problem Solving

published on

People often think of solutions as band-aids/plasters. Something one adds to a system that solves a problem (I'm bleeding -> Add Plaster -> I'm not bleeding). The thing is, this doesn't really work.

Even in the plaster case, adding a plaster usually doesn't stop you from bleeding. It just stops the blood from going everywhere by soaking the blood up.

Additive solutions (fixes that add code/matter/logic) are dangerous. They show a core misunderstanding of the problem.

We often think of bugs as "the system producing the wrong value". This isn't really very helpful. The system is producing the exact value it was instructed to produce, the problem is that the system was incorrectly understood and specified (by the programmer).

This issue disappears when we reframe problems and solutions.
Problems are invalid/incorrect outputs of a system.
Solutions are lacks of problems... Not corrections of problems.

A plaster is not a solution to a cut. Having fixed skin (sometimes takes days/weeks) is the solution.

When you next go to fix a system, make sure you're understanding the problem, and re-defining the system, not just correcting an invalid output.