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.