传统的软件开发过程中项目的计划都是由项目经理或者Lead做出然后交给团队去执行,执行过程需要经理或者Leader去控制,保证没有太大的偏差。这样造成的问题是计划和实际情况可能有很大的偏差,团队的声音可能无法真正被考虑,给项目造成很大的风险。为了控制不合理的进度计划而强制加班解决问题的方式反过来又会造成团队实际效率的下降,形成恶性循环。
自组织团队是诸多敏捷方法中比较集中推崇的一个概念,所谓的自组织,核心就在于使得团队自身可以根据自己的实际情况作出更多的团队整体决策;通过迭代和持续改进,不断演化,取得团队和项目的持续进步。
授权
自组织团队是去中心化的,这意味着团队成员必须开诚布共,有主动承担的意识。每个人都得到充分的授权,主动的发出自己的声音:
- 做迭代计划的时候,根据整个团度的实际情况,计划迭代的内容,而不是lead或者老板的命令;但是这个绝不是一个一开始就能达成的目标,每一个团队成员都需要不断的提高估算能力,通过渐进的过程提高估算的准确度,最终作出最接近实际情况的估算
- 团体整体做任务估计,而不是每个人只关心自己需要做的那一块儿,多个成员的估算可以相互补充,通过估算的过程提早发现问题,达成团队一致认可的估计,而不是一两个人的估计;估算的目的是为了列出需要解决的问题和任务,尽早防范风险的同时保证迭代进展的平滑
- 每个人需要认真负责,权利越大责任越大
- 集体代码所有权,每个人都可以平等的访问共享的代码-这样错误更容易暴露出来,得到纠正;某些人可以有某个领域的特长,但是同时需要对系统的其它部分也有个基本的了解,这样可以避免出现某个关键领域某个时候突然成为资源瓶颈却没法平衡资源
- 互相协助和工作轮换 – 成员需要保持互相协助支持的心态,不能各自划领地,造成孤立或者小团体;某个关键成员因为家庭原因请假,其他人也应该能分担一部分工作,这个能力需要在一开始就逐步锻炼
- 及时沟通,遇到问题及时请教而不是等待别人的问询,积极的心态和主动请教解决问题的意识需要很强的自律
- Lead和老板更多是承担服务性的角色,而不是权利中枢
- 个人的贡献和团队的贡献是挂钩的,积极主动承担的人更应该得到鼓励,帮助其它人成长者也属于重点奖励的对象
- 破坏团队团结的人,个人能力再强都很可能只是起阻碍作用
在基层团队没有得到充分授权的情况下,谈自组织就是很危险的,因为很可能决定都是别人作出的,团队成员根本不会心甘情愿为别人作出的愚蠢决定负责。只有做到充分的授权(也不能无限制的授权)才有团度的持续改进和效率提升。
回顾和反思
自组织团队需要定期的回顾和反思;通过迭代周期结束时候的回顾和反思,逐步改进组织中的薄弱环节,提高团队的实力和稳定性。譬如某个领域方面可能需要更多的人手但是专家有限,那么就需要尽早发现这个问题提前布局。对于短期内无法达成的改进目标,则需要制定长期的目标,每个迭代完成一小步,迭代结束的时候实事求是地总结和回顾,并展望下一步如何行动才能更有效率。
没有定期的回顾和反思,团队就会变得混乱,改进就不太可能真正有效地发生。
持续改进
持续改进是敏捷开发的灵魂之一;人是软件活动最重要的因素,但是没有一个团队在一开是就是完全胜任工作要求的。自组织团队注重于通过持续改进的方式不断提高团队的效率;通过个人和团队共同成长的方式达到个人和团体的共赢。
持续改进注重的是一次仅仅改进一两个细微的方面,通过多次的迭代逐渐强化和提高效率,最终达到长久的效果。一次改变太多是违背人性的规律的,容易导致应付了事的抗拒和运动式的浮于表面;一次仅仅改变一些很小的地方,大部分人都不会太抗拒;久而久之就能取得很显著的效果。
持续改进离不开定期的反思和回顾;回顾和反思本身也可以极大的帮助我们发现过程中的不足,做到更有效的持续改进。
基准测量和控制
保持高效的自组织团队需要很高的纪律性而不是想怎么做都可以。自组织团队的改进方向不能脱离企业的商业目标,一切改进都应该和企业的目标保持一致,因为赚钱才是企业的根本。个人的发展是需要考虑的因素,但前提是能够取得个人和团体的共赢;这样才能营造良性的自组织团队。
创造一些可以量化的指标可以协助团队朝着正确的方向迈进。Lean Six Sigma的理论认为我们需要通过定义/测量/分析/改进/控制这个模型来提高质量。自组织团队的演进同样也可以借鉴这个过程;通过组织特定的业务方式来定义和度量什么是目标,分析其中的不足,组出持续改进并控制这一过程保证其朝着正确的方向前进,才更可能取得成功。
文化
文化因素可能有时候会起很大的阻碍作用,但是未必就有人们想象的那么无法克服。思维方式的转变可以克服这些困难,譬如如果授权团队可以对自己一个迭代的工作有更多的话语权,可以根据自己认为的实际情况对开发计划做团体决定,而不用为Lead或者老板的愚蠢决定在迭代末期忍痛加班,那么大部分人还是会愿意提高自己做计划的能力,尽量让自己的工作更为平滑,这是一个双赢的过程。
引导团队作出积极的改变,减少自留地,尽可能得保持信息公开,授权团队作出应该由团队作出的决定,我们就可以逐步将团队引导至自组织的良性循环。