Balancing a Classic Software Duality
This balance can be hard for Westerners to grasp, but it helps us to learn balance. An odd example of Yin/Yang balance can be found in healthy programming, balanced with healthy testing.
The Yang of Programming
The Yin of Testing
Balanced Yang/Yin Programming
Healthy programming is lots and lots of passionate, creative Yang, with just the right amount of Yin observation and Testing. It is creative engineering and artistic passion balanced with a bit of skeptical, empirical Science. It is the black teardrop with the small white circle at its heart.
Balanced Yin/Yang Testing
Healthy testing embraces the calm, dispassionate, empirical, deeply-concentrating power of witnessing, observing, and noting the truth of reality, without preconception. It delights in defects not merely because it is fun to break things, but also because it is fun to find precise, repeatable, deterministic discoveries of any kind. A bug is just another kind of delightful new discovery that happens not to be desirable by the customer (in most cases!).
Balanced Yin testing begins with the open, empirical, unscripted extemporizing act of manual Exploratory Testing. This demands that ET skills have already been deeply somaticized by the tester, rather like the kata of programming, or like the “forms” of Tai Chi. Before you can deeply explore the behaviors of an application, you must already have internalized the skills of that exploration. I dare say that masterful ET has a meditative, contemplative aspect to it. You allow the application, as it truly is, to you draw you in, without agenda, without story.
And, healthy Yin testing is then balanced by the passionate Yang activity of test automation. Automating regression happy paths and unhappy paths is such a Yang activity. Another balancing Yang activity is courageously sharing results with programmers, and with the team. The best testers, Agile Testers, are powerfully creative in their own right as Yang programmers. But their Yang programming tends to serve their Yin goals of observation, gathering empirical results, witnesssing. Balanced Yin testing: the white teardrop of observation with the small black dot of Yang creation at its heart.
Balanced Testing/Programming: Conversations and Careers
Also consider becoming, for awhile, an Agile Tester. You think you understand every aspect of software testing, and how important all of the kinds of testing are? Rest more fully in the Yin of Agile Testing for a few days, weeks, iterations, or years, and think again. (Also, do not make up stories that this is somehow beneath you, or insufficiently challenging or stimulating, or not worthwhile, unless and until you have tried it in good faith, and found that to be so.)
Also consider becoming, for awhile, an Agile Programmer, or a Software Craftsman. You think you understand all of the craft and technical depth and pure creative striving required to test-drive all manner of production implementations through all manner of technology stacks, with least defects and cleanest code? Strive powerfully in the Yang of Agile Programming and Software Craftsmanship for a few days, weeks, iterations, or years, and think again. (Also, do not make up stories that you cannot do that, unless you have already tried in good faith, and failed.)
It’s Already Happening
Balance is possible between programming and testing, and it may help us to remember and honor our natural inclinations as Programmers and Testers as we work toward that balance. As programmers we are Creators, Engineers, Artists. As testers we are Observers, Skeptics, Research Scientists.
Let it Happen More On Your Team, In Your Career
And one avenue of balance, for the very brave and perhaps very advanced, is to push ourselves past our old internal stories about our inclinations and limitations. Specializing Generalists can shift their specialties occasionally. Creators: I dare you to master Observation. Obvservers: I dare you to master passionate Creation.
In the future, as teams become increasingly agile and healthy, I hope we will see a natural flow back and forth between the communities of those who self-identify as Testers, and those who self-identify as Programmers.
Because balance is better than good. Balance is at the heart of true excellence.