敏捷开发智慧敏捷之1-6

上传人:ldj****22 文档编号:30233290 上传时间:2018-01-28 格式:DOCX 页数:26 大小:31.18KB
返回 下载 相关 举报
敏捷开发智慧敏捷之1-6_第1页
第1页 / 共26页
敏捷开发智慧敏捷之1-6_第2页
第2页 / 共26页
敏捷开发智慧敏捷之1-6_第3页
第3页 / 共26页
敏捷开发智慧敏捷之1-6_第4页
第4页 / 共26页
敏捷开发智慧敏捷之1-6_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《敏捷开发智慧敏捷之1-6》由会员分享,可在线阅读,更多相关《敏捷开发智慧敏捷之1-6(26页珍藏版)》请在金锄头文库上搜索。

1、敏捷开发智慧敏捷系列之一:序言本文将解决各种敏捷中需要辩证思考的问题,包括:写文档还是不写文档?拥抱变更还是迭代期内无变更?持续交付的产品因为不完整被客户鄙视怎么办?做架构设计还是不做?突出进度忽略了质量怎么办?我们不用文档就能开发但客户偏偏要文档怎么办?自动化测试费力而且测试代码可能跟应用代码一起被抛弃怎么办?缘起敏捷开发中一直有几个根本问题无法回答:什么是敏捷?怎样知道我是否敏捷了?应该怎样推行敏捷?敏捷的未来会怎样?开始业界还有压力,因为这些问题如此难以回答。后来这些问题问得多了,大家也就释然了:“这些都是没有答案的问题。 ”身为投身业界较早的一员,感觉草草收场太有点对不起那些心中一直有

2、疑问的后来者了,那种感觉就像黑暗中侥幸躲过一块拌脚的石头,总是想停下来把它除掉。最近在看一些业界之外的东西,才知道这些问题在很久以前就解决了。答案非常真切,能令接触敏捷很久的我一看就知道问题已经结束了。不过,这个答案相当不容易用语言描述,憋了很久还是没能写出来,现在和最近的将来都心里明白但写不出来。本系列不是直接描述这些根本问题的答案的,而是最近在微博、博客上又看到一些关于敏捷实践的纷争,而心里很清楚纷争的原因,所以特写此系列帮助后来者辨析一些概念,建立一些基本的思考方法。兴许写几篇这个系列,就能帮我把那个系列写出来了呢。题解一直以来都有数据与信息的辨析。就是说数据是死的,要从中分析得到信息,

3、才能对人有所帮助。实际上完整的层次结构是:数据,信息,知识,智慧。这个是在冬吴相对论的很早一期中顺带提及的,但对我们推广敏捷很有帮助。数据,基本上接近客观事实,不只是指数字,也指那些真实发生的所有事情,对应各种真实的敏捷案例。信息,指从实际事情中提炼出来的有意义的实践,对应我们看到的各种用户故事、自动化测试、测试驱动等敏捷实践。知识,指这些有意义的实践被文字化描述,广为传播。智慧,指这些广为传播的实践的背后,所蕴含的真正道理。数据与信息,都是受到“因缘”约束的。因是内因,缘是外部条件。(这个案例不是敏捷开发的,但很直观) “在一家数字电视企业,人们大规模地做了软件仿真代替真实硬件,来防止太多环

4、节的硬件捣乱” ,这整句话就是数据,而“软件仿真”就是从中提出的信息。若把它写下来传播,就成了知识。但是是不是哪里都适用呢?不是。当时的内因,在于这家企业的研发团队很强(是我个人从事一线研发 9 年中经历过最强的) ,能够完成这一系列仿真,这个是追求卓越工作的内因;而外部环境中,从前到后硬件环节多达 10 层有余,客观上导致了不仿真是开发不下去的。像这种实践,就存在很大的因缘成分,一旦离开因缘,很难重现。敏捷开发中的多数实践要好得多,因为之所以被抽取出来,就是多少存在共性和可推广性。但这并不表明其可以无限超越因缘限制。在敏捷开发中大家都很崇拜案例,因为案例是真实的,表明这件事情真正发生过。所以

5、每当一方能指出“某某公司就是使用 XX 方法,从而才能的”的时候,都会感觉非常立刻找到了答案,无需多说。但是案例背后的问题在于:案例太真实了,以至于它们有的只能在一个地方发生,有的甚至只能发生一次。智慧敏捷而智慧,则是超越因缘的。 (之后我们会看到其实“妙智慧”就是“般若”才真正超越因缘)那个团队为什么使用软件仿真?因为追求卓越工作?因为要克服硬件限制?当然不是。一家企业不会无缘无故追求卓越(尤其是这种内部技术层面的) ,而要克服硬件限制,加班加点多测试几次也能通过。早在开始,团队并没有尝试软件仿真绕过硬件,也在以普通的妥协和加班来换取硬件大发慈悲,直到遇到一个最不讲理的硬件:IC 卡。这东西

6、连个显示界面都没有,不能单步运行,不能显示中间状态,就傻乎乎地以极低的速度执行极少数业务命令,其他一切无视。这是第一次被逼无奈,放弃加班加点或多和 IC 卡开发者沟通之类的笨方法,开始用仿真卡代替真实卡。而在这一活动被证实简单有效后,其他几个不太讲理的硬件也被仿真了,最终系统越做越顺。曾经有一年聚会的时候,得知当时的市场占有率是60%(之后不详) 。在整个过程里边真正驱动大家改变看法的,不是“追求卓越” ,而是:“到底哪种方法最快呢?”刚开始答案是“蛮干” ,而后来则是“巧干” 。千万不要误解“蛮干” ,在很多情况下“巧干”很容易产生需求镀金和过度设计,蛮干反而最快;但也不能总是蛮干,有时候撞

7、上南墙,还是要巧干才行。那到底蛮干好还是巧干好?都不好,他们都属于“信息”层面的东西,受到因缘的限制。这个问题一旦这么问,就无解了。好的问题是:“到底哪种最快?”每次问这个问题,每次答案可能都不相同,但每次答案却总是正确的,这是智慧。本系列会帮助辨析一些常见的问题,来探讨如何智慧地使用敏捷方法。这些。问题包括:写文档还是不写文档?拥抱变更还是迭代期内无变更?持续交付的产品因为不完整被客户鄙视怎么办?做架构设计还是不做?突出进度忽略了质量怎么办?我们不用文档就能开发但客户偏偏要文档怎么办?自动化测试费力而且测试代码可能跟应用代码一起被抛弃怎么办?这些问题没有开头提的那些问题那么本质,但是也能反映

8、出一些敏捷实践层面不好解决的问题,在智慧层面其实早有答案。这些问题几乎都是本人在工作中碰到或培训/咨询中被问到的问题,若掌握了智慧层面的内容,这些问题即使被第一次问到而之前从没考虑过,也能在 5 分钟后让发问人满意而归。每个人在理解了敏捷开发中的智慧后,都能做到这一点;或者反之:当事人之所以困惑良久而来发问,是因为一直没能超脱于因缘之外观察敏捷实践背后的智慧。敏捷开发智慧敏捷系列之二:写不写文档?缘起“我们产品已经做完了,客户说要补上需求文档,可我们只有用户故事,这个文档应不应该写呢?”“没有这个文档,客户能验收吗?”“不能,客户要开课题评审会,这个是评审会材料之一。 ”这个文档要不要写呢?写

9、,为什么?不写,为什么?写怎么写?不写,怎么不写?为什么敏捷不写文档?先把话说绝点,敏捷就是不写文档。那为什么不写文档?为了减少浪费。敏捷认为所有中间产品,需求,计划,设计,测试用例都缺少客户价值,客户最想要的价值,无疑是最后的可运行的软件。因此所有中间文档都应该省略省略再省略,直到不写。不在对客户没有价值的东西上面浪费时间,这是敏捷不写文档的真实含义。只是从实践上看,最浪费时间的无疑是那些无用的文档。但倘若文档是有用的,而且甚至是客户价值的重要部分,一切就变了。怎样写这个需求文档?就这个文档而言,它是为了验收所用,和开发没有关系(已经开发完了) ,和日后维护没有关系。那怎么写?这个问题就不回

10、答了,当然是按验收的写法写。所以,所有文档的所有写法,在每个企业都不相同,不应该问“敏捷开发应该怎样写 XX 文档? ”,而是应该问“应该怎样写上面那个文档? ”,而若能这样发问,答案已经明确了。“写不写文档”的常见做法常见的文档虽然很多,但下面几个维度几乎永远存在,具体某个文档通过几个维度的分析,处理方法各不相同:信息长期/短期有效的文档长期有效比如竞争对手分析文档,架构设计文档,需求管理文档(用户故事) ,产品路线图长期文档适合详细描述,用语应完整(就是写 Word 那种写法) ,甚至可以动用图形和建模工具。短期有效比如评审发现的问题,PO 在计划会上讲解的内容等。短期文档适合粗略描述,典

11、型的就是用纸或 Word 凌乱地写一些关键内容,无需长期保存,月末一般就无用了。不可/可被”可运行软件“替代的文档上面举例的文档中,竞争对手、架构设计、用户故事、路线图都无法从代码中看出来,适合文档化。此外,一些科学计算的公式、复杂的设计也属于此列。而界面设计、数据库表结构设计、流程图、伪码等,一旦软件做好了,更容易在可运行软件中看出,就不要着大量笔墨于此。若感觉后者处于”没有就做不出软件,但做出软件又没用了“的尴尬境地时,应采用轻量级设计。敏捷开发智慧敏捷系列之三:做不做架构设计?缘起甲:“敏捷不应该写架构设计,应该每个迭代都是相同的,才能达到自相似性(这是 Ken Shweber 说的)。

12、”乙:“如果不写架构设计,很容易返工,早晚还得重来。”甲:“大不了重构,这是敏捷开发重要的实践。”乙:“重构?重构的成本很高的,做几个迭代,后面重构都重构不过来了。”甲:“架构设计写了很容易过度设计,而且在编码的时候还很容易全部推翻重来;。”这个架构文档要不要写呢?写,为什么?不写,为什么?写,怎么写?不写,怎么不写?为什么敏捷不做架构设计?先把话说绝点,敏捷就是不写架构设计。那为什么不写架构设计?还是为了减少浪费。敏捷有两个理由认为写架构设计是浪费时间。第一,业务需求是多变的。之前的架构写得再好,中间需求一变,架构还的改动,费时费力;很多需求可能是无用的,早期可能规划了,后期又会发现用不上,

13、如果架构里边考虑了这些无用需求,就会过于庞大。第二,架构设计很难判断是否正确、完备。这个本人也很有体会,本来以为很好的设计,到了编码的时候发现不是那么回事,这时候就得从头翻腾。评审一下如何?可惜,除了最终的软件,多数需求、架构、测试用例都很难评审,评审半天,问题还是很多。敏捷的这些假设,整体上非常普遍,可以说是在尝试“做好架构” 而不得之后的妥协。不在那些总是改来该去,还不知道是否可行的东西上浪费时间,是敏捷不做架构的出发点。怎样写这个架构文档?但是如果彻底不写架构设计,又可能返工,怎么办呢?当然是本着“最小浪费”原则来做架构设计。下面是一些写和不写的内容:写:相对稳定不变的,重构成本很高的,

14、能看出对错的不写:概念性的那不太准的,很容易扩展的,说不清对错的具体要写什么不写什么,很大程度上要受到业务稳定性、技术的先进性、人员能力等各方面的影响。所以,所有架构文档的所有写法,在每个企业都不相同,不应该问“敏捷开发应该怎样写架构文档?”,而是应该问“如果我的业务、技术、人员如此,应该怎样写架构文档?”,而若能这样发问,答案肯定可以自己找到了。智慧敏捷的一个本质方法,是要去理解敏捷这样做的目的是什么,而不是敏捷应该怎样做。倘若日后出现了先进的架构方法,或许架构就变成一种很容易做、很容易评审、很容易变动的东西,那时候就是另外一种说法了。但敏捷在架构设计这件事情上的本质目标却永远不变:减少浪费

15、。5 分钟又到了,散会。敏捷开发智慧敏捷系列之四:每日立会开多久?缘起甲:“我们每日立会会开不起来。 ”乙:“嘿,我们每日立会开起来了,而且越开越长了,一开就是 1 个小时,净是些技术细节。 ”甲:“别人等着他们讨论,那多耽误时间啊”乙:“我也觉得是,但是看他们交流得那么热烈,讨论的也是正事,到底应该打断还是不打断呢”为什么每日立会只开 15 分钟?我们说绝点:每日立会只能开 5 分钟,而不是 15 分钟。这 5 分钟说点什么呢?应该说必须开会才能说明白的东西。先看两个团队,他们有什么是需要开会说明白的。第一个团队,10 个人,平时分工细致,各干各的,谁也不干扰谁。这个团队,开会的时间肯定不短

16、,因为所有交互问题都需要开会解决。第二个团队,10 个人,平时分成三个小组,小组内随时沟通,小组间有需要就沟通。这个团队,开会的时间肯定短,因为三个小组长发言总结自己组的进展就可以了,会上只需要碰碰组间的沟通。敏捷开发实际上在假设大家平时像第二个团队一样一直在互相沟通(即使不分成三个小组) ,但是却很少以整个团队的形式沟通整体进展,所以才创造了 15 分钟的周例会,当然也能顺便把忘了沟通的人链接一下。如果这个本来作为补充性质的周例会变成了组内唯一的沟通渠道,就出问题了。所以,开会时间长,往往不是沟通充分的表现,而是沟通不充分,只能赶在会上沟通的表现。团队应该怎样沟通?团队应该随时就技术细节进行沟通,而不需要等待开会。而对于 35 个人的团队,组长如果除了开会居然不知道整个组的进展,那么沟通是极其不顺畅的,要解决的不是每日立会的问题,而是平时沟通的问题,比如采用师徒制度、松结对编程等(请参考其他系列博文) 。这种会

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号