`
saybody
  • 浏览: 870674 次
  • 性别: Icon_minigender_2
  • 来自: 西安
文章分类
社区版块
存档分类
最新评论

敏捷不能当饭吃

阅读更多

喜欢敏捷的很多想法,喜欢它务实的态度。我说“敏捷不能当饭吃”,当然不是说敏捷无用,相反,我倒是挺推崇敏捷的。之前有两篇文字都涉及到一些对敏捷的看法。一篇是 与神对话 ,另一篇是 对敏捷的一些想法 。只是看到很多人好像敏捷是他爷爷写的一样,龟孙子似地迷信和追捧敏捷,把工作一条一条跟书上描述的对照,一旦工作中实际操作跟书上有不一致,口诛笔伐,吐沫拳头无影腿就一齐上来了,那就太过了。敏捷跟太极拳一样,是一种思想精髓,它的一招一式体现在实际工作中灵活运用敏捷原则,敏捷并无特定套路。Scrum等流程是敏捷的一种成功案例,这个案例在特定环境下工作得非常好,但那只是特定环境而已。敏捷大师们自己也总提醒,很多项目采用敏捷开发,仍然一塌糊涂,是因为应用敏捷并不简单。

Kent Beck是敏捷的发起者之一,很多敏捷的发起者后来都写了关于敏捷的书,但Kent Beck的书是最有影响力的,它的Extreme programming explained – embrace change可以在这篇博客 中找到。这本书主要阐述敏捷的一系列理念,对实践描述的并不具体。scrum之类讲敏捷流程的书,对实践操作的环节就会讲的很具体。先了解并接受敏捷的理念,再去看敏捷流程的话,比较容易理解流程背后的用意是什么 ,只有深刻理解了敏捷精神,才能比较好的实践敏捷。而现实情况很多时候不是这样,直接学习流程总是比较省事儿,于是scrum就被当成圣经直接拿来就用了,人家mc hotdog早就说过,“照单全收的盲从,就像在吃屎”。我相信通常情况下,scrum的实践在一个项目组,只有一小部分能用得上,当然,这已经是件很伟大的事情了。在一些常见的工作环境中,有些scrum的想法并不适用。

一个方面是,scrum强调“全功能团队”,每个人了解产品的每一个feature;团队人数在敏捷中是有限制的。但如果一个负责某个产品的团队就是有12,3个人,那么怎么办? 再拆成两个敏捷团队以适应敏捷对人数的要求?垂直划分feature提供了细化团队的机会,但产品不总能清晰地一刀切成两半,尤其还要考虑各个程序员有不同的专长,甚至根本用的不是同一种编程语言,如果团队只有一个c程序员,一个js程序员,一个pl/sql程序员,其他做java,那么切分项目组的方式是跟c有关的一组,跟js有关的另一组?底层架构和公共模块都不容易竖切。如果产品比较大并且不易细分,大家都了解每个feature是很难做到的。如果产品使用的技术比较繁杂,pl/sql, js, java, c样样都用,全功能团队怎么实现?js的程序员跟c程序员也讲不到一块儿去啊。我可以理解scrum的想法,也认同它的道理,但是在实际工作中,如果确实人数对不上敏捷的要求,或者程序员的技术特长分散在不同层面,这很难照搬scrum的实践。人多开会费时间,效果又不好,鸡同鸭讲,各说各的。写c的人才不关心js有什么技术瓶颈呢。

还有,scrum想了个招儿,用打扑克的方式沟通需求和帮助定schedule。这是建立在全功能团队的基础上的,上面已经论述过了,如果产品比较大,程序员没法兼顾所有story,那成本太大了,打扑克也只能流于形式,尤其术业有专攻,唯一的c程序员的工作只有他自己估计才有意义。更实际的问题是,当你知道story具体需求的时候,还不足以估计出时间,程序员必须知道“怎么做”才能估出来比较靠谱的时间。很多时候需要做一些research的工作以及一点儿prototype才好估时间 ,在这样的情况下,你非逼我出张牌,我只能出“问号”。 有时候,虽然我不需要做prototype, 但我确实也不能在5分钟之内理清思路, 知道用什么approach更合理,那么我怎么办,告诉大家容我想想,等我一会儿?技术问题本来也不应该规定在5分钟之内出个计划,非逼我出计划倒也没问题,但是随后我就得重做计划。还有一个问题,大家一起打牌,A知道这工作十有八九落在B头上,A可能出于好心多估时间,B可能为了面子少估时间,这些人为因素如何排除掉?

敏捷强调单元测试,这肯定是没错的。问题是,各个团队之间容易开始攀比覆盖率,其实程序员心里都明白,覆盖率的欺骗性很强,单元测试的有效性更重要 。如果单元测试又没贡献于驱动开发,也没贡献于质量保证(简单的api,诸如getter/setter之类的api就是这样,不用测试驱动直接就知道怎么写了,写了手动测试一遍就知道写的没错,code以后也不可能改),那么就没必要写这种单元测试,写这种单元测试的唯一好处是,成本低,比较容易贡献覆盖率。麻烦在于,太多弱智这么说,咱们敏捷了,单元测试覆盖率应该向某某弱智team看齐,于是人在江湖,身不由己,开始对付覆盖率。好吧,scrum其实也没说具体百分比,这不是scrum的错。

我绝对不想抨击敏捷或者scrum,我觉得这都是很出色的想法。只是听了太多“这不是敏捷”这种话,是不是敏捷根本不重要,能优化流程,让工作更有效才重要 。我喜欢敏捷的地方在于,敏捷强调以人为本,尊重程序员的各种诉求。正视design不能一蹴而就的现实。承认长期计划不靠谱。强调优先级,决定优先级的时候从性价比的角度考虑。scrum的很多实践也很实用,比如backlog应该包含的内容等等不一一罗列。敏捷不是一门玄奥难懂的技术,不需要花钱找培训机构受教育。敏捷的出发点就是务实,用务实的态度拥抱敏捷就足够好。套用二八原则,scrum的实践在实际中也许只需要吸收20%,却能取得80%的效果,剩下那20%要靠基于敏捷精神的创造力。

3
3
分享到:
评论

相关推荐

    敏捷软件测试:测试人员与敏捷团队的实践指南

    敏捷软件测试:测试人员与敏捷团队的实践指南 crispin和Gregorv定义了敏捷测试的概念,并通过来自现实敏捷团队的示例阐述测试人员的职责。她们讲述如何利用敏捷测试象限来识别需要哪些测试,谁来做,以及哪些工具有...

    敏捷开发 敏捷开发 敏捷开发 敏捷开发

    敏捷开发敏捷开发敏捷开发敏捷开发敏捷开发敏捷开发敏捷开发敏捷开发敏捷开发敏捷开发敏捷开发敏捷开发

    敏捷开发的艺术

    现在已经有大量的书籍描述敏捷开发是什么或者为什么它能帮助软件项目成功,但很少有哪一本书能把针对开发者、管理者、测试者和客户的信息合并成一个整体,从而使其能够直接应用。, 本书为敏捷的计划、开发、交付和...

    敏捷开发知识体系

    《敏捷开发知识体系》面向敏捷实践者学习敏捷知识和敏捷软件开发企业进行敏捷转型的需要,旨在帮助个人更快地掌握敏捷开发知识,帮助企业更好地实施敏捷转型。主要内容包括:敏捷开发的哲学理念、价值观、敏捷开发...

    敏捷方法 敏捷方法 敏捷方法

    系统的开发基于Ruby On Rails,在项目的开发过程中应用了敏捷开发方法

    敏捷软件开发敏捷软件开发

    敏捷软件开发敏捷软件开发敏捷软件开发敏捷软件开发敏捷软件开发敏捷软件开发敏捷软件开发敏捷软件开发

    敏捷成熟度评估-Agile Maturity Model(AMM)模型分享

    •AMM(敏捷成熟度模型) 全称Agile Maturity Model,是一套用来评估软件开发团队或者整个开发组织的当前敏捷状态和将来的目标状态...因此AMM只评估软件开发团队的开发过程和实践,并不能用来评估一个组织的所有方面。

    敏捷与架构敏捷与架构

    敏捷与架构. doc敏捷与架构. doc敏捷与架构. doc敏捷与架构.doc

    SoS不是呼救是一种大规模敏捷团队的组织方式.docx

    SoS不是呼救是一种大规模敏捷团队的组织方式.docxSoS不是呼救是一种大规模敏捷团队的组织方式.docxSoS不是呼救是一种大规模敏捷团队的组织方式.docxSoS不是呼救是一种大规模敏捷团队的组织方式.docxSoS不是呼救是一...

    华为敏捷开发介绍

    为落实敏捷软件开发在我司的顺利推行,使广大软件开发管理者和开发人员深刻领会敏捷核心理念,熟练掌握敏捷实践方法,从而达到增强应对需求变化的能力、提高产品质量、提升开发效率和缩短交付周期等方面的目标。...

    敏捷软件测试:测试人员与敏捷团队的实践指南

    敏捷软件测试

    敏捷项目管理,敏捷项目管理

    敏捷项目管理敏捷项目管理敏捷项目管理敏捷项目管理敏捷项目管理敏捷项目管理敏捷项目管理

    华为敏捷网络解决方案.pdf

    1.6告别过去,走向敏捷2SDN能解决所有问题吗 2.1SDN的范围 2.2SDN只解决了部分问题3敏捷网络解决方案 3.1什么是敏捷网络 3.2敏捷园区3.3敏捷广域3.4敏捷分支 3.5敏捷数据中心 3.6敏捷网络价值总结

    敏捷开发中的敏捷测试《敏捷测试全攻略》

    关于敏捷测试的关于敏捷测试的关于敏捷测试的

    软件项目管理论文:敏捷在软件开发中的应用

    本文从敏捷方法的定义,提出背景,实施方法等方面对敏捷方法进行描述,并与传统软件工程方法相对比,分析敏捷开发的优劣。通过实际软件开发的案例分析软件生产的价值观,得出敏捷方法在软件开发中的价值。关键词:...

    Scrum敏捷软件开发

    《Scrum敏捷软件开发》是敏捷联盟及Scrum联盟创始人之一、敏捷估算及计划的鼻祖Mike Cohn三大经典著作中影响最为深厚的扛鼎之作,也是全球敏捷社区中获得广泛肯定的企业敏捷转型权威参考。作者花四年时间,把自己近...

    敏捷开发.doc

    敏捷开发

    Scrum敏捷软件开发过程.pdf

    Scrum敏捷软件开发过程.pdfScrum敏捷软件开发过程.pdfScrum敏捷软件开发过程.pdfScrum敏捷软件开发过程.pdfScrum敏捷软件开发过程.pdfScrum敏捷软件开发过程.pdfScrum敏捷软件开发过程.pdfScrum敏捷软件开发过程....

    敏捷论坛-姚元庆-这里敏捷“静悄悄”

    敏捷开发--记“春天工程”敏捷实践及大型金融企业敏捷推广策略分享

    敏捷项目管理——敏捷石蕊测试

    敏捷项目管理的12条石蕊测试题,要成为敏捷的一员,你需要有能力去问:“这是敏捷吗?”如果你曾经质疑过某个特定流程、实践、工具或方法是否遵守敏捷宣言或12原则,请参考以下问题。

Global site tag (gtag.js) - Google Analytics