剖析短迭代
敏捷教练Dave Nicolette提出:我们应该如何设定迭代长度?是要根据发布周期的时间么?使用短迭代又有哪些好处?
作者 李剑 发布于 2008年1月21日 下午5时30分
上周六(1月19日),InfoQ中文站与ThoughtWorks、BJUG、AgileChina、BPUG等社区共同举办了一场Open Party活动,场地设在ThoughtWorks北京办公室,大约四十多人参加了本次聚会。来自ThoughtWorks的咨询师路宁为参会者献上了一 场精彩演讲:Lean Thinking With Examples,详细分析了实施精益或者敏捷过程中最大的阻力,以及如何识别和消除浪费。
活动从一个简单的Stand-up meeting(站立会议)开始,之后是半个多小时的沟通交流和所有主题的票选。当天的主题包括了开源社区发展、GPE、Mingle和Erlang等众 多精彩内容。在进行分会场会议时还发生了一个有趣的小插曲,Matrix的clever pig(刘丹)和Peter Cheng(程勇)的“开源社区发展”吸引了大多数人的注意,从而导致其他两个同时进行的主题因为人数过少被迫暂时中止。
之后,路宁在分会场进行了题为“Lean Thinking With Examples”的演讲(演讲PDF文件下载)。他从丰田生产系统(Toyota Production System)和精益(Lean)的历史谈起,分析了在企业或公司实施精益或敏捷的最大阻力——大规模生产时代在人们思想中形成的那些“看似合理但实则不 然”的思维定势(量产时代后遗症)。他还谈到了丰田如何扭转思维,大刀阔斧地探索自己独特的生产体系,最终在国际竞争中脱颖而出的故事。他说道:Lean就是识别和消除浪费(不产生附加价值的活动)的技术。随后,他举例说明了如何利用精益的5个原则(注:见新闻底部附注)来识别和消除浪费,同时还列出了几个常常与浪费结对出现的典型现象:
未完成的工作都涉嫌浪费。精益或敏捷就是将未完成的工作(浪费)减少到最小的技术。按照这个说法,就连所有正在编写的代码都属于浪费。乍一听真的匪夷所思,如果不编写代码,我们拿什么东西给客户交付?价值又从何而来?这又怎么能说成浪费呢?
上个月在InfoQ中文站一篇名为“抛砖引玉——重构是必要的浪费”的新闻中,Amr Elssamadisy提到过:
精益定义了两种类型的浪费:“纯粹的浪费”和“必要的浪费”。“纯粹的浪费”指的是那种既不能给开发团队也不能给客户带来好处的做法。“必要的浪费”是指某些行为,即便它不能给客户创造价值,但也是在我们所知的范围内完成一项工作的最佳方式。
路宁在演讲时也针对精益所定义的浪费进行了重点论述,并且对后者进行了更为详尽的说明:在软件开发中,测试、集成、重构和管理都属于这种浪费。他还总结了为减少这种无可避免的浪费常常应用的几个有趣的Pattern:
可以评选当天互动最激烈的Topic了吧,严重延时,^-^
汗……这个确实没的说,被Tin同学和cleverpig催了很多次:)
是啊!我称之为“柏拉图式的Topic”。不过,我个人非常喜欢这种freestyle。
“柏拉图式的Topic”,有意思的提法,Topic中的内容确实容易让人感觉到理想与现实间存在的差距,但丰田、法拉利、CFM国际公司(航空发动机生产厂商)等企业都已经经过自己不懈的努力证实了丰田生产方式的威力,它们在一步步走进理想,并在过程中享受着市场的回报。Agile也在软件领域中也有些“柏拉图”的味道,但重要的是有一些团队或公司正在脚踏实地地实践和享受着这种逼近“极限”的感觉。
理想和现实还是有一定距离的,每个企业的基本环境不一样,不要想着一步到位,丰田也是经过漫长的摸索和创新才有这样的境界。
就像企业一样,如果连电脑都没有,怎么上信息化。
嗯,距离是一定有的,只要我们比竞争对手距离理想更近一点就好了。
Kent Beck在他的新书《实现模式》总结了三条编程中的价值观:沟通、简单和灵活。
而他自己也说到了在“灵活”这一点中存在有争议。该做到怎样才算灵活呢?需要去估计未来在什么地方可能发生变化么?不去估计的话,怎样保证这种设计足够灵活呢?去做了估计,又怎么可能保证你的估计会正好和未来的变化相吻合?如果不吻合的话,那这种做法就增加了代码的复杂度却没有增加价值——而这一点往往是占了很大比例的。
精益生产不适合于软件生产
应该是不适合"量产"的软件生成, 例如外包.
本文主要讲述了如何用JBoss Portlet Container 和JBoss Portlet Bridge创建新项目,怎样配置一个JSF应用去使用JBoss Portlet Bridge,以及JBoss Portlet Bridge所具备的功能。
在这篇文章里,Bryon Jacob和Chris Berry将和我们继续探讨AtomServer,它是基于Apache Abdera的完整Atom存储实现。作者还创建了几个Atompub规范扩展,其中包括自动标记、批处理和Feeds聚合。
InfoQ中文站的电子杂志《架构师》试刊第二期出版了!相比于上期,我们在内容的选择安排和版式上都根据读者的意见重新做了修正。“细节决定成败”,我们希望基于InfoQ中文站的专业内容,《架构师》能逐渐成为大家喜欢的电子刊物!
在本文中,Steven Haines探讨了Web应用性能调优问题。该领域过去更像是一门艺术而不是一门科学。他提出了一种称为基于等待调优的方法,使整个调优过程更加可度量,也因此更具科学性。
通常来说,改变技术路线时最艰难的部分是辨别语言语法之间的不同。这篇文章就为Java开发者提供了一份如何转向Flex基础语言ActionScript的指南。
本视频主要以财帮子为例,介绍了如何创建一个PV为百万级的Rails应用。其中包括:Rails应用的服务器架构、Rails Cache的优化、负载均衡的处理、Web服务器的调试、分布式解决方案、Open API的设计等等。
InfoQ首席架构师Alexandru Popescu在采访中谈论了InfoQ架构、Webwork与DWR、Hibernate与JCR、Hibernate可扩展性、最新的InfoQ视频流系统和InfoQ的未来规划。
9 条回复
回复