Skip to content


从精益生产到精益软件开发

第三界”敏捷中国”的会议主题是精益软件思维,听了Martin Fowler(重构的作者)和ThoughtWorks同事的精彩演讲,收获不少。在此分享一下学习心得。敏捷的最大好处是减少浪费,通过对质量的严格控制减少返工的浪费,通过频繁的反馈减少误解的浪费。这种与浪费做战的态度,与精益(Lean)思想同出一处。

1)何为’精益’:
以上摘自: http://blog.vsharing.com/tiger_wing/A387321.html
精益生产(Lean Production,简称LP)是美国麻省理工学院数位国际汽车计划组织(IMVP)的专家对日本“丰田JIT(Just In
Time)生产方式”的赞誉之称,精,即少而精,不投入多余的生产要素,只是在适当的时间生产必要数量的市场急需产品(或下道工序急需的产品);益,即所
有经营活动都要有益有效,具有经济性。精益生产是当前工业界最佳的一种生产组织体系和方式。

2)怎么从传统工业中的精益生产到软件互联网行业的精益开发呢?
软件行业是一个新兴的快速发展的行业,他与传统行业存在很多不同的思维方式,但是存在更多的共同点,很多在软件行业中的做法借鉴了传统行业,并且在软件行业中收效很大。比如软件设计的精典著作《设计模式》则借鉴了建筑领域的著作《建筑模式》.软件行业学习制造业的精益思想也是理所当然.
(以下笔记摘自路宁的精采演讲)
2.1 精益工厂的环境是干净,井井有条的
工厂搞得像医院一个干净有条理,而不像一般的工厂一样到到处是油污,到处散落零件。目的是更加方便的找出质量的死角,无限放大工作流程中的失误。我们程序员的工作环境也是如此,工作环境不仅指一个公司的工作环境,还指一个程序员个体的编码环境。如果工作环境是无序的,零乱的,那么在这个环境里面的工作人员怎么不会被外界的环境所影响呢?程序员的编码环境也如此,如果每天发费大量的时间在你混乱的文件路径中查找你在中的工作材料,怎么会有时间集中精神把一件事件做到位呢?(哈哈!从现在开始把当天要进行开发的工作目录设置为根目录)
2.2 最大程度的了解团队的信息。
在精益工厂工人之间是易于沟通的,工人与上级之间也是无障碍的.所有工人的劲往一个地方使。我们的开发团队去掉你们工位挡板,与合作伙伴坐到一起,项目负责人可以试着走出你的办公室,坐到你的团队成员之间来.只有面对面交流,才能互相子解团队中的所有的成员技能特长,最终达到人尽其才,提高团队战斗力。
2.3 准时化,零库存。
在精益工厂中,库存就是浪费。库存不能为你的产品产生任何价值,而且还要浪费你的很多资源,是不可取的。怎样来估算一个软件项目的库存呢?如果你当前的项目提交时间点到了,你手头上还有多少还没有实现价值的代码。那么这些没有实现价值的代码就是库存,尽管这些库存的代码可能会对本项目的深度开发有用.由于这些库存不是程序实现的目标,那么你的这些库存就会是浪费。敏捷开发讲究早开发完成,早测试,早发现问题,早解决问题.对一个问题实现多次上面的迭代,以实现提到软件质量的目的。根据这个思想我们可以把用来做这些库存代码的时间拿来提高产品的质量上去,多做几次迭代。当然零库在项目开发中是不可能,但它是敏捷的一个重要目标。在软件产品设计的过程中的库存很多时候体现在过度设计或者分析瘫痪上面.不要为不存在的需求做过多的设计。有什么样的需求,就做相关开发。
2.4.单件流通,任务细化,及时提交。
每件产品必须按顺序的走完整个生产流程,这样才能保证每个产品的质量。也就是说一个产品出现问题必需先阻塞住当前的生产流水线,把问题解决再启动生产流水线继续正常工作。软件开发过程中,一个团队尽量避免同时做几个项目,多个项目并行开发,最终可能导致每个项目的质量都得不到保证。项目实施的过程中出现问题一定要立即解决,如果不趁早解决,问题出现的点可能就成为影响你整个产品质量的关键。
2.5 工作流程一定是可视化。
可视化的工作流程不仅容易发现工作中的问题,而且还可以容易控制工作的进度。相比传统行业,软件行业以智力为主.对于智力工作如何把工作流程可视化呢?可以用一些工具简单的记录团队成员每天的工作内容(写出关键工作点不可,不要成为负担),或者与团队多开一些简短的standing metting.也可以进行结对开发。结对应该是频道的结合,一对搭档最好不要连续合作超过3天。这些方法只有一个目的,就是让团队的成员知道你在做什么。
2.6 一个质量例子:(路宁讲的)
大家都知道德国的汽车以质量好出名,在德国的汽车流水线后面会在大量的刚从下线的汽车,大量的质量检测工人拿着工具检查车的质量,这些工人的占人总人数的1/4。同样以质量出名的日本精益流水线,生产线的末端都是只有为数不多的车,一个质检人员也没有,他们相信质量问题已在线上的各个环节中给解决了,车生产出来之后就可以直接拿上路了。可见保证软件质量的并不在于我们有多大的测试团队,而是在于问题在什么时候解决。如果像精益生产线一样在第一时间解决的话,那么产品的质量将会保证的更好。如果到了最后才去发现问题,解决问题,很有可能只解决了问题的表面现象,没有改变问题的本质。反问一句有多人能说的清楚起1个月前的自己的错误是怎么产生呢?(强调:第一时间解决问题).

在这次大会中,还有很多关于精益,敏捷的精彩课程.他们的演讲让我受益匪浅.腾讯公司研发管理部总经理林松的演讲也十分的精彩。

Posted in 感悟, 设计模式.

Tagged with , .


2 Responses

Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.

  1. Lisa says

    误打误撞,嘿嘿

  2. 果沟 says

    局然被你发现了。



Some HTML is OK

or, reply to this post via trackback.