In my geek hours, I've been reading Software Testing Foundations (Spillner, Linz, and Schaefer, 2nd Edition, 2007), the internationally recognized intro primerÂ on the subject.Â My conclusion:Â Software testers are spiritual masters.
I've been a programmer for over ten years, but only in the last few have I reached the satori of serious software testing. Lots of people learn to cobble together code, but few become enlightened to the truths of the software tester:
It is nearly impossible to test your own code. You might think that, since you're the person who wrote it in the first place, you would be the one most qualified to tell whether it's really working. But someone else will find flaws in your work exponentially faster than you will.
If it hasn't been tested, it doesn't work. Or, to put it another way, "Nothing works completely correctly the first time you write it." All programmers should chant this mantra as they work, especially when they are making seemingly trivial changes and are tempted to skip testing. Until the code compiles, until you step through in debug mode and see it doing exactly what it ought to be doing, and see the correct results, only then can you believe that you actually did any good.
Even if it works, it doesn't necessary work well or in all cases.Â Or, put another way, "The first way you write it is usually not the best way to write it." Robust design usually emerges from the fires of continuous challenge.
Nothing can be exhaustively tested. You cannot prove that software has no errors. You can only find errors and fix them, and play the odds that no significant issues will arise in the course of normal use. The same truth can be stated another way: "With sufficiently time and diverse conditions, all software will fail."
Testing works best when it is methodical, conscious, planned,Â done early, and done often.Â (As opposed to being done haphazardly, unconsciously, ad hoc, and at the last minute.) Testing is a discipline. It takes will, and courage, and persistence, and faith to conscienciously do it. If you don't do it, you will be continually blindsided by the unexpected.
So am I just a ISO2000-certified geek pushing a spiritual metaphor too far? No, actually I think all of these principles can be mapped back onto spiritual life and spiritual experience:
It is nearly impossible to know your character from the inside out. A total stranger can, in five minutes, discern in you flaws, rationalizations, egos, and illusions that you would never detect in decades of mediation or introspection. If you subject yourself to a process of "peer review," and allow your believes and character to be challenged by impartial observers, you will suss out your shortcomings much more rapidly.
Spiritual practice and belief must be validated through action. If you haven't tested your beliefs by real-world application, they will probably be shallow and relatively fragile. Your convictions (especially your convictions about yourself) need to be tested. This is what Nietzsche was getting at when he subtitled one of his books ("Twilight of the Idols"), "How to philosophize with a hammer" -- by conscienciously rapping on your most treasured beliefs, we find out what's real and what's hollow.
A life that "works" isn't necessarily a good or meaningfulÂ life. You might be holding a job, practicing a profession, raising a reasonably normal family, and in every discernable way have your act together . . . and still not have filled the hole in your soul. If you arrived at your current life unconsciously, following whatever was in front of you and "going with the flow," you're most likely not going to have the ideal life. As Richard Rose said: "You can talk all you want about 'going with the flow.' But I followed up a few flows in my time, and they all wound up in the same place: the sewer."
The truth can only be arrived at subtractively. You can't prove that something is true; only that it's false. Rose called spiritual life a "retreat from untruth" -- you keep consciously throwing out the BS until you are left with nothing by the true. Many spiritual traditions have similar language for the same process: apophatic mysticism, via negativa, "the way down", "dying before you die" . . . reject the false to find the true.
Spiritual testing is a discipline. Although spirituality is ultimately dealing with an indescribable, transcendent reality, the path to reality is describable: a conscious, deliberate discipline of self-inquiry. While nothing is guaranteed, you can be fairly certain that they more you do it, the better your life will turn out.