主持人:张宏江院长曾经多次提到微软亚洲工程院需要三种人,软件设计工程师、软件测试工程师和软件项目经理,请问这三种人在工程院里的角色和在其他企业里有什么不同?这些角色的特点又分别是什么?
张益肇:我先讲一下软件项目经理这个角色。在微软,软件项目管理与其他企业的项目管理有很大的差别。在微软,软件项目经理,也就是Program Manager将不仅仅负责项目的管理,还要对整个软件负责。有别于其它软件公司的Project Manager负责制,在微软的软件开发过程中,将由Program Manager分配资源、控制进度、管理流程。
微软对软件项目经理有很高的情商要求,如亲和的性格、极强的协调和沟通能力、能迅速把握用户需求、深谙项目的分析、设计与进程管理,对于新技术和产品有着超乎寻常的敏锐嗅觉并能迅速深入其中。微软的软件项目经理要知道如何理解客户的需求,如何满足客户的需求,我们的产品目标在哪里,如何细化,需要哪些功能,需要哪些设计,开发的流程又是怎样,等等。可以说作为一名软件项目经理,他的工作就像从编剧到导演以及最后到后期制作,要从头到尾都涵盖进去。
主持人:谈到项目管理,在微软,软件项目经理的职业发展道路是怎样的?
张益肇:在微软,人员的比例大致是10个开发人员会有一个项目经理,相比而言,对项目经理的需求量没有那么多。在比例上,大概每10个人里有一个人是项目管理,但在公司最高层的主管中,项目管理出身的人占了很大比例,这是因为他们对市场的理解以及对技术的理解,都比较全面和透彻。
对于项目经理来讲,更重要是要有很强的沟通能力,不管是中文还是英文,说还是写,都要有很强的沟通能力。文档要写得很清楚,让大家知道怎么开发、怎么测试。我们会给这些年轻的同事到美国工作的机会,让他们理解项目管理在整个项目当中扮演什么角色。
主持人:林斌先生,也请您介绍一下软件设计工程师和软件测试工程师的角色吧,微软对他们的能力有什么要求?
林斌:开发,最关键的一点就是要有对技术的热爱,这一点是作为一个开发人员最基本的要求。虽然说的简单,但是是很难做好的,这牵涉到很多方面。作为开发人员,首先是写代码,要写得多么细、多么好、多么完美,一定要做到尽善尽美。一个优秀的开发人员可以把代码写得很漂亮,每行写得很整齐,看起来像一个艺术作品一样,而不是堆起来的代码行。
刚才张先生讲到对PM要求要有很强的沟通能力,其实对开发人员,我们一样要求他们有很强的沟通能力。比如在写代码的时候,写一个函数,不能一上来就说你写的这个是不好的,我写的这个是好的,应该以技术的背景来说服别人。怎样说服别人,不能让项目经理替你说服别人,而你自己要有这方面的能力,去说服别人,与别人沟通。
一个很好的开发人员除了会写代码以外,还要会做设计和技术顾问。设计方案出来以后,怎样很好的跟同事、测试人员、项目管理人员协商得出一个很好的设计,这是他综合能力的体现。这些能力要体现出来,要看他的技术背景是否强,能否利用一些真实的数字、例子说明他的设计是好的;还要看他的表达能力,让别人知道他的设计是怎样的好。因为最后对这个设计做出实施的决定,不是他一个人说了算的,是需要调动团队成员一起做的。我是开发人员,在这方面有深刻的体会。除了技术能力外,还要涉及到方方面面的协调能力。
主持人:网上很早就流传微软亚洲工程院面向测试工程师的一道面试题,“给你一台冰箱,你将如何测试它?”在工程院,测试工程师都做哪些工作呢?
林斌:测试工作是很有意思的。很多同事觉得测试工作就是每天坐在电脑前点鼠标,点出很多Bug来就可以了,这其实对测试是片面的理解。测试,鼠标去点是一个。微软做了很大工作,就是希望把鼠标去点的工作变成全自动,所以在这里面产生了新的工作范畴。微软产品这么复杂,要达到完全自动的去做测试,这么多测试怎么去自动完成。这就体现微软对开发和测试人员的要求。
测试人员也要写代码,而且写代码的质量要求也要非常好,要有设计结构的能力。除了自己写代码以外,还要具备很强的洞察能力。测试的目的就是要找到问题,找到目的就是好的测试师。找不到问题,也就没有洞察能力。有些人员做测试工具的开发,有些开发做着做着,应该把工具做得非常完美,可是在做测试工具开发的时候,他可能掉进一个误区,他只是注重工具的完美性,没有注重实用性。工具开发出来,搞了半天,没有找出问题。可以检讨一下为什么会这样,在这个过程当中,应该对产品有很强的了解。在开发工具以后能够找出问题,洞察能力要强。
我强调一个是开发能力,一个是洞察能力,这是我们对测试人员的一些要求吧。测试工程师的洞察能力要比较强,好的开发工程师不一定是好的测试工程师。
主持人:微软亚洲工程院在做一个产品的过程中,还会包括哪些人,除了项目经理、程序员和测试员,细分下去还有什么角色呢?
张益肇:一个产品开发出来,在项目管理、软件开发人员、测试人员之后,还要有做交互设计、用户研究方面工作的人,对这方面的人才我们也有需求。他们要能够真正考虑到用户的需求,以及产品的功能如何更好的使用等等。微软在交互这方面下了很大的工夫。一种技术要真正做到产品,让上亿人使用,对专精的程度要求是非常高的。