结对编程对于塑造团队文化的思考
结对编程对于塑造团队文化的思考
文中所用图片来自网络
结对是敏捷实践中基础实践,几乎每个转型团队都会实践结对,对于敏捷团队而言,结对究竟传递了什么样的信息。Bob大叔在他的《敏捷软件开发》是这样描述结对编程的:“这将极大地促进知识在团队中的传播。仍然会需要一些专业知识,并且那些需要一定专业知识的任务通常需要合适的专家去完成,但是那些专家几乎会和团队中的所有其他人结过对。这将加快专业知识在团队中的传播。这样,在紧要关头,其他团队成员就能够代替所需要的专家。”
结对传播知识已经被大多数团队证明是非常有效,除去传播知识的作用,结对编程还能为团队带来些什么变化?
英雄史观 vs. 群众史观
在日常工作中,我们谈论最多的是团队协作,可当我们开始讨论一些软件领域的成果、创新时,我们下意识的反应透露出却是与团队协作截然相反的信息,这些信息中弥漫着个人英雄主义的情愫。关于这一点,我们随便举了例子就可以得到验证,比如当我们说起Linux时,头脑中最先浮现的应该就是下面的这位仁兄——Linus Torvalds,对,没错,就是他,可再让我们仔细想想是不是缺少了什么,显然我们中的大多数人都忽略Linux成长的社区、开发的团队。
这种个人英雄主义的气息甚至在我们谈论一些令人厌恶的事实时也会出现,比如当我们谈论加班时,往往使用的句式是“你造吗,XXX这个月的加班时间是XX个小时,排名第一”。
这就是我们这个行业的现实,“团队协作”的概念在软件行业里要比其它行业落后几十年,这不是个玩笑话。整个行业中,英雄崇拜思想依旧盛行,个人英雄行为仍然被鼓励——到处都可以看到那些通宵加班的人,都可以听到团队私下抱怨贡献不平衡。如果再遭遇糟糕的团队管理,那就只能让团队所有人在阴郁的环境中越陷越深。
为何软件行业的英雄史观会如此浓郁,回顾软件行业的发展史,不难找到答案。软件行业作为一个新兴领域,诞生于人类知识金字塔的顶端,从诞生的那一刻起就被刻下精英和天才的标签,并在短短不到百年的历史中获得长足进步,确实依赖了一个个璀璨耀眼的天才和英雄,他们创造了一个个奇迹,改变了世界的面貌。这也就不奇怪为何英雄史观会占据软件行业的主流,甚至于圈外人也把软件行业看作是独行侠、黑客与怪咖的集散地,看看好莱坞拍摄的电影《剑鱼行动》、《超脑》、《黑客帝国》中描述的软件天才或黑客,都把这种英雄史观表现的淋漓尽致。
更重要的是,软件行业不是社会化大生产时代的工厂流水线,它不是机械化和一成不变的,开发人员也不是流水线上的拧螺丝的工人,而是充满了奇思妙想的精灵,充分发挥每个精灵的魔力是所有软件公司梦寐以求的。个人英雄主义,毫无疑问,激励了一代代的软件从业者去充分激发自我力量,站上令人瞩目的舞台。但让我们再看得远一点,看一看每个成功的背后,究竟是谁推动了它。
将军赢得战役,人民赢得战争
追溯软件行业的壮大历程,可以看到这样的数据,自20世纪80年代以来,欧美发达国家广泛兴建高科技工业园区,例如,硅谷自1992年以来创造了20万个就业机会;硅谷从业人员的年薪平均达46万美元,比美国平均水平高出50%;仅在1997年,硅谷的风险资本投资额就增长了54%,硅谷的企业市值1997年超过4500亿美元,一跃成为美国经济新的发动机。这个汇聚了全球顶尖软件企业的地方,给出了真正让软件行业蓬勃发展的原因——越来越多的人参与其中,正所谓众人拾柴火焰高,软件行业从象牙塔走向了大众。
这因如此,才会有社区、团队,才会有“群众路线”,它们从各个维度完善了英雄创造的奇迹,并使它可持续地演进下去。所以在感慨英雄的伟大时,还需要思考真正让软件行业枝繁叶茂的力量——群众,也即是来自不同社区和团队的开发人员。
所以软件行业的团队协作完全不同于其他行业,它融合了个人英雄主义的绽放和团队协作的汇聚,任何片面地只注重某一方面的特质都会产生问题,前者造成了团队一盘散沙,各自为政;而后者导致同质化,平庸,缺乏创造力。
团队气质
我接触过不少团队,也在不少团队中工作过,在和这些团队相处的过程中,不同团队散发出的不同气质让我着迷,透过这些气质可以发现团队所处的环境。将我遇到过团队气质归纳后,大致有以下几种:
自健型 自健型团队的最大特点是尝试不断改进,团队成员凝聚在共同愿景下,愿意为实现它去提升自我、改变自我。公开透明地传递信息,成员充分表达各自意见并获得尊重,相互信任,遇到挫折,总能向着正面积极引导。
自恋型 自恋型团队充满对荣誉的渴望,喜爱接受挑战,希望得到外部的推崇,但往往无法接受外部的批评、建议,团队内部呈现出专制化,团队的愿景来自团队领导层的个人想法。最典型的表现就是当有人问起团队表现的如何时,得到的回答是“我们团队做的很好啊,没有什么需要改进的地方”。
恐惧型 恐惧型团队通常死气沉沉,开发人员不愿讲话,不愿与别人交流,也不愿与别人合作,更不要说提高他们的工作质量。如果团队长期遭遇较大外部压力,积累的疲惫和厌倦就会转变为恐惧,恐惧让人无法集中注意力,不能思考,认知和表现都处于低谷,一旦遭遇挫折,负面情绪爆表,通常遇到的一些长期加班而又无法获得认可的团队都会流露出这样的气质。
阴郁型 阴郁型团队与恐惧型正好相反,团队内部的不可调和的冲突是造成团队阴郁气质的根源,并且通常是由于团队领导层的碰撞引发团队成员的不适和缺乏安全感,人心涣散,分崩离析,私下充斥着各种抱怨和流言。
团队成员的行为造就团队气质,团队气质又反作用于团队成员。团队中任何一个人都会影响到整个团队的整体氛围,也就是人们在工作时所进行的情绪交流的总和。不管我们在团队里扮演什么样的角色,我们的工作方式、交流方式都会影响到团队的整体氛围。特别地,对于团队的Leader对于引导团队气质更有着不可推卸的任务。
思考
人类几乎从出生到死亡都被种种虚构的故事和概念围绕,让他们以特定的方式思考,以特定的标准行事,想要特定的东西,也遵守特定的规范。就是这样,让数百万计的陌生人能遵照着这种人造而非天生的直觉,合作无间。这种人造的直觉就是“文化”。——《人类简史》
当我们谈论软件开发,实际上是谈论人,它实际是软件开发者的一种社交活动。既然是社交活动,自然而然就会有言语上的沟通和思想上的碰撞,其产物就是被某个范围内人群认同的文化——团队文化。因此团队文化真正关注的是发生在开发团队各个方面上的一系列的行为和交互,它影响到决策的如何产生,谁会参与决策,以及决策对业务经营承担哪些责任。
上面谈论英雄史观、群众史观、团队气质都属于团队文化的范畴,团队建设的核心就是构建团队文化。正如罗马不是一天建成的一样,塑造团队文化是一个潜移默化,日积月累的过程,在这过程中间,适度的正向引导可以让团队文化向着更加健康的方向发展,而结对恰恰可以为正向引导提供需要的土壤和时机。
可以尝试将结对作为是团队合作的核心思想,发挥它的知识传递的作用,结对搭档间可以建立一条高速交流通道,例如:可以给菜鸟开发人员搭配个大神以此来培训他,这样核心开发人员可以在团队中快速传播最佳的实践经验和技术知识。这样,新的工具与技术自然而然就可以在团队中得到分享,每个人都会进步,这只是第一步。结对建立的分享通道并不是单向的,程序员之间分享程序里的各种知识,能更严格的要求自己,能更好的相互交流,更好的协作,因为每个人都想在他们尊重的人面前表现出色,这是做一名结对队友的责任。自我改进,是团队自组织的起点。
当有条件选择教练或者咨询师结对时,传递的知识就不仅限于软件技术,可以拓展到工作方法、沟通技巧等领域,通过结对施加正向影响更容易解决结对伙伴的实际问题。
持续结对打开交流的通道,开放的讨论取代从上至下的命令,信息的对等和透明使得更容易做出策略决定,同时也会带来更好的工作气氛,结对双方都不会轻易的选择捷径,经常会就某个问题进行权衡讨论,团队成员会愿意接受这样的“民主”氛围,积极参与,群策群力。
相信大众智慧是最佳方案
相信充分参与是最佳执行力
结对编程可以共同分担每天工作的压力和精力。每个人都有过这样的经历,有时工作状态的起伏都是相互的,当一个人工作正起劲而另一个分神时,状态好的可以帮助另一个集中注意力;而当两个人同时注意力高度集中时,工作效率就会达到顶峰,结对的伙伴互相可以依靠、信赖。
持续交叉结对促使代码在团队所有成员手中流转,打破“专属”、“独占”这些不适合团队的概念,让集体所有权深入人心。同时合作完成的代码让风险均摊到每位成员身上,使得整个团队能以更积极的心态面对失败。
结对使得个人英雄主义与团队协作有机地结合到一起,各取所长,相互扶持,铸就“自助、人助、天助”的成功团队文化。