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

预示敏捷方法走偏的15个标志——第1部分

阅读更多

【编者按】误解和“最佳实践”可能会让你的团队原地打转,无法高效产出代码。本文主要介绍预示着敏捷方法走偏的15个标志,作者为 Steven A. Lowe。文章系国内ITOM 管理平台 OneAPM 编译呈现。

要赶时髦却掉沟里的情况很常见。这条准则在敏捷开发中表现得尤为明显。很多公司因为敏捷的好处——容易变更、周期缩短、进化构架,等等,而转投它的怀抱,结果最后公司最好的敏捷实践者纷纷离职,剩下的人员却没有能力修复开发过程中的问题。

大部分敏捷操作的问题并不在于敏捷概念,而在于敏捷方法(Agile)。敏捷并不是一种方法,把它当做方法,就把开发过程与哲学和文化混在了一起,这样做只会回到瀑布模型,甚至更糟的情况。

幸好,辨别敏捷方法出错的标志并不难,还可以采取行动重塑和谐。本文列出了敏捷方法走偏的15个标志,任何一个都可能让你软件开发的前期努力付诸东流。

 

1、实施敏捷与敏捷实践

敏捷以态度为先。如果你的公司强调实施敏捷,而不是敏捷实践,那么你们一开始就走错方向了。敏捷是一个范例,是软件开发方法的思路转变。具体的技巧和仪式稍后再说,而且重要性相对较低。重点在于敏捷实践,拥抱和使用敏捷宣言中列出的理念,你们自然而然就在“实施”敏捷了。

一定要认真阅读敏捷宣言,里面的内容都是字斟句酌才定下来的。想一想其中的含义:去除无用的仪式、管理和书面工作,专注于代码和快速反馈周期,自行组织、自行检查、自行优化。这就是变革。实现宣言列出目标的具体行动则需要不断发展进化。

如果你们强制所有团队遵循一刀切的通用敏捷“流程”,这种做法是错的。这种“标准的”敏捷流程的想法是矛盾的,因为敏捷意味着持续不断地适应和改进。

要想补救,不要忘了你们的主要目标是交付可用的软件,而不是遵循某个方法;没有方法是万能的,适用于所有项目和团队。因此,放手让每个团队自行操作,并修正和改进实践。

 

2、将故事分值当成目标

用户故事是敏捷的一个重要方面,从用户角度描述软件特征的需求。故事被赋予分值,以此来预估完成故事所需要的工作量。

这些故事分值既不是承诺,也不是目标。它们并没有本质意义或衡量标准,只是团队成员就项目复杂程度和团队能力达成的非正式共识。

你的团队的三分故事可能是其他团队的五分故事。将故事分值当做成功的衡量标准,破坏了它作为预估方法的价值,并且会导致“钻制度空子”来假装成功(已达到速度 X),实际上并没有成功(交付可用且有用的软件)。

解决方法很简单:与产品负责人(用户更好)在有用目标和衡量目标上达成共识。不要误将要估计的标准或要计划的规则跟“成功”混为一谈,只有交付了价值才叫成功。

 

3、比较团队或成员的速度

沉迷于指标几乎是大部分程序员的第二天性。但是,如果你的团队将速度——迭代计划中团队所用的每次迭代的故事分值衡量指标——当做比较点,你们就错了。

再次说明一下,速度只是用于预估的中性指标。对比团队速度毫无意义,因为每个团队的基本单位(故事分值)“定义”不同。每个团队都是独一无二的,对比速度并无价值,而且还会引发负面行为和团队之间的竞争,而非合作。

同样的道理也适用于团队内部成员。个体对故事分值的贡献微乎其微。而且最重要的一点,故事分值本身并不是指标。比较同一团队成员的速度并无意义。唯一重要的指标是一个主观指标:在开发软件中交付的价值。

最简单的解决办法:停下来。否则只会事与愿违,浪费时间。

 

4、写任务,而不是写故事

敏捷故事模板在构建某个特征对某个特定用户或角色的好处时很有用。这提醒了我们,目标是为交付能够满足某些人的使用期望的软件。如果你的“故事”大部分内容实际上都是任务,那么开发过程就会变成任务导向(做事情),而不是交付导向(创造价值)。开发团队与用户保持联系很重要,没有用户的软件一无是处。

这种问题的解决办法是平衡:总会有一些必须完成的类似任务的事项,但是故事的规模应该控制在单个迭代过程能够完成,因此把它分解成多个任务并没有意义。“完成”75%的故事毫无用处。要么做,要么不做,没有中间值可取。如果一个故事太过复杂,无法在一个迭代过程中完成,而且无法划分成几个故事,那就应该用几个过程来完成(见下一部分)。

 

5、绝对不要重复故事

如果你把大的故事分解成几个小故事,只是为了能够符合一个迭代过程的时间长度,这样做是不对的。这种行为会产生几个联系更弱、任务导向的“故事”。与之相反,坚持更大的、更自然的故事,用几个迭代过程去完成。有始有终,从能够实现预期性能的最小功能“核心部分”做起,然后在后续的迭代过程中加入其它行为和元素。这样可以保证故事的完整性,从核心部分发展到可用性。

一旦核心部分完成,它的结构和性能可能会引发其它子故事,或者你会在下个迭代过程中发现优先级发生了变化,因此核心部分需要搁置。但是,如果你把故事分解成几个任务,以为把每个任务当成一个“故事”来完成会更容易,那么开发出来的软件就不会包含可识别的附加价值,因为任务倾向于专注不关联的部分,而不是相互联系的价值流。

在本文的第二部分,将继续介绍预示着敏捷方法走偏的另10个标志,敬请期待。

本文系 OneAPM 工程师整理呈现。OneAPM 能为您提供端到端的应用性能解决方案,我们支持所有常见的框架及应用服务器,助您快速发现系统瓶颈,定位异常根本原因。分钟级部署,即刻体验,性能监控从来没有如此简单。想阅读更多技术文章,请访问 OneAPM 官方技术博客

本文转自 OneAPM 官方博客

原文地址:http://www.javaworld.com/article/3075443/agile-development/15-signs-youre-doing-agile-wrong.html

 

 
分享到:
评论

相关推荐

    常见汽车标志常见汽车标志

    **意义**: 跃马标志源于第一次世界大战期间一位杰出飞行员的座机上的图腾,被认为是好运的象征。黑色跃马搭配黄色背景,象征着法拉利汽车的速度与激情,同时也纪念了一位为国捐躯的英雄。 #### 标致PEUGEOT **标志*...

    企业人必修的经典教材.docx

    #### 第一部分:揭开“鲨鱼”的神秘面纱 - **理解“鲨鱼”**:这部分以海洋生物中的鲨鱼作为隐喻,将强势的上级比作鲨鱼,强调在职场中了解并应对这类上级的重要性。 - **案例分析**:“一位‘正义’员工的遭遇”...

    Avid与微软战略云联盟——在媒体及娱乐行业共同发展基于云的解决方案及云服务.pdf

    在未来18个月内,两家公司将提供连续的托管和服务,第一阶段的服务将于2017年下半年提供。 总结以上知识点,我们了解到Avid与微软的战略云联盟是两个技术巨头共同推动媒体和娱乐行业革新的重要行动。该联盟不仅为...

    第二周工作总结1

    鉴于采用极限编程(XP)方法,团队按照迭代开发的模式进行工作,每个迭代周期为一周。下周的焦点将是管理项目功能列表和管理项目人员信息这两个重要功能。项目功能列表的管理将使团队能够追踪项目的各项特性,确保...

    软件工程的发展历史.doc

    首先,我们追溯到19世纪,世界上第一个计算机程序员——Ada Lovelace,她是数学家与发明家Charles Babbage的合作伙伴。Lovelace不仅为Babbage的机械计算机编写了软件,还预见了计算机的潜在用途,比如作曲。她的工作...

    Greenplum开源的这一年.pdf

    本文档中提及的GreenplumDB 5.0版本是自2015年开源以来的第一个稳定版本,预示着它在安全、性能和功能上的成熟。GreenplumDB 5.0的发布计划在2017年初,它基于PostgreSQL,集成了丰富的数据处理和分析功能,如JSON/...

    一年级语文上册期中考试题.docx

    对于初次步入校园的孩子们来说,这是他们学习生涯中的第一次正式考验。在这份“一年级语文上册期中考试题”中,我们看到了教材编者对低年级学生学习特点的悉心考量,以及对未来学习者语文基础能力的细心雕琢。 拼音...

    boxiting:博兴大连遗址

    这暗示了"博兴大连遗址"背后有一个采用敏捷开发方法的团队,他们在持续迭代和更新代码,以保持平台的活力和适应性。 综上所述,"博兴大连遗址"是一个集拳击资源、互动交流、功能完善的网络平台,借助HTML等技术实现...

    基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)

    第一章 绪论 1.1. 选题背景 这几年,许多新名词涌入我们的视野:博客、圈子、播客、WAP等。这些都预示着我们进入了一个新的互联网阶段web 2.0,它是相对web 1.0的新的一类互联网应用的总称,是一次从核心内容到外部...

    俄罗斯推出超级人形机器人.pdf

    在当今飞速发展的科技时代,机器人技术已经取得了令人瞩目的进步。特别是在人形机器人领域,俄罗斯...从Fedor到大宝,再到Kuri,这些杰出的人形机器人作品,不仅代表着技术的前沿,更预示着一个充满希望和机遇的未来。

    Gartner预测未来四大关键技术趋势

    随着数十亿设备相互连接,释放这一潜力成为了IT领域面临的一大挑战。 高级分析是另一大技术趋势,Gartner预测到2012年,数据存储量将会大幅增长,企业将面临海量数据的管理问题。为了从这海量信息中提取有价值的...

Global site tag (gtag.js) - Google Analytics