在agilesoftwaredevelopment.com看到一篇Seven Principles of Lean Software Development 才知道原来Agile Software Development和日本制造的JIT有这样的渊源关系. 依据作者的说法:日本最赚钱的汽车制造商Toyota运用JIT(Just-in-Time)在生产制造上大幅领先同业. Taiichi Ohuno(大野耐一)-JIT创始人,写了多本相关JIT的书, 最有名的Toyota Proudction System , 成为美国Lean Manufacturing的基础. 在软件产业上, 则启发了Lean Software Development(精实软件开发)的观念, 而Lean Software Development酝酿了Agile Software Development Method的两个分支Scrum与Crystal Clear.
在Lean Software Development中以Mary and Tom Poppendieck 着的书最有名.
在他们着的书中 "Implementing Lean Software Development - from Concept to Cash" (Mary and Tom Poppendieck著作)提出7个实作Lean的原则, 呼应JIT的观念, 且反应软件开发的特质. Lean Software Development背后的想法是: 让客户在还没有清楚信息以供做正确的决定前, 尽量延后"定型". 不过只要客户一提出要求, 开发团队可迅速做出客户所要的, 在客户来不及改变主意前出货给他. 这个作法, 就如我们在线一下单购物, 隔天东西就寄来了, 大多收货者都不会说要退货或做任何变更.
这七个Lean的原则是:
1. 避免浪费
如JIT的「彻底的なムダの排除」(彻底排除浪费), 只要在客户看来没有任何附加价值的过程或产出都被视为浪费. 软件开发的七浪费:
- Particaly Done Work (开发过程中的预先完成品)
- Extra Processes(以文件中心来管理的开发最容易有这种现象)
- Extra Features(应该只开发客户要的功能)
- Task Switching(每人应一次只专心完成一件事)
- Waiting(等待指示或签核, 等待信息..)
- Handoffs(换手的过程一些默认的知识很有可能跟着遗失)
- Defects(无法马上测到的问题)
实行重点:
- 结合市场与技术领导 -整合市场与技术的专家才有可能激发出先进创新的产品. 你必须了解什么是对你的客户有价值, 以及你拥有或可以采用什么技术来实现.
- 仅聚焦于价值链 - 小心过分的流程改造, 确定这些流程是你必须的, 你应该聚焦在可以创造价值的流程. (想到软件项目界常讲的CMMI吗? "裁适"应该比"完美"来得重要)