HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

敏捷中的不良观点

  • 2010-12-31
  • 本文字数:3581 字

    阅读完需:约 12 分钟

受众:

所有软件开发专业人员都会在本文中找到感兴趣的地方。而经理、CIO 和软件架构师将会对本文篇文章最感兴趣。这一话题可能会引起许多争议,但我写这篇文章是想深入剖析敏捷运动中日益严重的问题。

“你在这干嘛?敏捷不需要经理。”

之前曾听到过这样的话么?想象一下,听到开发人员认为你的职位根本不应该存在,是多么的让人震惊…好像你作为经理的贡献仅仅是创造了这一职位。在项目经理初次遇到即将一起工作的开发团队时常遇到这种情形。可以肯定的是,敏捷宣言原文中完全没有提到项目管理,并且后来的敏捷理论者们更进一步,建议把项目经理调整为教练或是支持的角色。

然而,这一观点忽略了现实。

可以确信,对于小型无集成依赖的开发项目,只要拥有一个能胜任的、有经验且能干的团队,或许只需对项目进行很少的监管就行了。然而,项目越大,项目中的集成依赖越多,且开发在项目中所占比重越小…需要项目经理协调、沟通和指导的总体投入就越多。在一个开发只占全部预算 10% 的项目中,可以考虑让 scrum master 来带领开发,同时向项目经理汇报。

此外,开发团队几乎从未注意到或是擅长于管理预算。在软件开发上所花的时间越多,花在其他事情上的时间就越少。这让一些开发人员产生了一种缪见,他们会开始认为他们所做的一切才是项目,而其他人在做的则无关紧要。

这里所说的不良观点是指不认可其他角色和专业的价值,并顽固地坚持于哲学性的解释而丝毫不考虑现实中所需的灵活性。如果这种观点进一步发展,把这种观点扩展至各种领域内的所有管理层,那这种观点几乎就像是工会主义或是新共产主义了。显然,把公司文化和组织结构采取大幅度的全面裁剪至扁平化水平是过激的。他的观点是片面的,但如果他处于某个合适的位置(一名领导者),他的观点就会得到支持,并使开发团队和管理层的关系恶化;把完成项目的目标变成管理层与工作者之间的阶级斗争。

“是团队在运作项目,而不是经理…我们会决定要做什么。”

这一观点通常是从认为不再需要管理角色的观念中产生。这种观点无视事实的真相;许多决策需要公司中许多部门的合作才能做出;而不能只由开发团队来做出…包括软件的设计和架构。

在其他情况下,如果开发人员忽视了项目的其他方面,也会产生这样的观念。更糟糕的情况是,开发人员曾在不良的项目经历中备受煎熬,并因此认为在一些可察觉的问题发生前就应该“采取行动”。

不管怎样,敏捷成了这种观点的借口和基础,认为多数(如果不是全部的话)开发团队之上的管理结构毫无贡献,并应该立刻去除对他们的投入。以我的经验看来,让这种观点占主导的话,通常的结果是无止境的重新架构会议、严重的预算超支、永无截止之日,并导致团队对自身任务大失所望、士气低迷。

“敏捷里没有截止日期或是进度表。”

我们中对资本预算和公司财务有深入了解的人都知道这有多傻。然而,如果你读过 Ken Schwaber 关于 Scrum 的书,其中确实谈到抛弃甘特图而选用燃尽图。的确,燃尽图是个简洁而深思熟虑的创新,但有人会就此认为这意味着没有交付时间表…即,钱永远也花不完。

我有这么方面的惨痛经历。我观察过一支团队,领导这支团队的技术负责人很强,并颇具魅力,我与该团队都向这位负责人汇报。为了给客户开发一个“可工作的产品”,他会放弃任何基于时间的目标。没有任何时间限制,团队处于完全失控的状态。职业道德下降或者根本就不存在了。希望产品获得成功的人失去了所有动机和动力。客户变得迷惑,尽管产品特性和变更请求陷入了混乱,为什么还要如此重视各种技术架构。燃尽图让他们更加迷惑。他们想要知道的是,产品什么时候能够完成?团队只能回答: “我们没有时间表。我们将继续开发,直到完成为止。”

当任何人尝试设置可行的目标时,他们会立刻被扣上“反敏捷”的帽子。当团队被告知他们的项目严重超支时,他们的眼神黯然而迷惑。他们做的东西、时间还有经费之间的联系迷失在画在白板上的抽象设计模式之中。

现实是…总会有个截止日期和交付时间表,无论是显性的还是隐性的。没人会把钱投入到一个永远不会完成的开发项目上。更现实的是,我发现在非敏捷团队和敏捷团队之间协调深度集成或非开发方面的工作时,甘特图仍然很有用处。

产生敏捷没有时间表的观点,主要是由于敏捷方法提出的见解:项目应该不断加入新的特性,直到钱花完为止。这有点理想化,并忽视了一个事实:当开发团队无法在预算内完成最起码的功能时,开发出来的应用程序是毫无用处的。这种观点最不好的地方是,有些人会选择新的技术来跟踪团队进展及责任,并把它作为逃避交付责任的理由。

“敏捷的代码本身就是文档。没必要有需求文档、架构图或是技术规范。”

如果你是名软件架构师或是技术经理,通常要面对这种观点。这种几乎不加掩饰的攻击意在质疑你的角色、经验和存在协调者的必要性——协调某个创造公司收入的 78%、有 2800 万行代码的软件项目的所有技术设计。

当然这种观点通常是由于无知导致的。或许开发人员最近写的一个 2000 行代码的 web 应用程序,除源码外很少需要其他工件,但规模大了就会需要了。你知道这点,你的管理层也知道,但这种不好的敏捷观念认为,如果公司跟上诸如 Scrum 之类的开发方法,你这种角色根本就不需要存在。多数软件系统需要由少数几人监督方向、协调技术愿景,同时需要很多人去实现它。

以我自身的经验来看,讽刺的是,这种观点来自来想成为架构师的开发人员。他用批评,与技术负责人争辩,提出他对敏捷技术的认识来让人感觉到他的存在,认为这样他人才会更尊敬他,会给他渴望的职位。相反地,大家觉得他很讨厌,是个麻烦制造者。此外,由于在提出敏捷概念时不够机智,使得高级技术负责人员对任何敏捷事物都没有好感。

“敏捷迅速地拥抱变化;拥抱所有变化。”

我从一名经理那里了解到这种观点,而不是从一名开发人员那里。原来他把“快速拥抱变化”理解成了各种变化…不只是最初敏捷创立者们所指的业务需求变化。这样,基础架构的变化成了常事,在不同的开源技术中转变也被视为“好事”,即使这些变化意味着让团队彻底远离他们的技能并推迟项目交付好几个月。组织上的实验和人员角色的快速变化也变成了“快速拥抱变化”的一部分。最终结果就是一团糟。

明确地接受客户提出的变更很重要,但没有系统去管理这些变更的话,你就是自找麻烦。应该有人去跟踪所有的需求和变更以及它们对项目交付的影响,以便拿它们与客户进行沟通。这对做出有效的项目决策是很有必要的。如果你不这么做,那客户会有不切实际的想法,他们的任何要求都将被纳入项目…我们知道这会导致什么后果。

因此这个不良观点是:接受变化,但没有对变化进行管理。绝对的自由只会导致希望破灭和无法满足的期望。变化是好的,但猛烈的变化会造成混乱。

“敏捷使用通才;我们自己测试软件。不需要 QA 部门。”

同样,这一看法在哲学上的解释是正确的,但我的相关经验,特别是在大型软件开发项目上的经验是…需要有另一双眼睛盯着,看开发人员开发出了什么,它们是否能良好地工作。为自己的技术水平感到骄傲,这很好,应该鼓励。但有时骄傲会变成盲目的接受和抵触。这需要有一名强有力且非常可靠的人来识别出他们的局限,并找出缓解的办法。使用通才的关键,是要确保你的团队由一群精干的多面手组成。反思这种想法,它把软件开发更多地看作是工艺而非流水线生产。然而,作为软件开发负责人,我们不能假定人力资源十分完善而忽略事实。最好正视风险,做好应对规划,历史证明开发人员无法找出他们自己的所有错误。

以我自己的经验来说,抱有这种观点的人不喜欢任何人测试他们的代码,对任何建设性的批评都大为光火。特别是在某个案例中,我们发现了根本的原因,那名开发人员确实不擅长编码。我们为他提供了培训和指导,在数月的努力之后,我们发现很显然他不适合这一职业。

因此,使用通才挺好,但为了追求哲学上的纯净而忽略这几十年来的事实真相,这种观点就是过时的。

总结

总之,这些问题在前敏捷(pre-agile)世界中也会出现。但根据我的经验,这些不良观点会在新的开发方法中寻找庇护和辩解理由,但独立地看,这新方法或许从未有过这种意图。这些观点可能会控制敏捷方法并把健康的敏捷运动弄糟,作为软件开发领导,在此之前设法纠正这些观点很重要。敏捷包含了一个重要的要点:简化、产品开发期间客户的参与、承担责任、保持联系。丢失了这一要点会让人极其失望。那么你的想法是什么呢?你有这些观点么?你如何对付它们?我很想听听你的意见。

关于作者

Christopher R. Goldsbury 是名软件开发专业人员,在整个职业生涯中他担任过开发人员、架构师、scrum master、开发经理、项目经理和质量保证经理。Chris 把他的经历和想法写在他的博客上。

查看英文原文: Bad Attitudes of Agile


感谢石永超对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家加入到 InfoQ 中文站用户讨论组中与我们的编辑和其他读者朋友交流。

2010-12-31 00:003471

评论

发布
暂无评论
发现更多内容

面试官:说说你的项目亮点?

王磊

Java

三星Galaxy Z Flip6:内外兼修小折花魁,解锁科技改变生活新方式

科技热闻

Web3 游戏周报(7.28 - 8.03)

Footprint Analytics

链游

跨平台数据同步:京东商品详情API的多平台支持

技术冰糖葫芦

api 货币化 API 文档 API 测试 pinduoduo API

万字干货:从消息流平台Serverless之路,看Serverless标准演进

快乐非自愿限量之名

数据库 Serverless 服务器

AI大模型在业务受理的智能化实践和探索

鲸品堂

运营商 大模型 企业服务大模型

Netty的源码分析和业务场景

快乐非自愿限量之名

php Netty 开发语言

会声会影发光字体制作 会声会影字体怎么淡化退出 视频剪辑制作教程

阿拉灯神丁

字幕 会声会影2023 视频剪辑软件下载 视频剪辑软件

【YashanDB知识库】自关联外键插入数据时报错:YAS-02033 foreign key constraint violated parent key not found

YashanDB

yashandb 崖山数据库 崖山DB

ETL数据集成丨将GreenPlum数据同步至Doris数仓

RestCloud

Doris greenplum 数据同步 ETL 数据集成工具

电车风噪大?巧妙利用空气动力学和仿真技术,解决风噪影响

Altair RapidMiner

汽车 仿真 汽车仿真 altair 新能源车

开发体育赛事转播软件平台的成功之道:确定目标市场的需求

软件开发-梦幻运营部

推荐3款免费且实用的数据库管理工具

EquatorCoco

数据库

2025第十三届中国电子信息博览会(CITE深圳电子展)

AIOTE智博会

电子展 深圳电子展 电子信息展

OpenTiny HUICharts 正式开源发布,一个简单、易上手的图表组件库

OpenTiny社区

Vue js eCharts OpenTiny

如何判断IP地址属于住宅IP还是机房IP

IPIDEA全球HTTP

代理IP

【Java】Jsoup 解析HTML报告

不在线第一只蜗牛

Java html

TiKV Raft 快照全流程丨TiKV 源码解读(二十二)

PingCAP

数据库 TiKV 源码解读 TiKV

腾讯云联合中科软发布 “保险行业一体化大数据解决方案” 共筑保司数据基座

腾讯云大数据

腾讯云 wedata

3个办公网站,助你又快又好地搞定工作总结ppt!

彭宏豪95

效率工具 职场 PPT 效率办公 AI生成PPT

沧州杨埕水库:创建巡检“二维码”,为安全管理赋能

草料二维码

安全管理 设备管理 草料二维码 设备巡检二维码 设备巡检系统

淘宝天猫商品详情API:商品参数对比与选择

技术冰糖葫芦

API api 货币化 API 文档 API 测试

软件测试学习笔记丨BlueOcean 安装与使用

测试人

软件测试

微软将深度整合 Azure AI 与 GitHub;Stability AI 0.5 秒生成三维建模丨 RTE 开发者日报

声网

蔚来汽车 x TiDB丨单表超 20 亿条数据,从 MySQL 到 TiDB 的迁移思考与实践

PingCAP

MySQL TiDB 蔚来

【JavaScript】前端算法题 40道题+解析

EquatorCoco

JavaScript 前端 前端算法

TCL 实业 x TiDB丨从分销转向零售,如何考虑中台建设和数据库选型?

PingCAP

TCL 营销中台 实业

JavaScript 中的闭包和事件委托

不在线第一只蜗牛

JavaScript 前端

基于人工智能的代码分析与 Bug 检测实战

霍格沃兹测试开发学社

小程序容器技术对比,我们的App也能运行小程序了

Geek_2305a8

敏捷中的不良观点_研发效能_Christopher R. Goldsbury_InfoQ精选文章