Philosophers of Testing
Do you know what a philosopher is? I think a philosopher is
someone who develops philosophy, as opposed to someone who accepts
philosophy strictly ready-made from a trusted authority. By philosophy I
mean an account of what the world is (Ontology) or how I can know about
the world (Epistemology) or what matters about the world (Axiology).
I’m a philosopher. Yes, I’m also other things. I call myself a tester
on my immigration paperwork. But a good tester is just a particular
kind of philosopher, it seems to me. If you read any of my stuff on a
regular basis, you are probably also a philosopher. Otherwise, how could
you stand it?
I practice philosophy because I want to understand my status and my
worth in this cosmos, and I don’t trust the obvious or traditional
answers. I practice testing because my clients want to understand the
status and worth of their products, and they don’t trust the obvious or
traditional answers. See the connection?
In these pursuits, it is easy to be fooled. Self-deception is
particularly common. Rene Descartes once worried that a mischievous
demon might be systematically fooling him by clouding and manipulating
his senses. Whereas, I once reported to a programmer that his program
had frozen my system, whereupon the programmer pointed out that I was
looking at a screenshot, not a live program. See the connection?
Philosophy doesn’t find bugs for me, but it improves my ability to
search for them. I have more patience for the search because philosophy
has taught me tolerance for ambiguity, an appreciation for complexity,
and a mistrust of appearances. Jerry Weinberg once told me “A tester is
someone who knows that things can be different.”
Philosophy doesn’t read specifications, but to study philosophy
involves a lot of reading and criticizing of obscure texts. I have to
work through the logic of arguments and notice fallacies whether I’m
finding the flaws in one of Ayn Rand’s rants against skepticism, or
puzzling through a state model for a timing application.
Philosophy doesn’t evaluate or report my bugs, but it does make my
evaluations and reports better. This is because a big part of philosophy
is rhetoric: the art of persuasion, including real-time reasoning under
pressure, for an audience.
I do hope you see the connection. Few people do, but those are pretty
much the few people I find talented and fascinating in this industry.
So, I guess it works out.
Everyone is a Philosopher in Context-Driven Testing
As I periodically remind my readers and clients, I am a context-driven
tester. That requires me to examine the relationship between my
practices and the context in which I should use those practices. I don’t
know how anyone could be truly context-driven without also being
comfortable with philosophy.
Today, while arguing on the software-testing forum at Yahoogroups, I
thought of making a list of the philosophers who strike me as the patron
thinkers of the context-driven way. I invite you to suggest your own
favorites. Here’s my list:
- Protagoras, the original humanist. Protagoras
understood that arguments can be constructed for any purpose, and that
only humans construct them. It was Protagoras who said “man is the
measure of all things.”
- Socrates, the original tester. He describes himself
in Theaetetus like so: “The triumph of my art is in thoroughly
examining whether the thought which the mind of the young man brings
forth is a false idol or a noble and true birth. And like the mid-wives,
I am barren, and the reproach which is often made against me, that I
ask questions of others and have not the wit to answer them myself, is
very just - the reason is, that the god compels me to be a midwife, but
does not allow me to bring forth. And therefore I am not myself at all
wise, nor have I anything to show which is the invention or birth of my
own soul, but those who converse with me profit.”
- Pyrrho, the original skeptic. A Pyrrhonian skeptic
is a person who believes that, since we cannot be certain of anything,
inquiry must continue in all things and all respects.
- Miyamoto Musashi, the context-driven warrior. In
his Book of Five Rings, Musashi complains about other fighting schools
(which he also calls schools) just as I do. He complains about
attachments to particular weapons and strategies “In my doctrine,” he
says, “I dislike preconceived, narrow spirit.” Musashi advises “You
should not have a favourite weapon. To become over-familiar with one
weapon is as much a fault as not knowing it sufficiently well. You
should not copy others, but use weapons which you can handle properly.”
- David Hume, the great skeptic. He struck the first
great blows against conventional reasoning and unexamined assumptions of
the then-brand-new idea of modern science.
- C.S. Peirce, the pragmatist. Peirce is one of the
founders of semiotics, which is the study of signs, symbols, signals
(the testing of user interfaces benefits from that study). He questioned
scientific method and coined the term “abductive inference” to describe
reasoning to the best explanation for the circumstances.
- Karl Popper, the fallibilist. Popper finished a lot
of what Hume started, demonstrating a critical method for the
advancement of knowledge that embraced fallibility, criticism, and
problem-solving as its pillars.
- George Polya, the modern father of heuristics.
Polya wrote extensively about plausible reasoning processes for solving
mathematical and engineering problems. Polya influenced computer science
and also another philosopher of science, Imre Lakatos, who is famous
for showing how scientific theories and terminology evolves through an
often messy dialectical and heuristic process.
- Thomas Kuhn, the father of paradigms. Kuhn argued that social factors often outweigh rational factors in guiding the development of ideas.
- Paul Feyerabend, the philosophical iconoclast. He
wrote Against Method, and its sequel Science in a Free Society. The
first sentence of Against Method is (attempting to quote from memory)
“Anarchy, while perhaps not a good political philosophy, is nonetheless
excellent medicine for Science.” Feyerabend was arguing against “best
practices” in Science. I read Feyerabend when I was 17. His zeal for
questioning things that most thinkers think should not be questioned has
deeply influenced my career.
- Joseph Campbell, the syncretist. Campbell applied
general systems thinking to the religions and myths of the world,
drawing out commonalities and differences. Campbell’s book The Hero with
A Thousand Faces helped me begin to understand how to learn from
cultures that I do not belong to.
- Richard Feynman, the practical iconoclast. Feynman’s life and work embodies the restless curiosity of a great tester.
- Virginia Satir, the mother of family therapy.
Virginia Satir’s idea of treating a family as a system strongly
influenced Jerry Weinberg, who applied and expanded her ideas into a
comprehensive approach to technical problem-solving.
- Herbert Simon, the “good enough” guy. Winner of the
Nobel Prize in Economics for his work on bounded rationality and
heuristic reasoning in organizations. His book, The Sciences of the
Artificial, is the foundation for a lot of my ideas on heuristic process
improvement.
- Richard Bach, the individualist. Richard Bach wrote
Jonathan Livingston Seagull, a novel about someone trying to do
something to perfection, and who formed his own community to pursue that
dream. Richard Bach is my father, and I was raised on his philosophy
that each individual must “find his or her true family” instead of going
along with the crowd just because it pleases the crowd.
Richard was influenced by Ayn Rand, but in general he has little
regard for the ideas of other philosophers. He believes our happiness
requires that we each be our own philosopher.
That’s how I became a philosopher: My father believes that I must think for myself, and I always agree with my father.