从软件开发看中美文化的差异

收到编辑的约稿,让我忽然回到了20年前,我第一次赴美国学习的时候。当时,美国高校中的计算机和软件学院已初具规模,加州硅谷 的苹果公司、微软、和IBM初露峥嵘,而具有信息革命里程意义的领军软件-Windows操作系统第一个版本也刚刚发布。

在美国的20年,其间有幸见证了美国软件行业的高速发展,也亲历了纳斯达克网络泡沫的破灭。越来越多的中国留学人员通过自己不断 的努力和探索,已经成为美国软件业内的中坚力量和重要支柱。在硅谷,大多数IT公司的研发部门中,华人的比例都超过了10%。曾经有一项调查表 明:2000年,在硅谷的7000多家电子及软件公司中,有1/5的工程师具有华人血统。有时,我们会开玩笑说:“如果想进硅谷的大公司,说你找 Michael陈、David李、Cindy王,几乎都能找到人。”

互联网时代的到来,再次加速IT行业的快速发展,推动了一大批新生企业的成长,越来越多的华人学者踏上创业之旅,其中不乏很多成 功的案例。美国的 San Jose Mercury News杂志每年都会出一个硅谷地区150家最大的上市公司(按销售额排名)专题,称为SV150(Silicon Valley 150)。2007年的SV150公司排行榜中,华裔创办的公司已经达到16家,包括Synnex、Nvidia,以及之前被收购的WebEx和 NetScreen等等。我们不难看到,海外华人在创业历程和团队合作中所体现出来的勤奋、坚强、和组织纪律性等良好品质,为这个团队、乃至整个企业最终 获得成功,起到了不可忽视的作用。

中美开发团队的特点

2005年底,在经过多次回国考察和评估后,我和公司的管理团队决定在北京建立TechExcel中国区研发 团队。经过2年多的发展,中国的团队已经成为亚太地区的研发及客户支持中心。在此过程中,我一有机会就会到北京的办公室,与开发人员进行沟通,他们身上表 现出的优秀品质让我感到非常欣喜。然而,我也发现了很多欠缺的地方,我也会及时指出来。我真正希望的是,中国的开发团队能快速成长起来,让越来越多在国内 的开发人员成为TechExcel的中坚力量。

因为长期从事应用生命周期(Application Lifecycle Management, ALM)领域的研究工作,所以我更喜欢从方法论的实际应用以及软件开发的角度来观察中国和美国的团队间的差异。

团队建设

在国内的开发团队中,硕士学历的人员的比例远远高于美国团队,在有的团队中,与本科生的比例甚至达到了一比 一。与美国本土的开发人员相比,国内工程师的理论知识以及逻辑思维的优势非常明显。他们可以快速掌握各种新的软件技术,用来辅助编程工作,提高开发效率。 相比而言,西方国家的软件工程师更倾向于发散式思维方式,对于运用逻辑思维处理复杂的数学运算,他们稍逊一筹。

受传统文化的熏陶和影响,中西方开发人员的性格也有差异。中国员工对技术开发任务的专注性相对集中、有毅力, 每位成员能够按照上级指示,在有限周期内合作完成庞大的工作任务;所以,中国开发团队的合作方式注重默契,即彼此成员在和谐的氛围中达到预期目标。与中国 团队不同的是,欧美开发团队更重视合作效率,即在有限的工作时间内确保开发任务的完成,并且通过成员间的互动沟通方式来增进对任务的理解、解决问题。

在团队分工方面,中西方的管理模式也存在很大差异。通常情况下,国内开发团队的管理者,是整个团队中的核心领 导人物,是团队成员公认的权威代表;他会根据成员特点和技术级别来分配开发工作,因此,团队成员在接收分配任务的时候通常显得比较被动。此外,国内管理者 善于站在领导者的角度积极鞭策团队开发进度,充分发掘每个成员的潜在特质。而在欧美国家,团队领导者与成员间的界限比较模糊,更趋向于一种服务型的领导, 管理者鼓励团队积极提出问题、发表见解,而自己更希望能够为团队提供服务,帮助成员解决困难。同时,管理者允许团队成员主动申请项目任务,他会基于申请者 的综合能力进行工作分配,尽可能地满足所有员工的申请要求。

工程师职业规划中的选择 

在中美两国的IT企业中,都不乏一些技术狂热者。由于整体经济、教育水平等方面的差异,美国企业中技术专家、 高级技术人员的比例较高,也不乏一些具有10-20年开发经验的资深技术人员。在中国的团队中,工程师在从事了5年以上技术工作后,在做个人职业规划时, 常常会向管理方向倾斜。 

这样的差异会带来两种效果。首先,体现在新人和团队的培养上。高级技术人员能够在团队中营造出良好的技术学习 氛围。若有一个新毕业的工程师进入团队,经验和资历丰富的工程师将帮助新生力量快速成长,提高团队整体实力。另外,技术狂热者对从事的工作有巨大的、超乎 寻常的激情,这也将大大提高整个企业乃至于整个行业的创新能力,这也是美国出现了很多像Google、Microsoft、Facebook这样的创新性 公司的原因之一。

客户意识

对需求的理解,是一个软件或项目的根本。当项目进入产品设计阶段时,国内的团队多会以技术的角度看问题,希望 产品的整体功能更加强大,结构更倾向于开发人员心目中的完美产品;其设计初衷是,无论客户需要哪类解决方案、或者需要什么先进功能,都能通过使用这款软件 实现。然而,成功的商业软件/项目,最终都应该是满足客户或甲方的需求。在这一方面,欧美国家的整个团队都非常重视对需求的理解。这不仅仅是需求分析师的 任务,开发人员应也应具备良好的客户意识。例如,在敏捷方法中,倡导每一次迭代的产物,都是对客户有价值的。因此,对客户价值的重视,才能真正落实到开发 工作中。

项目实施

最近几年,敏捷方法在国内外都非常流行,敏捷的各种方法中提供了很多非常实用、易于实施的方法,在项目管理中 能够用到。然而,在实施过程中,中西方的团队也体现出来很大的不同。例如,在实施敏捷的过程中,鼓励由开发人员自己进行评估任务完成的时间,项目经理和组 长收集所有的任务时间评估报告后,经过数据统计和项目基线比对来把握项目进度和预计交付日期。而在国内的团队中实施敏捷时,包括项目经理和组员多会就这一 点提出质疑。因为在国内的项目中,项目经理和组长更善于通过限制项目和任务的时间,鼓励团队成员在有限的时间段内高效率完成开发任务,从而达到项目的预期 调控目标。

类似的情况也发生在项目任务的分配过程中。崇尚冒险(take risk)是美国文化的重要体现之一,所以在任务分配过程中,多由团队成员主动申请承担/负责某个任务,项目经理和组长根据申请人的要求酌情分配。而在中 国的文化中,更欣赏的是中庸、稳健。如果照搬这种任务分配方法,即便是团队中技术最好的工程师,可能会存在顾虑去“认领”最难的任务,而更希望项目经理根 据团队成员的实力来分配任务,从而承担起项目中的重任。事实证明,这样的管理方法在中国团队中使用是非常有效的,很多时候还能激发开发人员的潜力。

质量控制

QA团队肩负着质量把关的重要任务,在这一点上,中美软件开发团队的差异较大。在中国的团队中,测试人员数量 较少,发挥的作用也相对较小,在中小企业和中小团队中尤其明显。在很多中小型软件企业中,开发人员的数目在20-50人不等,而测试人员的数量一般只有 3-10人。

另外,针对测试过程中发现的开发漏洞或产品缺陷,中西方软件团队的部门间沟通效果也不尽相同。由于国内团队中 测试人员较少,一个测试人员可能需要同时负责4到6个开发人员的测试任务,强大的工作负荷经常导致测试人员不能与相应的开发人员进行沟通,容易出现问题解 决时间的延迟和耽搁。而欧美开发人员与QA人员规模相当,相对而言,测试人员更能集中经历做好自己负责的内容,及时指出开发任务中出现的质量问题、与开发 人员深入沟通、跟踪产品缺陷修复情况,按照规范的测试工作流程来确保产品质量。

【结语】

中国的IT行业最近几年飞速发展,在软件外包、行业信息化以及互联网等领域体现的尤为明显。在看到进步的同 时,我们也要正视与欧美国家的差异和差距,例如在行业软件、商业软件等领域,国内成功的企业和产品还比较少。中国的软件企业正在为提升软件及项目质量而不 懈努力,每个企业都在为提高中国的软件行业竞争力作出贡献。

作为一个中国人,这些年来,我有幸亲身感受中美两国在软件领域的一些优势和不足,也体会到中国软件企业在发展 中遇到的一些问题。我认为,要解决这些问题,我们需要结合欧美软件行业中先进的管理方法和技巧,充分发挥中国开发人员的优势和特长,提高整体水平。多年 来,我也一直坚持从事在ALM领域的工作,也希望能在这个领域为行业做出贡献,同时也能为正在高速成长、拥有巨大潜力的中国软件业进绵薄之力。

【作者简介】

周铁人,TechExcel公司CEO兼首席软件架构师。周铁人博士是“以知识为核 心”的应用生命周期管理(ALM)领域的专家,倡导以标准开发方法、ALM平台和项目团队三位一体的项目管理理念,来指导有序和高效的软件设计规划和开发 过程。他于 2007年4月荣获中国软件行业协会授予的“2006 年度中国软件企业十大领军人物”称号。