`
garydo
  • 浏览: 158782 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

敏捷拥护者眼中敏捷开发的常见问题

阅读更多
1. 技术负债在敏捷团队中会快速的膨胀。

问题一,是事实,但这并不是敏捷本身的问题,只不过是在敏捷导入和实施过程中没有引起足够的重视。经验丰富的敏捷教练往往十分重视工程类实践,会强调重构在迭代中的重要性。很多的敏捷实践(比如TDD,持续集成,重构)及很多敏捷开发者提倡的原则(比如S.O.L.I.D原则,Clean Code,Implementation Patterns )都能帮助敏捷团队避免过多的技术负债。Uncle Bob甚至认为应该在最初的敏捷宣言中加入第五条原则“Craftsmanship over Crap”,来强调技术的对成功的敏捷项目的重要性。

2. 敏捷软件开发团队会想当然地认为每个团队成员都专业,称职并富有责任心。如果事实不是如此,项目开发很快会变得举步维艰。

问题二,是事实,但这恰恰又是敏捷的卖点。我们应该做到:谦虚有耐心;勇于承诺;团队成员互信互助,而不是互相指责批评;承认自己的能力不足,不断追求进步,需要的时候寻求团队成员的帮助。很多方法论认为只能通过审查监控的手段来确保项目的顺利运行,而敏捷团队更多的是依靠个人的责任心。在优秀的敏捷团队中,能力较弱的的团队成员会感受到来自其他成员的压力,要不然尽力做好,要不然只有走人。

3. 由于对敏捷开发实践的错误理解,导致团队不合理地频繁交付,疲于奔命。

问题三,说老实话,在了解敏捷之前,研发团队才是疲于奔命。敏捷原理打破了传统的思维模式。人很容易犯错误,但是很多敏捷实践(结对编程,持续集成,TDD)能够帮助开发团队及早发现问题,纠正错误。因此敏捷反而把我们从传统的思想束缚中解脱出来。可能是由于对敏捷的过度宣传,导致大家对敏捷期望值过高,认为敏捷开发是解决所有问题的万灵药。其实我们导入敏捷也是受种种因素(客户环境,团队对敏捷的认识程度,成员的能力)限制的。如果能够从其他更成熟的敏捷团队或者敏捷教练那里吸取经验这样会更好,否则只能合理的逐步的导入实践。很多敏捷项目确实存在过于频繁的交付,那是由于人们迫于各种压力,“ 好大喜功”的天性而忽略了敏捷其实一直在强调的“根据每个迭代能够实际发布量”(也就是真正能够达到Done标准的工作量)来调整下一个迭代工作量。如果团队不能自主调整工作量,这其实已经偏离了敏捷。

4. 实施敏捷的门槛太高,敏捷开发需要更强的团队和个人的纪律性,勇于承诺和高度的公开性,但对一个不成熟的组织来说这个门槛太高。

问题四,是事实。但是这并不意味着不能在不成熟的组织中导入敏捷实践。这类组织可以逐步地导入敏捷实践。很多人太过心急,想“一口吃一个胖子”,但这往往是不切实际的。当然,同时必须要注意的是,不能因为采取逐步导入的手段,而降低敏捷定义的门槛(Ron Jeffries有一篇文章"Agile Is, Not, Maybe")。

5. 绩效差的团队成员很难在高度公开的敏捷团队中掩饰自己能力的不足。好的团队往往能够采取一定的措施来帮助这类成员。但如果没有采取措施,这些成员往往会想方设法通过消极怠工来掩饰自己能力的不足。

问题五,绝对是事实,敏捷需要勇气,但是这绝对是好事。态度决定一切!敏捷团队所不能容忍的是那种故意偷懒的成员。每个人都会经历从学徒到专家的过程(获得技能的Dreyfus模型,及Apprenticeship Patterns: Guidance For The Aspiring Software Craftsman)。由于每个人的能力不同,背景不同,能达到的高度也是不一样的。团队成员应该承认个体差异,努力帮助较弱的团队成员,使其快速成长。

6. 敏捷团队容易过份关注眼前的短期目标,而忽视长期的战略目标。尽管在短期内能够取得成功,长期注定还是会失败。

问题六,可能是事实,但是这在非敏捷团队中也屡见不鲜。不可否认的是在敏捷项目中,很多人过分强调了YAGNI,因而在早期忽视了一些战略性的目标,尤其是业务需求目标,从而导致后期重构十分困难。YAGNI是很有用的,但是需要其他实践比如TDD和BDD(行为驱动设计)的支持。Kent Beck在极限编程一书中讲述了怎样借助TDD,实现演进式设计。另外需要注意的是,这其实在很大程度上是一个平衡的问题,怎样在YAGNI与预先设计之间做平衡。

7. Product Owner承担了太多的责任,不堪重负,从而成为团队的瓶颈。

问题七,也是事实。但是作为对产品最有热情的人,Product Owner难道不愿意花时间和精力帮助团队开发出符合需要的产品么?敏捷极大地缩短了从需求到软件的周期。再也不会出现Product Owner等上6个月或者更长的时间,结果发现做出来的并不是自己想要的东西的情况。Product Owner可以在短时间内就能看到软件,及时作出调整,因此敏捷极大地减少了开发成本以及相应的机会成本。公司高层的支持也是十分必要的。没有高层的承诺和授权,不可能组成全功能的团队。

8. 敏捷的效用被过度夸大,大家的期望值太高,很多人认为导入敏捷能以最小的投入解决实际开发中的所有问题。

问题八,这可能也是事实。其实在其他方法论风行的时候,也遇到过类似的批评,比如RUP。大家都期望找到一种能够解决所有软件开发痛苦的方法论。作为有经验的敏捷实践者,教练,经理和架构师,对敏捷的宣传应当适度,尽管敏捷确实能够解决很多软件开发中遇到的问题,但是它毕竟不是万灵药。不要使他人有过高的期望。

9. 可能出现另一种形式的“相互诟病”。成功的敏捷开发团队一般不会成为产品开发的瓶颈,因此其他部门不能以这个为借口来指责开发团队,但是这有可能进一步演变成为政治游戏。

问题九,这绝对是事实。Chris Tyler提出的建议是,尽早与其他部门沟通,大家的最终目标是一致的,各个部门应当一起寻找生产系统的瓶颈,然后努力突破瓶颈(参见约束理论)。基于这个共同目标,各个部门一起对流程进行修改,就会减少相互诟病。

10. 当Product Owner开始决定开发的方向,他就会被过度授权。敏捷开发中缺乏足够的审查和平衡机制。

问题十,这并不是一个问题!Product Owner应该控制产品发展的方向。Product Owner应当熟悉业务,明确他最终想要什么。尽管开发团队要利用技术手段,提供解决方案,满足业务需求。但作为开发团队不应该对业务方面干涉太多。

11. 敏捷实践大多是针对程序员的,很难在组织内平衡工作量。缺乏对团队中的非程序员提供更好的文档以及培训支持。

问题十一,对于这个Chris Tyler既同意也不同意。敏捷团队是全功能的团队。如果业务分析师、Product Owner没有和团队在一起参与开发,那不是真正的敏捷。敏捷教练、经理也应该承担培训团队中除了工程师以外的成员的职责。对某些团队来说,文档会是一个问题,因为客户总是要求开发团队提供文档。其实行为驱动测试BDD就是一种既能够提供需求文档又能够照顾到代码实现的好方法。敏捷中也有文档(参见“敏捷的文档”),只不过是文档的形式发生了变化,变成了XUnit测试以及代码。进一步BDD可以成为业务人员和开发人员的桥梁,能够使业务人员更好地理解XUnit测试以及代码(另外其实还有Fit)。对于已经习惯于基于类似于IEEE的那种需求管理方式的Product Owner和公司高层们,对开发文档形式的改变,他们应当保持开放和学习的心态,充分信任团队,而不是给开发团队带来阻碍。

















分享到:
评论

相关推荐

    财务部门应为企业的拥护者而非监督者.pptx

    财务部门应为企业的拥护者而非监督者.pptx

    轻松搞定Scrum

    这些原则包括尽早和持续交付价值的能力、对衍变的需求做出计划、频繁地交付可工作的功能、业务人员、客户或其拥护者、以及实施者必须在整个项目中每天一起工作、激励的个体以及创造支持环境、内部沟通最高效的方式、...

    财务部门应为企业的拥护者而非监督者(ppt 21).pptx

    【财务管理的转变:从监督者到拥护者】 在企业中,财务部门的角色至关重要,它不仅是公司的经济支柱,更是战略决策的重要参与者。传统的财务管理往往被视作“监督者”,即主要负责事后评估和合规监控,而现代财务...

    品牌拥护的概念架构研究

    因此,如何赢得消费者的拥护成为了企业与学术界共同关注的问题。本文通过文献回顾和消费者调研,深入探讨了品牌拥护的概念,并开发了相应的测量量表。 品牌拥护概念的研究可以从两个角度进行:一是企业对消费者的...

    CAIS的开发审计.pptx

    应对这些问题的策略可能包括改善沟通、强化项目管理、采用敏捷开发方法、设置明确的变更管理流程等。 七、CAIS开发控制和审计 1. 系统开发标准:制定和遵循一套明确的开发标准,如ISO 12207或CMMI,确保所有活动都...

    社会化+精益=敏捷

    它并没有拥护某一特定的开发方法论。而建议将社会协作与精益整合结合,作为技术催化剂用于企业敏捷。应该提前注意的是技术并不保证让公司敏捷。企业敏捷是组织对它的环境总体反应的度量。很多因素都影响着企业敏捷:...

    软件工程(问题定义及可行性研究)

    问题定义活动的主要参与者是系统分析师、出资方领导、出资方技术人员、开发方领导和项目经理等。活动的主要内容是弄清用户需要计算机解决的问题根本所在,及项目所需的资源和经费。问题定义活动的主要产出是《系统...

    后端开发人员面试问题:您可以从中找到与后端相关的问题的列表,以面试潜在的候选人,测试自己或完全忽略

    我不是在求职面试中问技术问题的忠实拥护者:我宁愿与应聘者坐在一些真实的代码前,用手按键盘,面对一个真实的问题,并希望整天进行结对编程与所有其他团队成员一起轮换。 但是,我觉得一些技术性问题可能是开始...

    新版Android开发教程.rar

    � 因为 Android 移动软件平台抱持开放互通的观念,势必吸引不少自由软件的拥护者。 � 开发方向有三个重点 :----------------------------------- Android 编程基础 7 � 应用软件的开发 � 特殊功能的原生链接库 ...

    软件测试应该注意的几大误解

    软件测试应该注意的几大误解软件测试最近看了网络上所谓专家写的文章,发现了一些对TDD与QA部门的误解。本文将解释部分误区,并集中讨论QA团队要在敏捷的世界里获得...即使是敏捷开发的强力拥护者也承认他们需要一系列

    软件技术专业(嵌入式软件开发工程师方向).pdf

    软件技术专业(嵌入式软件开发工程师方向)的培养目标是培养拥护党的基本路线,德、智、体、美等全面发展,掌握本专业的基本知识,能熟练使用国际上最新的嵌入式软件开发环境与工具,熟悉嵌入式软件开发规范,具备较...

    网上前台管理系统 网上拥护

    【网上前台管理系统 网上拥护】是一款专为网络环境设计的开发系统,适用于毕业生进行实践和学习。它集成了多种技术,如JSP(JavaServer Pages)、SQL(Structured Query Language)数据库操作、TOMCAT(一款流行的...

    awesome_R_Githubers:这是Github上R开发人员和拥护者的列表。 这是为了帮助新手创建以下列表

    列表中还可能包含R社区的贡献者和影响者,他们可能是GitHub上的热门项目维护者,或者是R博客、教程和在线课程的创作者。通过关注这些开发者,新手不仅可以学习到最新的R语言技术,还能了解到行业趋势和发展动态。 ...

    软件技术软件开发专业教学课题计划.pdf

    这篇教学课题计划是为了培养拥护党的根本路线,适应生产、建立、管理、效劳第一线需要的,德、智、体、美等方面全面开展的高等技术应用性专门人才。通过这份计划,学生将掌握计算机软件开发必备的根底理论知识和专业...

    opx:Windows的最小功能文件浏览器。 至少是Windows 10,我不是向后兼容性的忠实拥护者

    opx Windows的最小功能文件浏览器。 至少对于Windows 10,我不是向后兼容性的忠实拥护者。 跑 cd opx/ make build build/main.exe -l [path] path可以是绝对目录,也可以相对于当前目录。

    WINDOWSXP常见故障处理借鉴.pdf

    找到at.exe文件,添加自己的拥护权限即可解决问题。 5. **锁定计算机**:在XP中,按Ctrl+Alt+Del不会直接锁定计算机,而是打开任务管理器。要快速锁定计算机,可以按下Win+L键,或创建一个快捷方式,路径为`%windir...

    spirit:在Elixir上进行Web开发的微框架

    我们是ruby忠实拥护者,因此我们希望以类似的微框架为elixir社区做出贡献。 该项目的目的是学习elixir工作原理,并为我们即将进行的项目创建一个框架。 我们知道有很多框架,如 , , 和其他框架,我们将继续学习...

    MySql常见错误代码

    MySql 常见错误代码解析 MySql 是一个流行的关系数据库管理系统,广泛应用于各种 Web 应用程序中。但是,在使用 MySql 过程中,我们经常会遇到各种错误代码,这些错误代码可能会导致数据库崩溃、数据丢失或应用程序...

Global site tag (gtag.js) - Google Analytics