1) Still confused about heuristics? A heuristic is a *fallible way of solving a problem*. Not all heuristics are shortcuts; many are. Not all heuristics are mnemonics, but mnemonics are heuristics; fallible ways of solving a problem (in the case, the problem of forgetting stuff).
2) Heuristics are applied, not followed. Heuristics are not rules. And yet rules turn out to be heuristic, too! They are fallible ways of solving problems—in this case, problems of people doing something undesirable, inappropriate, transgressive. Rules can fail to solve problems.
3) A heuristic typically aids in discovery; indeed, it comes from the same Greek roots as "Eureka!" "Heuristic" as an adjective includes the connotation "conducive to learning"; "helpful for discovery".
4) People apply heuristics, always in some context. When someone says a computer is using heuristics, that's a bit of anthropomorphism. What's going is that the computer is following a program such that a programmer has used a fallible means of solving a problem.
5) Heuristics are always applied in some context, by some person(s). The success of a heuristic is conditioned by many things, but mostly by its appropriateness to the context, and by the judgement and skill of the person(s) applying the heuristic.
6) Part of the requisite judgement and skill involves deciding when and how to apply the heuristic, when to adapt or tune it, how to tell if it's working, and when to drop it. Of course, THOSE decisions are conditioned by heuristics too! It's heuristics all the way down!
7) Pretty much means of solving problems in software development and testing is a heuristic. If you disagree, can you tell me about an approach you have for problem solving that always works and never fails? That doesn't depend on judgement and skill? That works in every context?
8) Of course, all that can be generalized. Billy Vaughan Koen, in his book /Discussion of the Method/, (ambitiously!) claims that engineering is the universal problem-solving method. That's what we do as humans, he claims, using a broad notion of engineering: *we effect change*.
9) Koen says that the engineering method is "the strategy for causing the best change in a poorly understood situation within the available resources". In DotM, he patiently, carefully, and cautiously lays out what he means by each part of that definition.
10) For example, Koen very carefully details the slipperiness of the notion of "best", and points out that "best" always involves subjectivity, compromise, valuing some things over others, and so forth. (I'd say "best" is subject to the Relative Rule. developsense.com/blog/2010/09/d…)
11) "Although difficult to define," Koen says, "a heuristic has four definite signatures that make it easy to recognize.

i) it does not guarantee a solution.
ii) it may contradict other heuristics.
iii) it reduces the search time for solving a problem, and ...
12) iv) its acceptance depends on the immediate context instead of on an absolute standard."

Prior to that, Koen notes that "until philosophers decide amongst themselves how to define 'definition', I intend to use mine only to guide, discover, reveal—...only as a heuristic." (!)
13) And his definition: "A heuristic is anything that provides a plausible aid or direction in the solution of a problem but is in the final analysis unjustified, incapable of justification, and potentially fallible." His conclusion: ALL is heuristic—including that statement!
14) So when someone asks, "Do you use heuristics in testing?" your answer is "gosh golly, you betcha!" The real challenge, it seems to me, would to identify something in testing that is NOT a heuristic. Or in development. Engineering. Science. Any form of problem-solving.
15) "Aha!" you say. "What about ALGORITHMS?!" Per the Penguin Dictionary of Mathematics: "A mechanical procedure for solving a problem in a finite number of steps." "Algorithms," you say, "come with a guarantee of a correct solution. So they're not heuristics. Right?"
16) Well... algorithms guarantee a correct answer *within a given formal system*; within a context. The catch is that we *apply* algorithms to solve problems, and that application may be inappropriate, misplaced, have side effects. Fallible. Applying an algorithm: heuristic.
17) Koen cleverly hedges. Since the statement "all is heuristic" is itself a heuristic, it's fallible, context-dependent, unjustifiable, etc. He keeps his mind open, invites people to prove him wrong. I doubt that they will; their arguments will be heuristics too!
18) Other wonderful books on heuristics: /Gut Feelings/ (Gigerenzer, easy to read); /Simple Heuristics that Make Us Smart/ (also Gigerenzer, slightly harder); Heuristics and Biases: Judgement Under Uncertainty (Kahneman and Tversky); Thinking Fast and Slow (Kahneman);...
19) /How to Solve It/ (Polya; a book widely credited as recovering "heuristic" from obscurity); /An Introduction to General Systems Thinking/ (Weinberg); /Cognition in the Wild/ (Hutchins; may not mention the word "heuristics", but that's at the essence of what it's about).
20) Since heuristics are applied towards solving problems, here's a heuristic: consider what a problem might be. Here's another: try starting here developsense.com/blog/2012/04/p…

21) Then let me (and others, of course!) know where your study of heuristics is taking or has taken you; what books or other resources you've found helpful; what ideas you've had on the subject. What heuristics you've applied to understanding and explaining heuristics.

- fin -
Missing some Tweet in this thread?
You can try to force a refresh.

# Like this thread? Get email updates or save it to PDF!

###### Subscribe to Michael Bolton

Get real-time email alerts when new unrolls are available from this author!

###### This content may be removed anytime!

Twitter may remove this content at anytime, convert it as a PDF, save and print for later use!

# Try unrolling a thread yourself!

2) Go to a Twitter thread (series of Tweets by the same owner) and mention us with a keyword "unroll" `@threadreaderapp unroll`