测试人员则认为自己是最具创新精神的。如果一个人能够使Excel崩溃,你会怎样评价这样的天才?测试部副部长格兰特·乔治说道:“最成功的测试人员只是与开发人员和项目经理具有不同的思维。我们提出批评,至少我们对日常生活中看到的、接触到的和有联系的东西的品质都有自己的评价,我们的工作就是批评并使产品更完美。我们非常感谢这个行业和微软,通过我们对品质的热情来提高一个数百万人使用的产品的质量,是一件多么伟大的事情。”
持有这种看法的不仅仅是乔治一个人,这种看法可以被总结为:测试员有见地,而其他人没有。
这种劳动分工的不断变化加速了微软招聘工作的变化。没有多少大学毕业的人愿意成为项目经理或者测试员,也并非所有从事这项工作的人员都是计算机专业毕业生。在面试中可能不要求一个未来的项目经理编程,因此有的项目经理学的是英语专业。
那么怎么样确定一个“非程序员”是不是“比尔的克隆人”呢?一个方法就是通过智力题、猜谜题或者假设性的问题。对于未来的项目经理、测试员和大量的销售人员、文本作者以及其他被雇用的员工来说,这些具有挑战性的问题是测试才能的重要方式。
其中有许多经典的逻辑问题,还有一些面试问题的目的是为了给应聘者确定合适的岗位,有些在我们看来古怪的问题就属于这一类,例如,如果你能够搬走美国的一个州,会是哪一个?开汽车门时钥匙往哪边转?这些测试是看应聘者能不能做出决定并清楚明白地表述出来。
杰贝·布卢门撒尔喜欢让应聘项目经理的人员画房子。有时候应聘者会径直走到黑板前画一个四方块。
在布卢门撒尔看来,这可能是一种最为糟糕的做法。房子可以是任意形状的,但是你总不会在建房子前不去问一问建房子的钱是谁出的,要花多少钱,建多大面积,需要多长时间。那些不问这些问题而直接去画房子的应聘者往往就被淘汰掉了。
在这些问题中,算法是很重要的事情。在计算机程序中,算法是一种任何计算机程序必需的、精确的、有步骤的方法。在面试中,应聘人员要解决的是一个复杂的、开放性的的问题。在诸如此类的问题中,一个好的算法是应聘者应该首先从主考官那里得到的细节资料。
那些没有做到这一点的应聘者就面临着失败的境地。布卢门撒尔的同事乔尔·斯波斯基曾经打断一个画方块的人(他正画到地板的最后一笔)说:“实际上你忘记了问这样一个问题——这个房子是为谁建的?如果说是为一只16米高的长颈鹿建造的呢?”
不会做事情的聪明人
斯波斯基的一个小小贡献是发明了微软的面试问题:“你怎样做巧克力豆?”斯波斯基现在是纽约一家软件公司的首席执行官,斯波斯基对微软的招聘方式既是一个深思熟虑的支持者,也是一个批评者。