在软件开发实践和互联网的发展中,一直有新的工作方法论不断涌出,有不少的先行者在积极地探索着。敏捷方法和精益方法正是近十几年来,从这波潮流中涌现的最精彩夺目的两项成果。敏捷方法和精益方法的大伞,覆盖多种软件开发方法学,其中最具代表性的有Scrum、极限编程等。而看板的管理方式正式敏捷实践中极具代表性的敏捷开发方式。
敏捷开发是软件开发和项目管理等场景中经常用到的一种迭代方式。通过对「需求」「迭代」「缺陷」等环节的管理,将项目拆分成易于实践的任务,从而持续高效地帮助项目落地。
看板管理亦称“看板方式”、“视板管理”。在工业企业的工序管理中,以卡片为凭证,定时定点交货的管理制度。“看板”是一种类似通知单的卡片,主 要传递零部件名称、生产量、生产时间、生产方法、运送量、运送时间、运送目的地、存放地点、运送工具和容器等方面的信息、指令。一般分为:在制品看板,它用于固定的相邻车间或生产线;信号看板,主要用于固定的车间或生产线内部;订货看板 (亦称“外协看板”),主要用于固定的协作厂之间。
看板(或卡片)的数量,等价于系统设置(核定)的流通能力。一张卡片与一个工作项关联。每张卡片都充当一种信号机制。只有获得一张自由卡片(free card)后,才可以开始新的工作项。这张卡片与该工作项关联在一起,跟随工作项在整个系统中一起流转。当自由卡片没有剩余时,就不能开始额外的工作。任何新到达的工作项必须在队列中等待,直到可以获得新的自由卡片。在某项工作完成后,和它关联在一起的卡片就与之分离而被回收。有了自由卡片,队列中的新工作项就又可以启动。
其实看板简单来理解就是将一个事情分成不同阶段,每个阶段是一个看板,而看板中的看片就像是一个个手写的待办事项便签。
看板墙已经成为敏捷软件开发中流行的可视化控制机制,如图所示。无论是使用在软木公告板上钉索引卡片(index card)的方式,还是通过在白板上贴便事贴的方式来跟踪进行中的工作(WIP),都已经是司空见惯的事情了。值得留意的是,这些卡片墙本身并不是看板系统。它们仅仅是可视化控制系统(visual control system)。它们让团队以可视化的方式观察在制品并进行自组织(self-organize),无需项目经理或产品经理的指令,便可自行分派任务,将工作从待办项列表中移向完成状态。但是,如果其中并没有明确限制在制品数量,也不能在系统中发送信号拉动新工作项,那么这个系统并不能算是一个看板系统。
所以为了更好的通过看板实现敏捷开发,我们需要一个简单的可视化控制系统。一个简单的系统可以企业成员减少上手的成本尽快上手同时可以使整个公司更快向敏捷转型。
CODING 企业版是面向开发团队的软件研发管理系统,一站式提供需求管理、代码管理、持续集成、开发环境管理、测试管理、缺陷管理等功能,适用于传统模式和敏捷模式的软件研发项目和产品运营,助力企业实现 DevOps。CODING 企业版中已经内置了一个简易的看板管理。
例如上图就是一个 Bug 管理的流程看板管理。如果放在流程图来看的话就会像下面这样:
其实每个卡片就是一个任务,而我们将整个BUG管理流程为新提交、修复中、待验证、已修复五个阶段,当发现一个BUG后将它创建成一个小卡片然后放入新提交看板。任务进行下一步时将卡片拖到下一步对应的看板。每个卡片中的内容类似下面:
看板管理模块会将任务自动转换为卡片,当一个任务到了某个阶段的时候只需要将它拖动到这个任务所属阶段对应的看板即可。
使用看板进行生产过程中各工序之间有关零部件制品需求信息的联络,保证了每一道工序只加工生产下一道工序所需要的必要数量的必要零部件,从而有效地制止了过量生产和盲目生产。通过传递看板,生产过程中的各个加工工序被连接成了一条一环扣一环的完整的“链”。
正是由于这条链的作用,整个生产系统由最终的总装配计划进行调节控制,上游各个工序只要按照总装工序的作业计划配合行动即可。此外,生产计划的修改和变更情况仅仅指示给总装工序,然后,这些修改和变更的信息便会随着看板的运动,逐步地传递到上游各工序。
当然,在市场需求情况发生变化时,这种按订单生产的生产系统必然会受到直接的影响,这就要求生产系统本身具有足够的柔性,能够对市场需求的变化做出迅速的反应。所幸的是,由于这条链的逆向“拉动”作用,人们仅把市场需求的变化及订货量的变动情况通知到最终的总装配线就足够了。随后,这些信息便会简明地、准确地、自动地传往上游。这不但大大简化了日常的管理工作,更重要的是增强了生产系统的柔性和对市场需求变化的应变能力。相反,如果我们把生产计划下达到每一道工序,那么当市场需求及订货且发生变化时,或者是当市场预测与实际需求出现较大偏差时,生产计划的调整就会十分困难,即生产系统的刚性较强,而柔性不足。看板管理则可以完全避免这种情况的发生。可以说,“增强了生产系统的柔性和应变能力”,是看板管理的较大优点。
我们在设计看板的流程的时候也需要注意这个流程是否适合自己的团队或者公司,也需要注意是否有足够的弹性去应对不断变化的需求。