随着互联网行业的发展,以及目前市场和业务变化的速度,对业务敏捷性的要求也越来越高。随着敏捷开发方法逐步实践推广,互联网公司的产品开发能力也在逐步提升。
如何引导团队从产品开发视角关注到业务价值快速交付的视角,是很多互联网公司去实践的方向,通过限制在制品数量以及度量价值流,拉动团队关注价值流动的速度以实现业务的快速响应。
看板方法是支持互联网时代业务敏捷性要求的一个很重要的方法。
为什么是看板?
看板思想的核心:通过限制在制品数量形成拉动系统以暴露系统问题和瓶颈,度量价值流动以发现改进机会;并通过团队的协作,不断改进和演化出合适的流程、方法,实现高效、顺畅的产品开发价值流,最终实现组织业务的敏捷性。
看板方法的引入能带来多方面的变革。
对人的影响。对于关注价值流动这件事情,很多团队还无法做到,很多团队更多地还在关注和应对具体的一件件事情上,他们会接很多的事情,并行很多工作,缺少目标感;看板方法的引入可以改变人对自己做的事情有合理的理解和认识,建立价值交付的视角,对组织实现业务的快速交付会有很大的帮助。
管理方面的影响。每个人所在的组织中都有一定的管理规则和机制,每个技术团队也有自己的管理方法,但是大家对于这些规则的理解和认识是不同的,通过看板方法将这些管理规则和约束可视化出来,并且让团队中的每个人认识和理解这规则背后的意义,对提升管理的效率以及拉动团队中每个人的主动协作,相互配合会产生积极正向的影响。
流程方面的影响。虽然大家都理解流程是为业务服务的,有时候流程的定义会偏离这个方向,我们使用看板方法将价值流可视化出来,并且通过看板系统和WIP拉动系统暴露出流程问题和瓶颈,通过度量Lead Time来有效识别和发现改进机会,会使得流程越来越符合业务的需要,将流程的作用真正发挥出来实现业务的快速交付。
业务方面的影响。当组织中的人、管理和流程都关注在业务价值交付上,那整个组织的目标会达成统一,团队和部门之间的协作效率自然会有效改进,在这种情况下不只是某个团队所营造的系统,整个组织系统都在以业务敏捷性为导向的情况下运作,对于业务的影响和促进也就会自然发生。
实施看板的步骤
可视化工作流程
刚开始实施看板方法,团队使用卡片墙的形式就好,也就是所谓的物理看板,这就是可视化的过程。我们一开始的目的就是通过视觉设计便可传达足够的信息,使在团队级别上的整个系统能够实现自组织和自我加速。作为一种可视化控制机制,"卡片墙"可以促使团队成员自身主动过拉动工作进展,而无需经理们的管理干预。
看板的通常做法是在卡片墙每一栏标注在制品限额,低于这个数量,则发出一个拉信号。拉的任务同时要满足每一栏上面的完成的定义(DOD) 才可以移动。
专注于质量
你也许会发现,在敏捷宣言里并没有提及对质量的关注。但是你会发现,缺陷过多是软件开发中最大的浪费。
对于敏捷而言,必须注意质量内建。因为提高质量,会对高缺陷团队的生产力和交付率产生巨大影响,不然形式上的敏捷实践,你不会体验全部敏捷的好处,如同在沙漠上开跑车,你不会体验跑车带给你的速度,相反你会责怪跑车。就像你不做质量内建,告诉我敏捷没有用。
这里说的质量内建是360度的,不止是测试人员的责任,开发人员要养成编写单元测试的习惯;使单元测试自动化;测试驱动开发来提高代码质量;协作式的分析和设计;使用设计模式;静态代码、动态代码分析;减少进行中的设计数量等。
限制进行中的工件(WIP)
首先我们来看下为什么要限制进行中的工件,就是我们所谓的WIP?
首先说个结论:在制品和平均前置时间之间存在相关性,而且是线性关系。制造业中,这种叫做利特尔定理。前置时间增加,则质量会下降。在制品数量越多,平均前置时间越长。因此,提高质量的管理杠杆点是减少在制品数量。
另外,减少在制品数量或者缩短迭代长度,将对初始质量产生巨大影响。也就是说,随着在制品数量的的增加,缺陷数量会不成比例的增加。为期2周的迭代周期比4周的迭代好。较短的迭代会产生出更高的质量。
频繁交付
减少在制品数能够缩短前置时间。缩短前置时间,意味着可以更为频繁的发布可用的代码。频繁的发布代码,能够与业务干系人建立信任。
信任是一种很难定义的东西,但是确实格外的重要。社会学家称之为社会资本。信任由事件驱动,小而频繁的表现或活动,较之那些大而偶尔发生的表现或活动,更能增加信任。也能减少团队对于隐性知识的遗忘。
进行优先级排序
不知道你有没有发现,敏捷的重心这一两年慢慢由团队的生产率 (速率)转向业务价值优化。因为在软件开发中,你会发现对于把事情做对,更重要的是前提是首先做正确的事。所以在最新的敏捷指南中,速率不再作为 Scrum 实践的重点。
小结
看板方法是一门极富价值的事情。它能使得一个团队循序渐进的构建成熟度,成功的秘诀只要记住5步就好:
让团队工作全员透明,保持全员统一可持续交付的步伐
要学习构建高质量的代码
减少进行中的工作数量,缩短前置时间
频繁交付,建立信任,产生富余时间释放个体创造力
随着软件开发的顺畅运行和能力优化,通过改善优先级排序来优化交付价值。
我们的看板之旅还将继续,希望能将你带入这场探索之旅。