我们会发现这样一个有悖常理的现象:优秀的测试员都是即懒又笨的。
因为懒,他才会写出各种各样的工具来替自己干活。因为懒,他才会想办法避免去写无聊重复的代码。因此避免了代码的冗余,消减了维护的成本,使重构变得容易。最终,这些由于懒惰作用开发出的工具和最佳编程实践方法大大提升了产品的质量。
懒惰的测试员也因此变成了优秀的测试员。当然,这只是事情的一部分;从一个懒惰的测试员变成一个优秀的测试员,他/她会在学习如何能够永远保持懒惰时表现出惊人的不懒惰——也就是,什么样的软件工具能让自己干活更轻松,什么方法能避免繁冗,如何能让工作变得更容易维护和重构。
优秀的测试员都是傻的。为什么?因为如果他很聪明,或他知道自己很聪明,他就会:
A)停止学习
B)对自己的工作不再高标准、高要求
第一点将会导致他不再努力去发现新的技术,让自己工作得更快捷。第二点将导致他的代码变得难以 debug,难以重构。在测试员和编译器无休止的战争中,测试员最好一开始就投降并承认是自己的错,而不是责怪编译器的错(除非是关于字符编码问题,有些编译器确实有问题)。
但是,还有一个优秀的测试员必须“笨”的更重要的理由。为了寻找到更好的问题解决方案,他必须保持一种谦虚的心态,他必须跳出模式想问题。某种程度上,这会让他们回到小孩的思维模式;因从未经历“no”的打击而极具创造力。
相反的思维模式就不具有创见性,会认为对现状了如指掌,会接受现状。可是又有谁知道多少你认为的不可能是真正的不可能?知道的越少你就会越激进。你开发的工具越好,你的产品就会因为它们变得质量更高。