当前位置: 首页 > news >正文

敏捷开发:想要快速交付就必须舍弃产品质量?

随着敏捷的推广与应用,如今已经成为了最有效的团队级别的方法论,越来越多的软件和 IT 团队正在采用敏捷,但是你在敏捷吗?

自从那一群充满影响力的软件从业者聚集在一起并发布了《敏捷宣言》以来,已经过去了 23 年。敏捷开发实践自宣言首次出现以来,已逐渐成为各种企业必不可少的管理方法。如今,敏捷已经不仅仅是软件开发团队的利器,它已经成为了建立在转型举措之上的领导原则和方向指引。

在这二十余年的发展历程中,敏捷的学习与实施已经成为现代软件驱动型组织中的日常标配。然而,对于软件领导者们来说,仍需思考一个关键问题,即如何引导自己的团队走出仅仅按部就班执行敏捷仪式的误区,真正地“变得敏捷”?

对于领导者来说,敏捷成了基于转型举措的指导原则。在过去的二十多年里,学习实施敏捷方法已经在现代软件驱动的组织中变得司空见惯。不过,对于软件领导者来说,更重要的是思考如何让自己的团队变得敏捷,而不是只简单地执行书中规定的敏捷仪式。

实施敏捷并不意味着就敏捷了

“敏捷是一种态度,而不是一种有界限的技术。”《敏捷宣言》的合著者Alistair Cockburn写道。

虽然宣言的首要原则是强调“个体和交互高于流程和工具”,但不少促进敏捷的软件工具在本质上已经成为了流程本身的替代品。例如,一些团队以"实施敏捷"的名义,进行多达几十人规模的迭代规划,让这些团队成员进行拥挤的站立会议,这势必无法让所有人都能了解团队其他人的协作情况。过于庞大的团队和过长的冲刺计划反而增强了团队的压力,导致成员之间的沟通困难,原本用于监控进度和压力的敏捷工具燃尽图也变成了“烧毁”他们的工具。所以实施敏捷并不意味着就成为了真正的敏捷团队,因为我们都知道敏捷并不仅仅只是一种工作方式或方法,而是注重团队的思维方式和文化。

are-you-doing-agile-or-solidifying-agile

 敏捷  的三个指导原则

敏捷更多的是关于集体思维和团队文化,而不是关于离散的支持过程。许多敏捷驱动的项目都缺乏人们机械地走过场而没有理解和积极应用敏捷真正精神的能力。

根据不同敏捷团队的经验,我们总结出了以下三个原则,帮助团队更好地实施敏捷。

原则1 :持续不懈地管理业务目标,而不是任务

可以问问自己为什么企业关心这个问题。这虽然是个基础性地简单问题,但我们鼓励管理者不断挑战他们的团队,要求他们回答每一个功能请求和用户故事。虽然这看起来有点过头了,但在整个开发生命周期中提出这个问题可以帮助团队养成强化流程本身这一最终目标的习惯,有助于推动团队和外部利益相关者之间的协调。

例如,我们经常与客户合作,帮助他们实现技术堆栈现代化,帮助他们将应用程序迁移到容器编排或云原生平台。这虽然看起来像是一个目标,但实际上是一个实施细节,而不是我们可以衡量或跟踪的业务成果。要明白工具或技术是服务于业务目标的。

原则2 :工具和流程应该促进交互,而不是阻碍

工具是达到目的手段,是为底层流程服务的工具。成熟的流程依赖于工具,但并不从属于工具本身。无论是简单的看板还是先进的项目管理系统(例如禅道项目管理软件),我们经常会看到很多团队只是将这些工具用作于描述“跟踪工作”情况。 

如果没有完全成熟的流程,即使是最好的工具,都会让团队缺乏驱动工作的业务目标的动力。

敏捷的Scrum Master应该努力帮助他们的团队不断学习和探索:如何最好地服务于更广泛的业务目标。比如用于修正方向的过程指标应该是什么?需要的反馈来自哪里?应该多久收到一次反馈?团队和组织应该能够在不破坏现有地整个流程之下,合理地适应不断变化的需求。

原则3 :关注“What” ,而不是“How”

最小可行产品(MVP)的概念是敏捷方法论的基础。推动 MVP 的目标是向用户提供新的软件功能,同时收集和整合反馈以继续改进产品。不过,由于团队负责人经常在不同的团队中工作,并考虑到不同的最终用户,因此此流程很容易与既定的业务策略不一致。

一个团队可能负责探索一种新产品或服务方法,并将使用精益/MVP 工具来确定解决方案。另一个可能强调在现有产品中添加或增强功能,而第三个可能负责改善开发人员体验或基础设施。 

在敏捷的背景下,认识到工作开发方式的差异至关重要,尤其是考虑到组织内的工作节奏。我们经常看到基础设施自动化、站点可靠性和平台工程工作被硬塞到两周的 Scrum 节奏中,而工作的性质并没有完全落入两周的增量。

敏捷作为一种理论和实践,旨在帮助团队更好地适应环境的变化,应对工作中的挑战和问题,提高工作效率和成果的质量。实施敏捷的方法和工具,本应成为达成这个目标的手段,而不应当成为目标本身。真正的敏捷在于团队和个人对敏捷理念的理解,以及由此产生的工作态度、行为和方法。

从纸面上的敏捷实践到真正内化为企业文化的敏捷,这需要我们整个团队的长期努力和尝试。真正的敏捷,核心在于团队成员的积极响应,不断学习和改进,从而提升团队的效率和过程质量。因此,我们不仅要学习和理解敏捷的理念和原则,还要将这些原则融入到自己的日常工作中,才能真正地"变得敏捷"。

总的来说,敏捷是一个循序渐进,又充满挑战的过程。无论你是已经在实践敏捷的团队还是刚接触敏捷的新手,都可以从每日的工作中挖掘出更深的敏捷内涵,学习并理解敏捷的真谛,最终实现由"做敏捷"向 "变得敏捷"的转变。

相关文章:

敏捷开发:想要快速交付就必须舍弃产品质量?

随着敏捷的推广与应用,如今已经成为了最有效的团队级别的方法论,越来越多的软件和 IT 团队正在采用敏捷,但是你在敏捷吗? 自从那一群充满影响力的软件从业者聚集在一起并发布了《敏捷宣言》以来,已经过去了 23 年。敏…...

SNMP-详解指南

目录 SNMP介绍 SNMP的工作机制轮询 SNMP的MIB(管理信息库) SNMP是基于UDP协议 SNMP介绍 SNMP(Simple Network Management Protocol,简单网络管理协议)是一种广泛应用于互联网上的网络管理协议。它提供了一种标准化…...

vue-router 原理【详解】hash模式 vs H5 history 模式

hash 模式 【推荐】 路由效果 在不刷新页面的前提下,根据 URL 中的 hash 值,渲染对应的页面 http://test.com/#/login 登录页http://test.com/#/index 首页 核心API – window.onhashchange 监听 hash 的变化,触发视图更新 window.onhas…...

WebGl/Three 粒子系统 人物破碎及还原运动

粒子 首先,加载模型,这是万千粒子的前身,模型对象由很多面构成,这些面又是由各个点构成的,所以可以将模型的几何体对象geometry赋给粒子对象,粒子物体用Points方式渲染 bloader.load("obj/female02/Fe…...

华为OD-C卷-分披萨[100分]

题目描述 "吃货"和"馋嘴"两人到披萨店点了一份铁盘(圆形)披萨,并嘱咐店员将披萨按放射状切成大小相同的偶数个小块。但是粗心的服务员将披萨切成了每块大小都完全不同奇数块,且肉眼能分辨出大小。 由于两人都想吃到最多的披萨,他们商量了一个他们认…...

uniapp 中video标签视频禁止快,拖拽快进

废话不多说&#xff0c;直接上代码 <video id"myVideo" :src"sectionInfo.type_config.video_url" timeupdate"bindtimeupdate"></video> <script>export default {data() {return {historyTime: 0,}},methods:{// 监听播放进…...

网页端HTML使用MQTTJs订阅RabbitMQ数据

最近在做一个公司的日志组件时有一个问题难住了我。今天问题终于解决了。由于在解决问题中&#xff0c;在网上也查了很多资料都没有一个完整的实例可以参考。所以本着无私分享的目的记录一下完整的解决过程和实例。 需求&#xff1a;做一个统一日志系统可以查看日志列表和一个可…...

课题学习(二十一)----姿态更新的四元数算法推导

声明&#xff1a;本人水平有限&#xff0c;博客可能存在部分错误的地方&#xff0c;请广大读者谅解并向本人反馈错误。    最近需要使用AEKF对姿态进行结算&#xff0c;所以又对四元数进了深入的学习&#xff0c;本篇博客仅对四元数进行推导&#xff0c;后续会对基于四元数的…...

NL2SQL进阶系列(5):论文解读业界前沿方案(DIN-SQL、C3-SQL、DAIL-SQL、SQL-PaLM)、新一代数据集BIRD-SQL解读

NL2SQL进阶系列(5)&#xff1a;论文解读业界前沿方案&#xff08;DIN-SQL、C3-SQL、DAIL-SQL&#xff09;、新一代数据集BIRD-SQL解读 NL2SQL基础系列(1)&#xff1a;业界顶尖排行榜、权威测评数据集及LLM大模型&#xff08;Spider vs BIRD&#xff09;全面对比优劣分析[Text2…...

双指针运用:删除重复元素、移除元素

26.删除重复元素 题目描述 给你一个 非严格递增排列 的数组 nums &#xff0c;请你 原地 删除重复出现的元素&#xff0c;使每个元素 只出现一次 &#xff0c;返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。 考虑 nums 的唯一元…...

什么是三高架构

三高架构是指在软件系统设计与开发中&#xff0c;注重解决高并发性、高可用性和高性能的架构设计模式。 高并发性&#xff1a;指系统能够处理大量并发请求的能力。在高并发场景下&#xff0c;系统需要具备有效的并发处理机制&#xff0c;以保证系统能够快速、准确地响应大量并…...

Unity 对APK签名

关键代码 PS D:\UnityProject\YueJie> jarsigner -verbose -keystore D:\UnityProject\YueJie\user.keystore -signedjar D:\UnityProject\YueJie\meizuemptyapk-release-signed.apk D:\UnityProject\YueJie\MeizuEmpty-release-unsigned.apk 1 示例 # jarsigner的命令格…...

合成孔径雷达干涉测量InSAR数据处理、地形三维重建、形变信息提取、监测等应用

合成孔径雷达干涉测量&#xff08;Interferometric Synthetic Aperture Radar, InSAR&#xff09;技术作为一种新兴的主动式微波遥感技术&#xff0c;凭借其可以穿过大气层&#xff0c;全天时、全天候获取监测目标的形变信息等特性&#xff0c;已在地表形变监测、DEM生成、滑坡…...

QT进阶------------------QPushButton(快速添加按钮与使用)

1、解决如何快速的添加按钮 在qt中&#xff0c;通常我们喜欢一个按钮添加一个信号与槽&#xff0c;但是这样写太过浪费时间。要是多个按钮那不是要写30个信号与槽&#xff0c;说实话&#xff0c;我不太喜欢这样。 在ui中&#xff0c;只要拖动按钮&#xff0c;会自动生成按钮的名…...

Vue项目管理器创建项目

黑马程序员JavaWeb开发教程 文章目录 1、创建新项目2、详情3、预设4、功能5、配置6、是否保存为预设模板7、正在创建项目8、创建完成 1、创建新项目 2、详情 3、预设 选择手动&#xff0c;点击下一步 4、功能 只需要额外选择一项–Router 即可&#xff0c;其余的保持默认&a…...

PHP-extract变量覆盖

[题目信息]&#xff1a; 题目名称题目难度PHP-extract变量覆盖1 [题目考点]&#xff1a; 变量覆盖指的是用我们自定义的参数值替换程序原有的变量值&#xff0c;一般变量覆盖漏洞需要结合程序的其它功能来实现完整的攻击。 经常导致变量覆盖漏洞场景有&#xff1a;$$&#x…...

研究表明,全球互联网流量竟有一半来自机器人

据Cyber News消息&#xff0c;Thales Imperva Bad Bot近期做了一份报告&#xff0c;显示在2023年有49.6%的互联网流量竟来自机器人&#xff0c;比上一年增长 2%&#xff0c;达到自2013年以来观察到的最高水平。 报告称&#xff0c;这一趋势正对企业组织产生负面影响&#xff0c…...

橡胶衬板的更换与安装

橡胶衬板的更换与安装 橡胶衬板作为一种重要的工业材料&#xff0c;广泛应用于各种设备和机器中&#xff0c;以提供减震、防滑、耐磨等功能。然而&#xff0c;随着时间的推移和使用频率的增加&#xff0c;橡胶衬板可能会磨损或老化&#xff0c;需要及时更换和安装。本文将介绍…...

Compose 简单组件

文章目录 Compose 简单组件TextText属性使用AnnotatedStringSpanStyleParagraphStyle SelectionContainer 和 DisableSelectionClickableText TextFieldTextField属性使用OutlinedTextFieldBasicTextFieldKeyboardOptions 键盘属性KeyboardActions IME动作 ButtonButton属性使用…...

第十一届蓝桥杯省赛真题(C/C++大学B组)

目录 试题A &#xff1a;门牌制作 试题B &#xff1a;既约分数 试题C &#xff1a;蛇形填数 试题D &#xff1a;跑步训练 试题E &#xff1a;七段码 试题F &#xff1a;成绩统计 试题G &#xff1a;回文日期 试题H &#xff1a;字串分值 试题I &#xff1a;平面切分&a…...

Golang dig框架与GraphQL的完美结合

将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用&#xff0c;可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器&#xff0c;能够帮助开发者更好地管理复杂的依赖关系&#xff0c;而 GraphQL 则是一种用于 API 的查询语言&#xff0c;能够提…...

前端开发面试题总结-JavaScript篇(一)

文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包&#xff08;Closure&#xff09;&#xff1f;闭包有什么应用场景和潜在问题&#xff1f;2.解释 JavaScript 的作用域链&#xff08;Scope Chain&#xff09; 二、原型与继承3.原型链是什么&#xff1f;如何实现继承&a…...

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题

在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件&#xff0c;这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下&#xff0c;实现高效测试与快速迭代&#xff1f;这一命题正考验着…...

Android第十三次面试总结(四大 组件基础)

Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成&#xff0c;用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机&#xff1a; ​onCreate()​​ ​调用时机​&#xff1a;Activity 首次创建时调用。​…...

从“安全密码”到测试体系:Gitee Test 赋能关键领域软件质量保障

关键领域软件测试的"安全密码"&#xff1a;Gitee Test如何破解行业痛点 在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的"神经中枢"。从国防军工到能源电力&#xff0c;从金融交易到交通管控&#xff0c;这些关乎国计民生的关键领域…...

认识CMake并使用CMake构建自己的第一个项目

1.CMake的作用和优势 跨平台支持&#xff1a;CMake支持多种操作系统和编译器&#xff0c;使用同一份构建配置可以在不同的环境中使用 简化配置&#xff1a;通过CMakeLists.txt文件&#xff0c;用户可以定义项目结构、依赖项、编译选项等&#xff0c;无需手动编写复杂的构建脚本…...

qt+vs Generated File下的moc_和ui_文件丢失导致 error LNK2001

qt 5.9.7 vs2013 qt add-in 2.3.2 起因是添加一个新的控件类&#xff0c;直接把源文件拖进VS的项目里&#xff0c;然后VS卡住十秒&#xff0c;然后编译就报一堆 error LNK2001 一看项目的Generated Files下的moc_和ui_文件丢失了一部分&#xff0c;导致编译的时候找不到了。因…...

EasyRTC音视频实时通话功能在WebRTC与智能硬件整合中的应用与优势

一、WebRTC与智能硬件整合趋势​ 随着物联网和实时通信需求的爆发式增长&#xff0c;WebRTC作为开源实时通信技术&#xff0c;为浏览器与移动应用提供免插件的音视频通信能力&#xff0c;在智能硬件领域的融合应用已成必然趋势。智能硬件不再局限于单一功能&#xff0c;对实时…...

生产管理系统开发:专业软件开发公司的实践与思考

生产管理系统开发的关键点 在当前制造业智能化升级的转型背景下&#xff0c;生产管理系统开发正逐步成为企业优化生产流程的重要技术手段。不同行业、不同规模的企业在推进生产管理数字化转型过程中&#xff0c;面临的挑战存在显著差异。本文结合具体实践案例&#xff0c;分析…...