2006德国世界杯已落下帷幕了,但空气中还散发着足球的味道,在巴士、在餐厅人们还依然议论着十大魅力进球、意大利的幸运和齐达内的红牌罚出……没完没了的世界杯。但渐渐地,一种失落正慢慢地爬到我身上,里面夹杂着或远或近的思绪。是巴西、阿根廷过早地离开?还是德国坚强的战车没能冲到顶峰?或许是往后的几个月、甚至四年,我们将缺少一份在世界杯赛中所具有的那份激情、那份期盼……在众多的思绪中,想得最多的还是足球给我们的启发,给我们软件团队建设和管理的启发。
足球和团队建设的关系,不是牵强附会的,有一件事件可以证实。2005年,英国皇家人力资源协会在其年会上特意请来了埃里克森,给众多的、职业的人力资源经理做了一个培训,题目就是《怎样让你的团队出色发挥》。在会上,埃里克森对管理足球队的成功经验进行了概括性总结,只有三点:要有优秀的球员,尊重球员,行事要简单。虽然是三点,但每一点都是经典。如果把这三点引入到软件团队管理中,其解释是:要有优秀的软件工程师,正如PSP强调的个人能力和素质,队员是团队能力的来源。尊重每一个技术人员,也就是尊重“人是最宝贵的财富”格言,以人为本,充分调动每个人的积极性和主动性。简单的流程和模式。简单的可能是最好的,如敏捷方法所倡导的那样。 故事过后,下面让我们从足球展开讨论团队建设和管理。
1.团队分工明确又灵活
在足球队,分工明确,由前锋、中场、前卫、后卫、门将等不同角色组成,组成442、433、4312等阵容,各司其职。前锋主要任务就是进攻、后卫主要责任是防守,但有时这些角色也发生变化。由于球场情况瞬息万变,后卫有时参与进攻而直接射门得分,后卫线有险情时,前锋也有必要及时回防。
高效的软件团队也设定不同的角色,如架构师、设计师、程序员、测试工程师、项目经理等。一个软件团队需要由不同技能的人员构成,如架构师需要丰富的经验和全面的技术,而项目经理需要良好的沟通能力。虽然团队分工不同,但需要整个团队成员的协作努力才能保证整个团队的高效运作。一方面大家工作重心和侧重点是清楚的,但各自的分工也不是绝对的,相互帮助、相互支持,使整个团队更有效地、高质量地完成任务。
2.团队文化和精神
没有良好的团队文化,软件产品是很难成功的。德国战车一如既往的继承了钢铁般的意志力、踏实和严谨,获得了好成绩——季军。事前,人们认为德国队进入八强,就战绩不错了。而阿根廷的点球失败,从侧面说明了其队员的心理素质不够强、意志薄弱。韩国队、日本队也表现出良好的团队精神,而中国队就缺乏团队精神、缺乏顽强斗志的精神,在许多比赛中得到印证。
激励是一种文化,良好的文化讲究激励,以激励、引导为主,不断促进团队的士气、积极性,而很少使有惩罚。在软件团队中,我们可以一天送出一个“胡萝卜”(寓意奖励),通过走到工程师前面口头表扬、通过邮件向大家表扬某个人、设置游戏奖励优胜者、不断征求大家意见、将结果反馈给大家等等,以此激励团队。
3.团队的能力
有经验的球队,首先对如何踢好下场球以及每个球员在其中所承担的角色取得共识。足球赛是真正的一个团队工作,缺乏团队能力,靠个人能力是不能取胜的。巴西球队中的大牌球星无数,但不是人们想象的那样可怕,其整体缺乏配合,进攻能力不强。而厄瓜多尔没有大牌球星,两场球赛均是大捷,不失一球,其结果完全来自于优秀的团队配合。如果一支球队不懂得配合,疲于奔命,就不容易赢得比赛。
很多开发团队不乏能人和高手,但缺乏定义清楚的流程、缺乏主动沟通和密切协作,团队整体实力不强。软件的开发,越来越需要团队整体的能力,需要明确的分工又需要默契的配合。软件测试,则更依赖于严谨的团队工作,任何一个人的失误,会造成前功尽弃。高质量的产品,来自于每个开发人员的前期努力、每个测试人员的兢兢业业。
为了增强团队能力,团队每个成员的技能应该构成一个互补的关系。对于软件团队,需要系统平台、数据库设计、算法、编程和流程管理等多方面的人才,才能形成具有很强团队能力的团队。
4.执行力
软件测试经理,有时如同足球教练,看到自己的策略没有得到贯彻执行,足球队长或场上球员没有控制好进攻的节奏,教练只能站在场外,望球兴叹、无可奈何。如何提高执行力呢?如同埃里克森所说的,要有优秀的队员,这是基础。然后,需要一系列的方法和先进的团队文化来保证、提高团队得执行力:团队领导要让每一位团队成员真正理解要执行的策略,需要一个人一个人地去询问并得到确认。团队领导要尊重每一位团队成员,尊重了成员,成员也就尊重领导,领导的意图才能得到不折不扣的贯彻。及时吸取教训,总结经验,不断改进操作方法和工具,在技术上提高执行力。有清楚的目标、有效的方法、公平的环境、不断的激励等等。
5.风险控制能力
足球的魅力,很大程度上来源于足球场上的变数。足球场的变数很多,这些变数对于教练、队长或球队,就是一种风险。要赢球,就是要控制好风险。软件团队的管理也如同足球比赛,渗透了风险管理的艺术。在软件开发中,要追求效率和生产力,同时要降低质量风险,更重要是在效率和质量上达到平衡。软件何一个人的失误,会控制球场的节奏,也是避免风险的一个好办法。对于软件开发一样,也需要控制开发的节奏。一个优秀的球队,针对不同的对手,要变换战术,变换节奏。在软件开发中,团队也要考虑产品发布不同的类型,一个全新的产品发布策略是不一样的、节奏要慢些。对于解决产品问题的补丁包的发布,则节奏一定要快,流程要简单、有效。
6.团队需要核心,而且只能是一个
团队需要有核心,法国赢巴西就说明了这一点,因为法国有像齐达内这样的团队领袖,形成团队的核心。如果存在多个核心,可能就会形成派系或引起内耗。巴西球星太多,有“大罗、小罗”,反而缺少配合、缺少进攻能力,可能不如只有一个“罗”,这样也许战术更简单,传球目标也清楚,反而会使团队更有战斗力。
对于一个团队的领导,确实要技高一筹、有很强的领导力,才能以技服人、以德服人。国内许多项目经理,没有很好的开发和测试经验,很难领导好一个项目,只能起着协调、监控作用,对于项目中出现技术路线上的重大问题、设计上的严重缺陷,丝毫没有办法,或不能发现。所以有些公司开始设置工程经理(Engineering Manager),让一些技术和管理都很强的人来领导项目的开发。
7.持之以恒的力量
持之以恒的力量也是巨大的。在德国和阿根廷的比赛中,德国战车永不放弃的精神和努力得到了回报,克劳泽的进球扳平了比分,虽然比赛场面被动,德国人还是将比赛拖入到加时赛、点球大战,最终获胜。软件团队也会经常遭遇困难、陷入困境,当团队遇到困难时,如果团队的骨干成员选择“离开”,团队就会一蹶不振,甚至连罚点球的机会都没有,就消声匿迹了。如果坚持下来,不懈努力,等待机会扭转局面,就可能大获全胜。如网易、搜狐、新浪等网站曾遭遇互联网的严寒,几乎要被Nasdaq摘牌,但由于他们坚持下来,如今其股价、市值获得了几十倍的增长。以至于今天,我还时常听到同事说,“如果当初买了网易股票,现在就发了”。
8.团队的目标管理
团队要有一个清晰的目标,而且不同的阶段有不同的目标,这恰恰是最为关键的。在世界杯上,许多优秀的球队,包括德国队,在小组上不去想后期的淘汰赛,而只是设定小组赛的目标——如何在小组赛以第一名出现,一场一场地打,把小组赛每场打好。在淘汰赛,也是针对当前对手制定策略,赛前充分做好准备,一步步实现目标,胜券在握。还是德国队对阿根廷那场比赛,在守门员莱曼准备走向球门前,德国队的工作人员塞给他一张小纸条。纸条上写了什么?就是两年来阿根廷所有队员罚点球的习惯。所以,莱曼才能一次又一次判断对了阿根廷球员罚点球的方向,有出色的表现。
在软件开发中,设定总体目标,然后再进行分解,比如将目标分解到每个团队。更好的办法是将目标分解到每个里程碑,分阶段逐步实现。要实现目标,仅有“分解”是不够的,必须得到上、下层的支持,整个团队共享目标,心往一处想、劲往一处使,共同努力,最终保证目标的实现。