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

    去年12月,Visual Studio总经理潘正磊女士有幸接受了InfoQ中文站主编霍泰稳先生的专访,由于篇幅较长将分成上下两篇刊登两位关于“微软研发团队管理之道”的交流速记。

InfoQ: 先给我们介绍一下你自己和你自己现在所做的事情吧?

潘正磊: 我是1992年大学一毕业就加入微软,一开始是做开发程序员,就是Developer,最开始开发的项目是Microsoft Access,现在也是微软卖的很好的一款产品。在Access开发了几年之后,我转做另外一个产品叫Visual Interdev,那是我们微软第一款针对网络Web做的开发工具;那之后我在Visual Basic团队做Developer Manager,就是开发经理的职位,当时我们整个从VB6到VB.NET 转型,所以跟.NET做平台开发,是一个非常艰苦的项目。之后还在Visual Studio里担任了一系列的职务,包括开发总监、Visual Studio Team Architect的产品总经理、Visual Basic的产品总经理。现在是Visual Studio Applications的产品总经理,像我们刚才所说的,主要我们这个团队做的是针对企业的开发工具。

 

InfoQ: 你是从一个基层的开发人员一直走到现在,那我想,在你整个过程中应该有很多的感触,特别是从一个开发人员然后到一个管理职位,在整个过程中有没有什么比较难忘的事情?

潘正磊: 因为已经工作十几年了,所以说,确实有很多故事了,我觉得比较难忘的几个故事,还是跟我们最高层打交道的时候比较有趣。我们在做Visual Interdev的时候,那是我们第一款针对Web的产品,当时微软对Web的定义、对Internet的战略不是非常清晰。记得我们跟Bill Gates在做产品Review(产品回顾)的时候,他一开始对我们这个产品是有些意见的。他说,你这个产品做出来以后,对Windows有什么好处或者是坏处。这是一个挺尖锐的问题,让我们所有人回去都要好好想一想。

    还有最近我们在做另外一款产品Review的时候,也是跟我们的CEO Steve Ballmer,他一上来我就要给他做一个演示Demo,我们的CEO就说现在所有演示都不要做,他叫我们最资深的副总裁,“你就到黑板上面去,把你们这个产品要做出来的三个目标先给我写上去,写完以后我们再做演示,看你这演示有没有达到你这三个目标”,这是跟Steve Ballmer做Review常常会碰到的情况。

    他会用你很意料不到的方法来问你,因为一般我们去做这种总裁Review都是有准备好一套PowerPoint,有一套我们自己的思路,他就会从你的思路之外问一些问题,保证你确实能够解释出来你为什么要做这个东西,然后你的思路是什么,你的战略是什么,这是一些蛮有挑战性的东西。

 

INFOQ: 在你个人从开发人员到团队管理的过程中,在做团队管理的时候有没有遇到一些困难、一些比较难忘的事情?

潘正磊: 做团队管理的时候,因为团队管理最主要的是几大块:第一,你要造就一个非常强的团队。这中间有很多(差异),你这团队是你自己接手的,还是你这团队是你自己一个一个雇佣进来,这个完全是不同的。还有和你的Partner(合作)团队,因为微软很多项目需要好多几个团队来一起合作才能做好,那跟你Partner的这个运行过程中也有很多的这种Interaction(互动),有的时候如果大家的战略目标不一样,就会造成很多各种各样的问题,所以这都是有很多故事的。我现在一下想不出来一个特别好的、最有挑战的。因为从组建团队开始,这么多年走过来,基本上什么场景都碰到过了,所以我还真一下想不出来一个最好的故事,或者是说最有挑战性的故事。

 

InfoQ: 其实我也了解到在你整个的发展过程中,到最后成为全球微软有两千多个总经理,你是为数不多的华人,那么从整个阶段来看,你是如何总结自己的这段历史?

潘正磊: 我觉得微软现在华人的总经理比较少,但是我觉得从长远来说肯定会越来越多,这实际上和我们在九几年有大量的大学毕业生开始出国,然后开始在美国,或者这种(国外的)地方开始就业有关。我相对来说出国比较早一些,所以我进微软也很早。那像九几年之后,95、96,包括90年代末期,有大批的中国员工进入微软,所以我相信这以后的华人工程师或者华人总经理,各方面只会越来越多。另一方面,在微软或者是在很多大企业里,自己的一步一步都是要慢慢走过来,然后都是要脚踏实地,最主要的是要想到你对这个团队有什么贡献,你对你的客户有什么贡献,如果能够比较的专注于某方面工作的话,那我觉得在成长中是很有好处的。

 

InfoQ: 进入微软的华人很多,工程师也很多,但我想也淘汰了很多,最终可能会有一个人冒上来,而且这个人就是你,我想问一个比较直接的问题,你觉得为什么会是你走到今天这个位置?

潘正磊: 我觉得每个人的长处是不太一样的,我觉得我自己的长处,第一是技术方面还不错,因为一开始在做工程师,如果你技术上面做不好,是不可能往上走的。另一方面,我觉得我对资源整合这一方面是比较强的,我的一个强项是我很快就能看出我下面的员工他们最适合什么,他们不太适合什么,那把他们放在最适合于他们的工作岗位上。这样第一能够最大调动他们的积极性,第二整个团队可以成为一个非常高效的团队。而且我在管理人员方面,很多跟我做了很多年的员工,愿意跟我做很多年,所以这也是作为一个领导者应该具备的比较重要的素质。

    我觉得这些是可以学的,但有些可能有的人就会比较容易一些,比较自然一些,有的人可能就是要学的更多一些。

 

InfoQ: 但是我想在你的团队里面应该也有一些能力非常强的,比如说他的存在会让你有所威胁,那么在这种情况之下,你是如何和他们相处的?

潘正磊: 你看,我这个考虑思路跟你完全不一样,我不会觉得我团队里面有谁对我是有所威胁的,我的出发点就是我希望能够培养一批人才,如果有一天我能够不用去上班了,而且我的团队还可以执行得非常好,这才是我的目标,所以我是希望有人能够来代替我。

    因为微软里面包括很多公司是这样的,有挑战性的工作是非常多的,如果我这个工作做完了,如果我下面培养出一批人才,能够取代我的话,那还有更加具有挑战性的工作在等着我去做,所以这个思路不是说有某个人会对我造成危险性,而是我如果有一天能够找到一个,或者请到一个比我更强的员工,这是一件非常高兴的事情,非常令人振奋的事情。

    实际上在我的职业生涯中也确实有过这样的经历,我那时候在做Visual Basic开发经理的时候怀孕了,我知道会休蛮长的产假,而且一度还动过可能不回来上班的想法,做全职妈妈的这种心思,所以我那时候就重点培养下面的一个开发主管,而且当时就是培养他到最后,我去休假之前,说那这个团队就交给你了。等我五个月休完产假回来之后一看,那个团队虽然是我打造的,交给他之后他还是管理的非常好。我说太好了,那你就来做开发经理。那个时候我就去做了我们Division(部门)另外一个工作,整个部门的开发总监。

    就像我说的,这世界需要能人的事情非常的多,所以你是一个能干的人你不要有这种危险感,因为需要你的地方是非常多的。

 

InfoQ: 所以我想,一个人的自信对于他整个的成长是非常有帮助的?

潘正磊: 实际上我觉得就微软来说,如果你没有自信,那你可能很难从一个开发工程师往上走非常的远。因为在微软我们招的都是,真的是世界上英文词叫”cream of the crop”(精英),都是最最顶尖的大学生,或者是外面有经验的人。在这样一种环境中,你怎么样能够跟大家交流,怎么样可以说服大家同意你的观点,怎么样听取别人的反馈,自信心实际上是一个非常基本的素质。如果你没有这个素质,就是作为一般的开发工程师也不会走的太远的。

 

InfoQ: 另外我比较好奇的一点,比如说在你整个的几个阶段里面:从基本的开发人员,然后到一个比如说项目经理、一个产品的带头人,然后再成为一个产品的总监,最后成为总经理,那么这几个阶段它有什么特别的不同吗,除了你管理的人越来越多?

潘正磊: 那是有非常大的不同的。作为一个开发工程师来说,你最主要的是要把你的代码写得越快越多越好。因为你对产品的贡献是鉴于你代码的数量,你写代码的数量直接就反映成你对这个产品功能多少的体现,你的代码行写得多,那这个功能才增加得多,你写的代码行是最难的那部分,那才说明你对这个产品最主要的核心部分有贡献,这是作为开发工程师。

    作为一个开发主管来说,就是我们叫Development Lead,第一方面,作为管理者,你对这个团队的价值,不仅仅是说你自己写了多少行代码,这相对来说是比较少的,最主要是你这个团队对整个产品的贡献是什么,那还是基于你这个开发的功能有多少,然后你这个功能是不是做得好,你架构是不是做得好,而你的核心价值就是把这些资源都组合起来,然后能够帮助你团队的员工扫平障碍,让他们非常顺利地开发。

    像我最开始做管理的时候,我只管理了三个员工,有一个员工如果做得慢一点,那我最多周末去加一加班,他没有做完帮他补做完就完成了,我觉得相当简单的一件事情。等我那个团队长到10个人的时候,你就发现,第一,不可能我周末再来加班,也不可能把10个人里面有两三个人可能要做的慢一点,如果按同样的比例来说,我不可能把这两三个人要做的东西都做完了。那这个时候你要做的就是我们从这个Skill来说如何让整个团队都能够非常顺利高效地运行,你就要想“我怎么样让这十个人互相之间能够(协调好)”。比如有些问题是程序的顺序问题,那就把顺序问题安排好;有些东西可能要需要做一些决定,那就尽早的把决定做好;还比如下面的架构要做好,跟其他团队的关系要搞好,因为他们可能有些东西要拿来,他们先做完之后我们才能做。所以,有很多东西是Dependency Management(依赖管理),这些东西全部都要管理好,就像造房子,管理一个项目一样。这样管理好你这十个人才能马不停蹄、非常高效地把这个东西做好。

    等你做开发经理的时候,开发经理因为不是第一线的管理者,而是第二线的管理者,这个时候最最有挑战性的可能是,你很多东西要通过你第一线的开发主管传达到下面去,如果你的开发主管对你说的话不认可,那你的观念、决定不一定真正能够传达到最下面的开发人员。而且你下面的开发主管可能每个人都还要管一摊不同的东西,你怎么样让他们之间能够互相配合、互相合作,你得从一个大局上面来看你整个开发团队缺什么,有的时候开发主管在那里面做,他不一定会知道说,我实际上比较缺一个真正能帮我把这个架构搞在一起的人,或者一个特别懂客户的人,那要把这个全部都想清楚,真正打造一个非常强的团队,这又是另外一套的艺术,我觉得。

    在微软如果你不懂这产品(技术),你是没有办法做一个合格管理者的,你不仅要做人员的管理者,你还要做这个产品的定义,而且还要跟你的团队交流,什么地方是应该做的,什么地方是不应该做的。

    是一种多重角色。因为从开发经理来说,我在美国喜欢说三个P,你要管理产品(Product),你要管理人员(People),你还要管理流程(Process),这三样东西都要抓起来,你才能作为一个合格的开发经理,然后让整个团队都能高效地运行。

 

InfoQ: 他和现在的总经理有很大的区别吗?

潘正磊: 非常大的区别,因为从开发经理来说,他还只是主要管开发团队的。开发团队总的来说可能只是占了1/3。总经理跟产品经理是两个不同的概念,产品经理是说你管一个产品,而总经理是管多种产品,像我刚才所说的,实际上我现在这个组里面有三种不同的产品。

    那这三种不同产品很多时候会有不同的进度表,发布时间会不一样。怎么样把里面相同的东西能够整合出来,让大家最有效地利用,而且还要针对每一个产品有他特别的开发。怎么样管理这一套产品线,而且跟我们的市场部,跟我们的营销部,跟我们的DPE(开发工具及平台事业部),那些合作都是在这个层面上面是完全不同的。而且在这上面你就更要想说,这几个产品,就像我们叫Portfolio(投资组合),就好像如果你要是投资,你可能有些放风险基金,有些放银行存款,有些是放外汇,你还要再从比较高的角度上,看你每一个产品到底里面放多少的资源进去,为什么这个产品放这么多资源,而且要看你成功的定义是什么。

    而做一个产品的开发经理,这么多资源实际上已经分配给你了,你的任务就是在这个资源的基础上面把它做到最大最好,所以这两者还是不同的概念。

 

    InfoQ视频观看:点击这里

潘正磊女士于1992年以软件开发工程师的身份加入微软,先后参与Access , Visual InterDev, Visual Basic.NET, Visual Studio Team Architect, Visual Studio Team System等多个产品的开发。目前担任Visual Studio Business Applications团队的总经理。这个团队通过提供多种工具,使全球开发人员能便捷地在微软平台上搭建商业应用程序,其中包括为LOB应用软件提供丰富的开发实例,为Office服务器和客户端提供一流的开发工具,并使所有独立软件提供商可以更方便地将.NET编程应用到各种应用开发中。2009年9月份,潘正磊女士回到上海,兼任开发工具中国研发团队的领导工作,进行Visual Studio、Visual Studio Team System、.NET Framework、C++、高性能计算和并行开发工具等产品和技术的研发。

 

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