摇⑸痰晔刍踉薄D生产人员都是外包的员工。他们不会被要求回答这样的问题,例如“每天钟表的指针重叠多少次”,当然他们也没有员工股权。
微软的招聘工作十分谨慎,盖茨本身就是这样。盖茨想要确保每一个被雇用的员工都能够胜任他将要从事的工作。程序人员在面试时要写程序,他们还需要通过解决智力题从其他方面来证明自己。
第9节,
这种面试也曾经像肖克利的智商测试一样让人难以接受。许多应聘者感到(确实感到)写程序和被问到的智力题让人觉得有失身份。正如一场比赛的观众所知道的那样,只要在他面前晃动足够多的钱,有很多人愿意做一些自我感觉不好的事情。微软的应聘者愿意参加这种“惩罚”式的面试,是因为他们知道有很多微软员工不到中年就成了百万富翁。由于微软的影响,面试中编写程序和解决智力题已经成为软件行业的常见现象。
从微软的观点来说,智力题能够对应聘者的竞争能力和智力做出测试。商场和足球场一样,一道逻辑题就能够分出胜负。你给出答案,或者你给不出答案。就像教练告诉你说:获胜比能力更重要。你必须要“保持饥饿”,获胜最为重要。
人们在解决智力题的过程中往往有文不对题甚至是愚蠢的感觉,智力题的作用就是向你提出挑战。对有的人来说,他们很乐意接受这种挑战。就像爬山运动员,他们梦想登顶,就是因为喜欢面对山峰本身的挑战。一个好的智力题解决者不仅有着解决难题所需要的智慧,更应该主动面对智力题带来的任何挑战。
当软件变得日益庞大,单个的人已经很难只靠自己的力量完成整个软件的制作。MS…DOS1。0版本的绝大部分的工作——程序码、编译、找漏洞等,都是由蒂姆佩特森完成的。随着软件产品变得越来越复杂,就有必要对两个甚至更多的程序开发员进行分工。这种分工说起来容易做起来难。把不同的人写的大块程序合并起来并不是一件容易的事情,除非这些人在写程序的每一步都能够牢记这一点。因此必须在程序开发人员之间建立起一种有效的沟通,来保证他们都能够按照相同的“正确”方法来工作。问题是程序开发员可不是一群“随意”或者“善于”沟通的人,相反,这些人往往是喜欢在深夜单独工作的“夜猫子”。这就产生了一个大问题。
查尔斯西蒙尼是解决这个问题的人之一。西蒙尼是一位知名计算机科学家,但他选择了去对理论持有怀疑态度的商界工作。在施乐公司帕洛阿尔托研究中心,西蒙尼写出了第一个“所见即所得”的文字处理软件。但施乐公司根本不热衷于把公司实验室研制的窗口和鼠标界面推向市场,西蒙尼对此非常恼火。有一次到西雅图出差时,他在没有预约的情况下顺道拜访了微软公司。西蒙尼接受的面试相对比较容易,一位经理(史蒂夫鲍尔默)看了西蒙尼的简历后,认为比尔应当接见这个人,但是比尔当时正在开会。当比尔开完会后西蒙尼已经不得不去机场乘飞机回家了,盖茨就陪他一起去了机场。他们的个性碰撞出了火花,西蒙尼很快接受了去微软工作的邀请。
第10节,
西蒙尼认为可以通过设立一个“主程序员”的新职位,来解决多个程序员之间的合作和沟通问题,这同中世纪手工艺人的做法有点相像。主程序员对程序的总体规划和程序的编写负全责,他手下还有一个助理团队,这个助理团队负责程序代码的优化和挑错。
这是一个非常有用的主意,但由于程序员特有的个性,这种做法在他们中间也引起了一些麻烦:每个人都想成为主程序员。按照他们的说法,没有一个人想要成为所谓的“程序奴隶”。由于在一个项目中只能有一个主程序员(这也正是问题的所在),因而大多数程序员都做着普通的编程工作。
但是由于微软业务的迅速膨胀,主程序员的职位概念也很快走到了头。软件产品变得越来越大,一个主程序员已经不能满足项目的要求。还有一个更重要的问题是,主程序员不一定擅长软件设计。随着软件越来越复杂,以消费者为对象的设计问题渐渐从纯粹的代码编写中脱离出来。要让同一个人来负责两方面的工作,会让人心有余而力不足。尽管可能有人多才多艺,是剧作家的同时还能是一个好的橄榄球后卫,但是,如果你雇用一个人的目的是让他从事这项工作,而实际上又让他从事另一项工作,你肯定会感到失望。
“主程序员”这个称呼后来就不再怎么有人使用了。尽管微软是一个令人惊奇的“优秀”男人集中的地方,但是这个过度男权化的字眼还是让人不舒服,于是他们改用了一个中性的称呼——项目经理。目前项目经理这个工作岗位在软件行业非常普及,但据我们所知,这个称呼很可能是微软办公软件Excel的开发者杰贝布卢门撒尔的发明。
跟许多微软员工一样,布卢门撒尔在微软挣了足够的钱之后就离开了公司,开始从事其他的“后微软职业”。布卢门撒尔在喀斯喀特山脉地区开设了一所学校,同时在自己的母校湖滨中学(也是比尔盖茨的母校)教授高中数学和物理。布卢门撒尔最重要的想法是他认为项目经理不一定非要懂编程。他认为一个项目经理应该对软件的应用对象做出预想,应该对产品的外观和感觉负责。项目经理不是在写程序,而是在编制达到上述要求的产品规范。因此项目经理的工作就是领导程序开发人员,确保程序人员按照规划并且按时编写程序。
项目经理与开发人员之间有着微妙的关系。开发人员认为自己做的是真正的、艰苦的、生产性的工作,而项目经理是“低等生物”,他们多拿薪水,却是只知道滔滔不绝讲空话的呆瓜,就像《呆伯特》卡通画里长着刺一般头发的老板。
第11节,
而从项目经理的角度看,他们做的是创新的工作,而开发人员只不过是提供工具而已。项目经理是设计古根海姆博物馆的著名建筑师弗兰克盖里,开发人员只不过是建造古根海姆博物馆时的铆接工人。
由于这种分歧的存在,项目经理很难树立起自己的权威,他们很有外交风度地称自己做的是“牧猫”的工作。而人数多于项目经理的开发人员则不隐讳自己对项目经理的轻视。流行的笑话是:在任何需要项目经理技术水平的时候(比如去预订比萨),“叫项目经理来”。程序员亚当戴维巴尔回忆说:“在一次微软会议上,当讲话的人演示幻灯片出现问题时,有人大声喊道:屋里有项目经理吗?很多人大笑起来。这时又有人喊道:怎么啦?是要找他打高尔夫吗?屋里顿时笑翻了天。”
微软公司另外一个重要的工作岗位是程序测试员。程序测试员身上也能够反映出当今软件日趋复杂的一面。过去都是由程序员自己对程序的漏洞和可用性进行测试,帮助他们的是一群非公司员工的试用版测试员,这些人在将来可以优惠购买正式软件。今天,软件漏洞测试已经是一件非常重要的工作,它也需要有相关的测试专家。微软公司有数百人专门从事对别人的程序进行挑错的工作。
测试人员对软件进行非常严格的测试,例如,对一个电子表格无限地加行加列,直到它崩溃;或者打开一个又一个窗口直到某方面出问题;或者模仿病毒和黑客的攻击。与项目经理不同,测试员应该懂得如何编程,他们经常编写一些特殊的软件来测试软件产品(当然,他们编写的软件不会上市销售)。
有一点项目经理和程序开发员的见解十分一致:他们都轻视程序测试员。一个测试员的感觉就好像一屋子的人都是医生,而唯有自己是牙医。他们是“没有进过医学院”的“医生”。测试人员所做的工作没有一点可以炫耀的地方,他们不对发现的漏洞进行修复,他们只是汇报漏洞,由软件开发人员来进行修复。
可能测试员的工作与其他工作相比“智力要求”较低。这会怎么样呢?微软的竞争环境使得每一个人都不愿意承认自己比别人笨,甚至不愿意承认自己在任何一方面不如别人。测试人员对自己的地位特别敏感,而从官方来说,微软着意低调处理这三种显著不同工种之间的差异。亚当戴维巴尔说:“如果你说的任何话,即使是非常隐晦地指出测试员所需要的工作技能比其他的工作要低,也一定会遭到训斥。”管理和人力资源部门都坚持程序开发人员、项目经理、测试员同样聪明、同样具有创新精神、同样有雄心壮志。至于这三种工作之间一眼就能看到的不同,他们有自己的一套东西进行解释,这个解释的要点是:三个工种各有自己特有的技能和才华。这些技能和才华是“不同的”,但是它们“同等重要”。巴尔说:“这只是公司的策略,这些全是谎言。”
第12节,
测试人员则认为自己是最具创新精神的。如果一个人能够使Excel崩溃,你会怎样评价这样的天才?测试部副部长格兰特乔治说道:“最成功的测试人员只是与开发人员和项目经理具有不同的思维。我们提出批评,至少我们对日常生活中看到的、接触到的和有联系的东西的品质都有自己的评价,我们的工作就是批评并使产品更完美。我们非常感谢这个行业和微软,通过我们对品质的热情来提高一个数百万人使用的产品的质量,是一件多么伟大的事情。”
持有这种看法的不仅仅是乔治一个人,这种看法可以被总结为:测试员有见地,而其他人没有。
这种劳动分工的不断变化加速了微软招聘工作的变化。没有多少大学毕业的人愿意成为项目经理或者测试员,也并非所有从事这项工作的人员都是计算机专业毕业生。在面试中可能不要求一个未来的项目经理编程,因此有�