Visual Studio总经理谈微软研发团队管理之道(下)

InfoQ: 我们回到技术层面来讲,在你身上我可以看到微软一个研发团队的技术变迁史,或者一个缩影。我想问的问题是,在你的理解当中,从你进入微软研发团队一直到现在,在整个产品的开发过程中,主要经历了哪几个比较重大的阶段?

潘正磊: 我觉得这个问题非常好,因为你让我回想了一下。确实有几个非常大的不同(阶段)。

    在我刚进微软的时候,微软还比较新,很多产品还是刚刚第一代,像我那时候做Microsoft Access,现在已经无穷代了。那时候刚刚是第一版,当时发布时非常振奋人心的。如果打一个比喻,就比较像我们80年代刚刚开放的时候,那时候商品比较少,用计算机的人数少,相对来说需求也少。所以那个时候从微软来说,只要发布产品就会有很多的用户来使用。因为我们有很多很基本的需求,而市场上却都没有。那我们发布的产品只要大面上不错的话,就可以非常容易地满足用户的需求。从Word第一版开始发行的时候,前面几版的很多很多基本的功能现在觉得都是肯定、应该有的,但是当时都是很新的东西。

    但是产品在做了时间久了之后,等你发布第五版、第六版、第七版、第八版的时候,这时有很多基本的用户需求已经满足了,在那个前提上怎么样把你的产品更上一层楼,这实际上就变成一个相对来说比较困难的问题。很多时候,像我们的Office团队最大竞争者不是别人,是前面一个版本的Office。所以在一开始我觉得我们微软在定义产品的时候,比方说90年代初,跟客户沟通之后我们就是用一个Waterfall(瀑布式开发模式)这种Model,因为我们觉得我们知道这个产品应该做什么,我们就把它做完了,然后放在外面市场上,相对来说一定是卖得不错的,卖得很好的,所以这是我们比较成功的一个模式。

    这可以算是一种主导模式,当然我们还是要跟客户有反馈,一开始要跟客户研究,但是我觉得相对来说做得少,而且相对来说比较容易满足客户的需求。因为那时候大家的基本需求有很多都没有满足。等到99年、2000年,差不多就是那个阶段,我们那时候很多产品已经开发了好几代了,等到那个时候我们就有一个危机,因为我记得是差不多是2000年的时候,那时候客户对我们的满意度相对来说比较低,而且我们跟合作伙伴的关系相对来说比较僵一点,在美国还有很多的诉讼案,那个时候我觉得实际上是微软处于一个比较低潮的阶段。但是从那之后,我们确实就开始转型了,我觉得一个最基本的理念,我自己有这个感受,一开始就觉得说我们可以定义这个产品,定义了以后就做,做完以后卖,这是我们最开始的运营模式。

    大概是2000年之后,我们就发现对用户反馈的需求变得非常多,而且一个版本一开始跟用户反馈一次是远远不够的。从开发模式来说,开始时我知道什么是对的,我知道用户需要什么,我只要开发什么,这是我们本来的模式。在那之后,我们的模式是我不太确定用户确实需要的是什么,我们可能要先做一些prototype(原型),试验品出来,让用户去体验一下,体验完了以后再给我们反馈,这是不是他们确实要的,我们在这个反馈基础上再更改。所以你可以看出来整个流程,一开始的想法跟后来的想法是不太一样的,而且我们在2000年以后,对用户的反馈需求比以前是大大增加了,而且成为我们fundamental mindset(最基本的理念),从一开始我绝对知道一个对的产品是什么样的,到我不太确定,那我需要跟用户多次反馈,才能知道真正对的产品是什么样子的,而这两个其实是非常不一样的开发模式。我们开始用这种开发模式之后,因为微软作为一个很大的团队,确实也碰到很多的挑战,因为很多时候你要想改一点东西实际上是非常难的。

    像你要是自己想在家里后院造一个小房子,你怎么改都没有关系。但是你要想造金茂大厦,造到一半想改一点什么东西,那你可以想到有很多的东西要配合。你如果要改一点东西,那对你的电梯、电路、楼层、重量,都有很多的考虑因素在里面。

    作为一个大的开发团队,你怎么样能够同时满足客户的需求,又能够在你的架构基础上能够做这种改动。因为最后你的产品还是要满足客户需求,才能够有卖点。你怎么样做这么一个调整,这也是我们在前七、八年中慢慢转型的过程。那相反过来,你如果看,拿我们Visual Studio作为一个例子,从08年,我们前面几个例子看到我们开始大量的出我们叫CTP(Community Technology Preview,社区技术预览版),而且跟我们的客户、开发人员的交流变得非常的透明,很多时候我们很早就把我们想做什么,愿意做什么,有的时候把我们写的Spec,就是产品定义放在网上,给我们的MVP(微软最有价值专家)先让他们反馈,我们现在做很多这样的工作,在这之前都是没有的。

 

InfoQ: 对于你们内部的开发团队来讲,产品的设计方面是有很大的挑战,也是一种很大的转型。那么你们自己在做开发的过程中是不是也分为几个阶段呢?

潘正磊: 对!如果是按以前的开发模式,那你可以想到我们更多的是这种,我们现在决定要做这些feature(功能),这些功能需要这样这样,那就是一条线做下来,最后把它发布就可以了。

    就像瀑布模型一样的。如果你想实现的功能需要在开发过程中做调整的话,中间的每一个开发阶段,就需要设计一个跟用户反馈的过程,把真正的反馈拿回来以后再在下面一个过程中做调整。同时你还不能把你的那个发布日期改动的太多,所以你就可以看到这个难度实际上是增加了很多。

 

InfoQ: 在每一个改变的环节上,根据刚才我们的交流,他应该是客户来进行推动的。还有一个问题是,在什么时候你们认为这是一个改变的时机,认为这个开发模式应该改变了,这个产品设计的模式应该改变了,你们做决定的时候,有没有某一个观点来刺激着你们去做这种改变呢?

潘正磊: 没有,因为微软很多事情不是Top-Down(自上而下),不是从上面这么Drive(推动)下来的。第一,从管理层来说,我们比较注重抓的是用户的满意度,看他的满意度如何,就能体现我们跟他一开始交流的够不够。另一方面,比方说我们这个产品真正是有多少用户反馈,而且是把这些反馈做到了产品里面去,这也是我们可以衡量的、量化的。而且很多时候微软有一个团队开始做一个比较好的模式,那其他团队会说,这个模式不错,他也开始借鉴。所以我们这个转型也是慢慢转型,不是说一下子,整个团队全部开始转型,不是这么一个过程。

 

InfoQ: 可能是某一个团队他先采用了某一种方法,然后其他团队开始慢慢的效仿,应该从底下往上推?然后从小到大这么一种方式?

潘正磊: 说的非常对,因为我们不是Top-Down。从上面管理来说,你要抓的是最后的那个结果,你想看到的结果是什么,那么你鼓励下面团队去实验不同的方法能够达到这个结果,有的试验可能比较成功,有的试验可能不是很成功,那么你再把成功的这种方法在其他团队里面推广,一般多半都是使用这种模式比较多。

 

InfoQ: 微软的高层他不会认为就是,OK了,所有的开发团队应该采用这么一种统一的开发方法来去做,他没有这么一种强制的要求吗?

潘正磊: 绝对没有,因为微软的产品线非常的长,有各种各样的产品。开发方式实际上就是我们说的Process(流程),很多时候根据你这个产品不一样,各方面会不一样的。那我对Process的理解是这样,就说Process是应该帮助你的开发更有效、更快,很多时候我们觉得Process非常繁琐,时间上会让你慢下来,实际上这个不是它的(目的),它就是没有达到要求。用另外一个比喻,其实像我们来的路上都是有很多红绿灯,有的地方是有那种转盘。像美国还有一种就是叫Four-Way Stop(四向停车),就是你到那边停下来看看左边、右边有没有车,没有车就可以通过。那他实际上都是不同的管理交通方式,管理这个车流量的一种方法,根据不同的地点,你要选择最适合地点的一种方法,有的地方如果车流量不是很大,用这个Four-Way Stop就可以了,有的地方可能有六、七个不同的出口,那用转盘是最合理的。在美国比方说有的地方你停了电,本来有红绿灯的地方,你停了电就变成了Four-Way Stop,那时这个地方一定是堵车堵得不得了,因为红绿灯可以帮助流量的增加。

    开发的管理方法也是非常类似的,根据不同的项目你要选择对你来说比较合适的方法。如果是一个比较小的项目,你用一个heavy weight(重量级)的方法那就是不合适的。这是为什么微软不会从上面说你一定要用什么样的方法,他考核得是你最后那刻做出来的结果,你的结果是怎么样,能不能在你所承诺的时间里面把东西做出来,你做出来东西用户是不是认可,你做出来的东西后面是不是有很多质量问题,还是说很好用。你在做下面一个版本的时候,就可以反映出你前面做的架构好不好。如果你前面做架构延伸性非常差,你第二个版本相对来说就会多花时间,因为要把前面重新(改造)。

    会遇到很多兼容性的问题。所以这种才是比较硬性的考核标准,那下面用什么样的方式,你自己应该去选一个对你团队来说最合适的方式。

 

InfoQ: 那我们再具体一点,就是你作为一个开发团队的负责人,肯定在整个的团队管理生涯当中,采用了很多新的技术,很多的新的开发方法,那你是用一种什么样的观点来评估这个技术、这个方法是不是应该用在自己的团队里面?

潘正磊: 一般还是看结果。我本人是比较愿意去试验新的方法,我会让一个feature crew (功能小组)去试验这个方法。然后给他一段时间,他来给我反馈,这个不管是方法还是新的工具,他有什么优点,他有什么缺点,因为很多时候你想是想不出来,你还一定要去试,试了之后才知道它到底是好用还是不好用,它什么地方好,什么地方不好,就跟车一样,你得要去试开一下。然后在这之后,根据他的好处跟坏处,你还再可以跟现有的方法比较,再评估一下,你是把它全盘拿过来呢,还是把它改动之后再引用,或者有没有什么办法把它好的地方能够结合到现有的方法之中,不好的地方把它抛开不用。

    你每换一个开发工具,或者是每换一个开发流程,尤其是团队大了,相对来说实际上是一个比较难的事情。因为你对整个开发、测试,还有工程师,你都要进行一个训练的过程。所以一般来说,我并不鼓励有什么是最热门的,我们都来试一下,因为这个是不太可能达到效果的。很多时候如果一个新的办法在推行之中,大家对这个方法不熟悉,很多时候员工也会有抵触情绪。因为我本来这个用的很好,我也知道怎么用,它里面好的、坏的我都知道了。那现在你如果是一个新的东西,我对它第一不知道,第二没有感觉,然后第三现在我就是不知道怎么跟大家合作,那一开始可能会有生产效率的这种降低。所以从这种方面来说你都要考虑进去,尤其是团队大的话,有的时候是在现有方法之上,说哪些是一定要改动的,哪些是不能改动的,那很重要一方面就是把这个理念,你为什么要改,你不是教你这个团队方法,你要把你想最关键解决的这个问题,为什么你要做这个改动,你现有方法你觉得最最不好的问题是什么,你要把这个问题跟团队讲清楚。那团队在理解了这个东西而且他也认可的情况下,比方说我们以前的开发方法是假设我们知道用户需要什么的,我们现在开发方法是假设我们并不完全知道用户需要什么的。这是一个非常基本的理念的不同,你把这个要跟团队讲清楚,那他真正能够明白体会了这个问题之后,那接下来他会和你一起改进他的工作方法。

    工作方法不是我来改进的,是我的团队来改进的。因为他在日常工作(开发、测试)中发现了问题,发现什么是更好的解决方案,他要有这种主观能动性,他要明白我想解决的问题是什么,他才能够主动帮我来想更好的解决方法。想出解决方法之后,我们大家再分享,一般都是这样。

    绝大多数都是从下往上推动的。因为我每天不在那里做开发,我不可能知道什么是最好的解决方案,确实要每天在做的人才会在他做的过程中发现说,我们这个地方好像浪费了很多时间,我们有没有什么好的方法把它给解决一下。他如果是这个涉及比较广,他会跟我们有一个汇报的过程,因为他可能会问我要资源,或者要其他的东西,那在这个时候我会给一些比较方向性的东西:这个问题我早就知道了,但是我现在决定不解决,因为可能有其他的方方面面的原因,所以我不解决;或者说这个想法非常好,我给你资源,你去给我做一个试验原型出来,然后我们再来看一下,这是非常常见的。

 

InfoQ: 那我想作为一个比较成功的技术研发团队的管理者,给我们其他团队的负责人,如果提三点建议有没有什么好的建议?

潘正磊: 我觉得对中国团队来说,有些是不是适合国情我就不知道了,但是我先说一下三点建议:

    第一,就是真正的要有这种自信心,要去培养你的接班人。而且是不仅是你要培养你的接班人,每一个重要的职位下面都要有一个接班人,而且这个需要和你重要职位的人一起在培养,因为这是打造一个长久的成功的团队非常重要的一点。因为你没有这种传帮带的话,那你这个团队也许是现在可以把这个产品做出来,如果你们有重要人员离职之后,你还能不能是一个成功的团队,这是一个非常重要一点。

    第二,你怎么样能够调动员工最大的积极性,而且我觉得有的时候中国的员工不够主动,你让他做他会做得非常好,但是你不跟他说的事情,他也许就不做。这个我看得比较多,不管在美国和中国的华人员工里面都是比较常见的一个问题。作为一个管理者,你怎么样能够让他能够非常主动把问题告诉你,而且把解决方案也告诉你,这个是从微软文化上面来说是非常重要的一件事情。

    第三,从微软来说是人脑加电脑,从我们做IT来说是人脑加电脑,那实际上最主要的还是人脑,那你是不是真的培养员工,真正是让员工在你团队里的重要性充分的发挥了出来,只有在这个时候员工才认可你的管理方式,才能认可他是这个团队的一员,才能想到怎么样在这个团队里面发挥最大的重要的作用,那这也是我觉得开发管理者应该多思考的问题,和多做的事情。

 

InfoQ: 还有没有其他想和我们读者做分享的呢?

潘正磊: 我觉得我们中国IT员工,从IQ上面来说非常的高。而且尤其从钻研角度来说,也是非常(努力),真的是。我们在微软自己就觉得我们在中国招的大学生素质,比我们在美国招的大学生素质要高,真的是从那个IQ上面来说。

    但是,我觉得有一些可能文化上面的东西,可能会限制这些员工的发展。我看到比较多的是,有的时候员工他们碰到一个问题,我觉得可能是考试考太多了,他们看到一个问题,他们不太会去跟旁边的人,一起跟周围的团队里面的人,或者跟美国团队人一起交流,一起想最好的解决方案,能够把大家不同的观点整合起来。很多的时候看到他们自己在非常辛苦地在干。那苦干之后真的是做出来成果就说,你有没有考虑到一二三四五六,那你有没有跟这个人这个人去谈过,好像这方面做得相对来说比较差一点。因为我觉得我们考试的模式就说你不能问别人,你都要自己解决。

    我们在工作中都是,你不可能一个人把方方面面都考虑全,这是不可能的。所以你一定要跟你团队里面的人搞好关系,一定要把团队里面帮你一起想这个问题,还有什么其他的观点,而且能够非常坦然的把这个观点结合到你的解决方案中去,那我觉得这方面相对来说就是相对弱一点。而且就是这种主动性比较差,如果你没有跟他说要做什么事情,你交代的我都做好了就完了。那这两方面是我觉得中国员工需要想一想怎么样加强的地方。

 

InfoQ: 感谢您接受我们的采访。

潘正磊: 谢谢。

 

    InfoQ视频观看:点击这里

    注:如需转载以上内容,请事先联系InfoQ中文站 editors@cn.infoq.com,谢谢!