BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

M三兄弟-精益三人组

| 作者 Roman Pichler 关注 1 他的粉丝 ,译者 乔梁 关注 7 他的粉丝 发布于 2008年3月11日. 估计阅读时间: 7 分钟 | Google、Facebook、Pinterest、阿里、腾讯 等顶尖技术团队的上百个可供参考的架构实例!

关于软件开发中应用精益原则的讨论,大部分集中在识别和消除浪费(浪费在日语中叫作:muda)。同样,精益思考的目标是消除过重的负担(过重的负担在日语中叫作:muri)和不必要的变化(不必要的变化在日语中叫作:mura)。Muda,muri和mura合称为“M三兄弟”。它们三个在一起就成了不谐调的组合。只有消除了这“M三兄弟”,才能创造一个可持续的精益过程。本文讨论了这“三兄弟”的关系,并认为对于软件开发组织来说,要建立一个精益过程,第一步要做的事情就是消除额外的负担。

浪费

在精益思考(lean thinking)中,浪费被定义为:所有以客户的角度看来不增加价值并且可以移除的活动。例如,生产过剩、过渡加工、在制品,或者库存、缺陷、任务易手和任务切换、等待,以及没有用到的员工创造力。

从客户的角度来看,能增加价值的活动才能让产品品质得到提高。判断是否为增值活动的好办法就是问自己这样一个问题,“假如我是客户,我愿意为这个活动付费吗?”如果回答为“是”,那它就可能是个增值活动。例如,发现和理解客户需求,并写出代码。另外,正如后来Allen C. Ward所指出的那样,使用原型法来学习相关知识以便开发软件系统,这样类似的活动也属于增值活动。任何不创造价值而当前又无法消除的活动被叫做“非增值”活动。例如配置管理和项目计划活动。

敏捷宣言中提到“可工作的软件胜过全面的文档”,也就是强调整增值活动在软件开发中的重要性。通过消除浪费,我们可以更快更好地创造软件产品。

过重的负担

那么首先将关注点放在发现和消除浪费上面,有什么不对的呢?即使大部分传统开发组织从事的都是没有增加什么价值的活动,都是浪费;但是要想以精益的方式工作,正确的方法不是先对付浪费,而是要首先应对另外一个痼疾:过重的负担。只要大家疯狂加班,只要项目和团队有被大量工作压垮的可能,那么仅仅消除浪费就没有什么效果了。除非我们将工作量限定在组织能力所及范围之内,否则浪费就可能会悄悄返回。假设你正试着消灭缺陷,可项目却还是在重负之下,那么质量问题还是会重现,因为项目成员仍会感到压力过大以及过度操劳。事实上,过重的负担是在制品、等待和推迟、任务切换和缺陷等浪费的主要来源。

将需求限制在工作能力范围之内,正是Scrum和极限编程要做的事。让团队自己为一个迭代指定可行的工作量,过重的负担就会被制止,从而并有系统地避免它的发生。这样就达到了一个稳定的步伐。另外,Scrum和XP建立了“拉”式过程和稳定的节奏,团队成员实际上就是从产品backlog上以“拉”的方式来获取需求,并以一种有规律的基准来将这些需求转化为产品的增量。

这种“拉”式过程的优点之一就是:除了避免负担过重,它还会使浪费和其它问题暴露出来。随着过多库存的消失,问题就会很快暴露出来。Scrum意识到了识别和消除问题和障碍的重要性。它的每日Scrum会议就是识别问题的一种机制。

多变性

具有稳定节奏的“拉”式过程使得不必要的变数可视化,例如在迭代计划会议上,团队发现需求的大小和粒度不同,或者使用了多种不同的构建脚本。不必要变数的其它例子还包括:使用不同的开发工具,应用开发实践(如测试先行及重构)时的不一致性,以及不遵守编码标准等等。这类变数产生了诸如有缺陷的软件、过度加工以及返工等浪费。而规范和标准则消除了这些变数。

但是,并不是所有的变数在软件开发中都是坏事!例如,产品backlog中以不同的详细程度来表述需求,可以避免生产过剩, 过度加工和返工。通过创建原型来探索不同的技术和设计选择是一种必要的变化形式,这样可以获得相关的知识,以便做出正确的架构和技术决策。需要注意的是:要尽早进行有计划的组织试验,而不要孤注一掷于可能未加证实的设计理念,后者往往会导致后来重写软件。

总结

为了建立一个精益过程,必须从根本上改变传统的开发体系,从而建立一个正确的过程。对于软件开发组织来说,最好通过使用有节奏的“拉”式过程,以创建和Scrum和XP同样的过程。在日语中,这种根本上的改进叫做“改革(kaikaku)” 。一旦建立了这种新的工作方法,浪费和变数肯定会被系统化地清除。因此,这种过程要逐步不断改进,在日语中就是所谓的“改进(kaizen)”。有规律的回顾会议会有益于反思和持续改进。总而言之,要建立正确过程首先就要减负,然后授权并鼓励团队义无反顾地消除浪费和不必要的变数。

Literature

  • Jeffrey K Liker: The Toyota Way. McGraw-Hill. 2003.
  • James M. Morgan, Jeffrey K. Liker: The Toyota Product Development System: Integrating People, Process and Technology. Productivity Press. 2006.
  • Mary and Tom Poppendieck: Implementing Lean Software Development: From Concept to Cash. Addison-Wesley. 2006.
  • Donald G. Reinertsen: Managing the Design Factory. A Product Developer's Toolkit. Free Press. 1997.
  • Allen C. Ward: Lean Product and Process Development. Lean Enterprise Institute. 2007.
  • James P. Womack, Daniel T. Jones: Lean Thinking. Touchstone Books. 1996.

作者简介

Roman Pichler,是一名独立咨询师及教练。Roman的客户认为他具备丰富且不同的经验,能够帮助刚起步的创业公司,乃至很大的全球性企业实施精益思考和Scrum。他还是《Scrum - Agiles Projektmanagement richtig einsetzen(dpunkt 2007)》一书的作者。

查看英文原文:The Three M's - The Lean Triad

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

过重的负担 by Tan Scott

过重的负担确实意味着严重的浪费

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

1 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT