Design for Human Problem-Solving

So far, we have explored several common test code smells. Often, these smells seem obvious in retrospect. So, why not choose the right abstractions from the beginning? That would be great, wouldn’t it? Unfortunately, you’re not likely to get there. To a large degree, programming is problem-solving. As the following figure illustrates, human problem-solving requires a certain degree of experimentation.

images/hidden_bottlnecks/problem-solving.png

The preceding figure presents a model from educational psychology. (See Understanding and solving word arithmetic problems [KG85].) We programmers face the same challenges as educators: we have to communicate knowledge ...

Get Your Code as a Crime Scene, Second Edition, 2nd Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.