Share via


从卓越工程的角度看微软中国开发团队的成长 (一)

    在进入正题以前,我们来想象一下人类祖先在石器时代后期开始种植农产品的情景。最早发现农作物可以种植的人类祖先可能不小心把种子掉在地上,第二年春天雨季后发现长出了植物并结出果实,而秋天的收获激励他们有意识地在下一年去重复这一过程,他们挖坑埋种子的工具是石质的。经过很多很多年的进步,人类经历了农业革命、铜器时代、工业时代,直到现在的信息时代;播种农作物的工具由石质发展成铁质、钢质,由铲发展到犁,由牛拉的单犁发展到机械化拖拉机拉的多排犁;农作物种植的过程也由根据节气听天由命发展成机械灌溉、大棚种植和基因工程等现代种植方法。然而不管它怎样发展,有三样东西贯穿始终,那就是人、工具、方法或过程。

    同样,一个工程系统也是由人、流程和工具组成的。人在这个系统中是最重要的因素,因为流程是由人来制定的,工具是由人来使用和操作的。但这并不是说,系统中只有人就够了,流程和工具都不需要了。流程可以帮助避免因人的主观因素而产生的错误,工具可以比人工手动成百上千倍的提高效率,所以人、流程和工具在一个工程系统中缺一不可。工程在计算机软件领域是指采用系统的流程来设计、开发和传递产品及服务。卓越工程是指在工程上能达到杰出和优异。既然软件开发也是工程范畴的,那么开发团队的成长也就离不开优秀的人才,简捷有效的流程,和高效率工具这三个卓越工程系统中的重要因素。当然开发团队的成长还包括沟通、团队协作、团队文化和团队士气等等。我在这里只从工程系统中的三个重要因素来谈。

 

优秀的人才组成优秀的团队

    一个团队的建立需要有合适的成员加入。从招聘开始就对人才进行严格的挑选,微软的招聘哲学是要“最好中最好的”。那么什么样的人会加入我们的团队?正直诚信、有责任心、尊重他人、对客户和技术有热情、自我完善、敢于接受大的挑战、有想象力和创造力等等。当然以上是基本素质,我们也要看设计、编程和测试等能力,这是因为我们是软件开发团队,软件开发的基本能力是非常必要的。

    微软招人看重的是个人能力和团队协作精神,学历并不是最重要的。我在微软亚洲工程院工作的时候,曾邀请一位美国团队资深架构师为工程师们做讲座,他在自我介绍中提到他没读完本科,我开玩笑说微软的架构师好像都没读完大学(大家都知道比尔盖茨先生没读完本科就从哈佛出来创办微软,他退休前的职称就是总架构师)。我举这个例子不是想让大家都从大学辍学,我也认识一些微软架构师不但读完本科还拥有硕士或博士学位,我想说的是学历可以说明一个人在学校取得的成绩,但不能代替工作能力以及在工作中能获得的成果。

    微软员工入职后会参加入职培训和其它一些培训,但培训本身并不能使员工马上适应工作。员工入职后的前三个月通常会有一个“良师益友(Mentor)”,由有经验的老员工担任,帮助新员工熟悉工作。员工会被安排一些具体任务来“导入”以后需要做的工作。员工以后的职业学习和成长也是由培训,向其他人学习和工作中的锻炼组成的。工作中的锻炼占绝大部分,向其他人学习次之,培训只占一小部分,培训中的内容如果不通过工作中实践很难变成自己的东西,所以在工作中的锻炼成长最重要。当然向其他人学习,包括向“职业良师益友(Career Mentor)”学习有很大益处。“职业良师益友”是一些愿意帮助别人的资深员工,他们可以给员工的职业发展出谋划策或用自身做榜样。这些是员工入职初和以后成长的一个基本模式,每个员工的道路不尽相同,但有一点是相同的,那就是员工作为自己职业发展的驱动者要自己寻找锻炼的机会,经理提供帮助和指导,公司提供支持。

    我刚加入服务器与开发工具事业部中国团队时,第一个向我汇报的员工对编程很有激情,他从12岁就学会用BASIC语言编程,大学时主修计算机,之前在一家外企公司做了两年软件开发工程师。一进入我的团队,就被分配到一个全新项目组,所以我们没能为他指定一位项目上的“良师益友”。但他并没有因此而退却,主动向美国团队要了资料,又找了相关的书来读,很快就上手开始修漏洞了。他还把所学到的知识整理、编写成文发表在MSDN杂志上,让更多的人来了解这项技术。没人期望一个还处在熟悉一项技术过程中的工程师写成这样一篇文章,并能发表在MSDN这样重要的期刊上,当然也包括我。在写这篇文章的过程中他既锻炼了自己,也展示了其自学能力, 最重要的是他给自己创造了成长的机会,通过给自己不断地创造成长机会,他很快成为一个技术骨干,大家有问题都会去问他。

    中国开发团队大多由年轻人组成,是微软分布式开发中的新生力量。我们通常会向美国团队 “借用”几个资深工程师来这里帮助招聘和训练本地员工。当然,我们也会把优秀的中国员工送到总部做短期融合培训,主要是和美国团队一起工作,了解公司文化和产品开发流程,以及与美国同事建立良好合作关系,便于以后开展工作。今年三月,我在组建WinForms(Windows Forms, .NET平台的一部分)团队时,就有三名本地员工前往雷德蒙进行短期培训,之后加入的新员工也通过阅读各类资料、动手实践来掌握WinForms的开发测试,如调查并修补漏洞,分析并写测试用例等。美国资深测试主管也受邀来上海帮助员工增加在这个领域的知识,熟悉开发流程和提高技术能力。同时,员工之间也定期交流各自的学习心得共同提高。当然,在共同发开产品的过程中,与美国同事之间频繁的视频、电话会议也帮助我们年轻的工程师们更快接手更多新工作。目前,拥有一名经理,一名项目经理,三名软件开发工程师,三名软件开发测试工程师和七名外包软测试工程师的WinForms团队已初具规模,承担了WinForms全部主要测试任务,并且可以开始修补漏洞和新功能的调研工作。这个团队能在很短的时间内承担起重要的任务,有成为一个优秀的团队潜力,虽然还有很长的一段路要走,但为今后成长为优秀的团队奠定了扎实的基础。

 

部门经理 徐鹏阳

备注:近期将更新《从卓越工程的角度来看微软中国开发团队的成长 (二)》