We testers are into tools these days. It seems that if you aren’t flashing some shiny new tool around to your testing buddies, they start to suspect you’re not up to snuff. But the best tools aren’t some fancy plug-in that’s all the rage on Twitter; the most useful implements at your disposal for software testing are learning tools.
The seven liberal arts have been revered as learning tools since the time of the ancient Greeks. They are traditionally divided into two groups: the trivium, which includes grammar, logic, and rhetoric; and the quadrivium, which includes arithmetic, geometry, astronomy, and music. As Dorothy L. Sayers, author of The Lost Tools of Learning, puts it, “The whole of the trivium was, in fact, intended to teach the pupil the proper use of the tools of learning, before he began to apply them to ‘subjects.’” If the trivium are about the proper use of the tools of learning, the quadrivium are about the practice in using these tools and provide a transition to more advanced studies in the classics.
So, why am I talking about such scholarly things in an article where I’m supposed to be reflecting on my experience in software testing? Because it was during my years studying the liberal arts and classics that I began—without even realizing it—to think like a tester.
Learning to Reason before Learning to Test
After doing a year studying computer engineering at Washington State University, I decided to pursue a liberal arts degree at Thomas Aquinas College. My motivation was mostly out of a recognition that there was more to do with my mind than math, science, and computer programming. About ten years later, not really finding much in the way of gainful employment, I resumed taking programming classes because I had always been good at it, and, if nothing else, it seemed to be paying a livable wage.
Eventually, I ended up in software testing. Of course, programming was a part of my job, so having learned how to do this came in very handy. On many occasions I’ve called on my programming skills to solve problems related to the test effort in the form of tools and ad hoc scripts, so I don’t discount the value of my programming classes in the slightest. Nevertheless, I realize now that throughout my time as a software tester, my liberal arts degree had far more of an impact on my abilities.
One example involves two areas of study: Latin grammar and philosophy, particularly Aristotle’s works on formal logic. Both helped me come to know the concept of equivocation, or using ambiguous language so that it’s open to different meanings.
It’s important to be aware of equivocation when dealing with technical and complex subjects. For instance, I’ve been following the debate about testing versus checking among the context-driven testing community, which primarily centers around the concern that test automation could replace manual testing. To me, the chief problem in the debate is that when we call mere checking testing, we are equivocating on testing. Imprecise language muddies the meaning and makes the debate difficult. It turns people against one another or, worse, makes people become frustrated, tire of the discussion, and eventually lose interest in it, a result I consider tragic.
Astronomy, another liberal art, is another good example of how an area of classical studies influenced my testing. In college we read the Almagest, written by Ptolemy, an ancient Grecian astronomer. This study walks the student through the process of discovery of how the heavens rotate. First, you notice that all the stars move and, furthermore, that they are rotating in common around a central point (as far as appearances go, anyway). These bodies are classically referred to as the “fixed stars.” Next you realize that a few of them move differently than the rest, namely, the planets, moons, and sun. You notice further that planetary motions aren’t necessarily regular like those of the fixed stars—some actually move backward on their paths for a while. This is a great model for how we come to distinguish small systems from larger ones. When tackling complex situations, I find myself instinctually falling back on this pattern of thought: looking for the larger system first, then proceeding to decipher the smaller ones.
The project I am working on now illustrates this mental process at work. It involves several integrated systems, including optical character recognition (OCR), a learning system that involves AI, and a data entry system. When I first started, I was gripped with terror, saying to myself what I always say when I start a new project: “I will never understand this!” But it is at just such a juncture that I find myself falling back on the pattern of thinking first set up when I studied astronomy. I gradually came to see each system individually distinguished from the whole and separate from the others, just as I had with the planets and their motions amidst the fixed stars. As this understanding became clearer, I could see how OCR and data entry were independently interacting with the same field of the data entry screen, and how the AI learning system was supplying information at some times and the OCR was at other times, and why.
Continuing Your Education
To sum up, I’m not saying that you have to study a liberals arts program to practice these arts and disciplines. I am simply making the case that it is very edifying for one to do so, even in small measures, in whatever situations can be afforded. Seek out and form groups of people to discuss ideas with. Book clubs are a great opportunity if you are the sort who needs some structure. Don’t just go hang out with the technical folk; find people in other fields as well. You will be surprised how much your horizons will expand.
The main thing is to stay engaged in thinking, seeking out whatever or whoever helps you do that. You will find that it not only makes you a better software tester, but a better person as well.