"精益开发"的精益是什么?
最流行的软件开发模式,现在是"敏捷开发"(agile development)。
但是,很多人不知道,敏捷只是一种价值观,不是具体的方法。 它包含一些原则,实现这些原则有很多不同方法,下面是主要的几种。
极限编程(XP)
Scrum 开发
看板开发(kanban)
精益开发(lean)
初来乍到,看到这些奇怪的专有名词,你会不会头晕啊,它们什么意思,跟编程有何关系?
我正好读到一篇老外的文章,里面提到"精益开发"的一些小故事,读完豁然开朗,知道了"精益"的来历,就掌握它的做法了。下面分享给大家。
"精益"(lean)这个词来自1988年的一篇论文 《精益生产系统的胜利》,论文讨论为什么日本汽车击败了美国汽车?
论文作者以福特和丰田两家公司为例,认为它们的生产方法完全不同。
福特是早期的汽车霸主,强调批量生产,追求极致的生产效率,以降低汽车价格。以前,汽车是3000美元一辆,福特 T 型车的上市价格竟然为850美元,最终还降到了260美元,占领了美国大部分汽车市场。
传说中,亨利·福特说过一句名言:"顾客可以选择任何一种颜色,只要它是黑色。" T 型车就只有黑色车型,这并非由于福特喜欢黑色,而是黑色油漆干得快,落地后可以最短时间出售,从而降低了成本。
为了压低汽车价格,福特的生产流程是这样的:
采购100辆汽车的原材料。
制造100辆汽车的所有零件(总共超过十万个)。
组装100辆汽车,然后出售。
接收顾客反馈,生产下一批次。
由于每个步骤都需要较长的时间,因此迭代周期很久,福特也很少改动车型。
丰田公司采用了完全不同的生产方法。刚成立时,丰田是一家小公司,无力囤积原材料,也买不起生产不同零件的专用机器,只能选择通用机器,即同一台机器生产多种零件。
因此,他们的方法就是一次制造一辆车,并尽快出售。如果有问题,就马上修改,避免再次生产有缺陷的车。
获取一辆车的原材料。
制造一辆汽车所需的零件。
组装一辆车,然后出售。
接收顾客反馈,生产下一辆车。
这种流程有利于快速迭代和多次迭代,长期下来,丰田汽车逐渐变得更可靠耐用,更符合客户需要。
虽然,单车成本上面,丰田依然高于大批量生产的福特,但是福特迭代缓慢,很多零件不符合需要,有缺陷还是被大量生产出来,造成巨大的浪费,公司的整体效益反而不如丰田。
丰田的生产方法,就被称为"精益方法"(lean method)。英语单词 lean 的原意是"瘦且健康",用在这里表示追求实效、快速行动,没有一丝浪费。
后来,这种方法就被用在各种领域,管理领域叫做"精益思维",生产领域叫做"精益制造",软件开发领域叫做"精益开发"。
总结一下,"精益开发"指的是创建一个最小的产品原型,交付给客户,观察他们如何使用它,再快速推出小幅改进的下一代产品。这样就能迎合快速变化的需求,不会引入无用功能。
作为比较,福特方法则是详细计划所有功能,全部开发出来,然后一次性交付。