敏捷开发:想要快速交付就必须舍弃产品质量?
随着敏捷的推广与应用,如今已经成为了最有效的团队级别的方法论,越来越多的软件和 IT 团队正在采用敏捷,但是你在敏捷吗?
自从那一群充满影响力的软件从业者聚集在一起并发布了《敏捷宣言》以来,已经过去了 23 年。敏捷开发实践自宣言首次出现以来,已逐渐成为各种企业必不可少的管理方法。如今,敏捷已经不仅仅是软件开发团队的利器,它已经成为了建立在转型举措之上的领导原则和方向指引。
在这二十余年的发展历程中,敏捷的学习与实施已经成为现代软件驱动型组织中的日常标配。然而,对于软件领导者们来说,仍需思考一个关键问题,即如何引导自己的团队走出仅仅按部就班执行敏捷仪式的误区,真正地“变得敏捷”?
对于领导者来说,敏捷成了基于转型举措的指导原则。在过去的二十多年里,学习实施敏捷方法已经在现代软件驱动的组织中变得司空见惯。不过,对于软件领导者来说,更重要的是思考如何让自己的团队变得敏捷,而不是只简单地执行书中规定的敏捷仪式。
实施敏捷并不意味着就敏捷了
“敏捷是一种态度,而不是一种有界限的技术。”《敏捷宣言》的合著者Alistair Cockburn写道。
虽然宣言的首要原则是强调“个体和交互高于流程和工具”,但不少促进敏捷的软件工具在本质上已经成为了流程本身的替代品。例如,一些团队以"实施敏捷"的名义,进行多达几十人规模的迭代规划,让这些团队成员进行拥挤的站立会议,这势必无法让所有人都能了解团队其他人的协作情况。过于庞大的团队和过长的冲刺计划反而增强了团队的压力,导致成员之间的沟通困难,原本用于监控进度和压力的敏捷工具燃尽图也变成了“烧毁”他们的工具。所以实施敏捷并不意味着就成为了真正的敏捷团队,因为我们都知道敏捷并不仅仅只是一种工作方式或方法,而是注重团队的思维方式和文化。

“ 敏捷 ” 的三个指导原则
敏捷更多的是关于集体思维和团队文化,而不是关于离散的支持过程。许多敏捷驱动的项目都缺乏人们机械地走过场而没有理解和积极应用敏捷真正精神的能力。
根据不同敏捷团队的经验,我们总结出了以下三个原则,帮助团队更好地实施敏捷。
原则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标签视频禁止快,拖拽快进
废话不多说,直接上代码 <video id"myVideo" :src"sectionInfo.type_config.video_url" timeupdate"bindtimeupdate"></video> <script>export default {data() {return {historyTime: 0,}},methods:{// 监听播放进…...
网页端HTML使用MQTTJs订阅RabbitMQ数据
最近在做一个公司的日志组件时有一个问题难住了我。今天问题终于解决了。由于在解决问题中,在网上也查了很多资料都没有一个完整的实例可以参考。所以本着无私分享的目的记录一下完整的解决过程和实例。 需求:做一个统一日志系统可以查看日志列表和一个可…...
课题学习(二十一)----姿态更新的四元数算法推导
声明:本人水平有限,博客可能存在部分错误的地方,请广大读者谅解并向本人反馈错误。 最近需要使用AEKF对姿态进行结算,所以又对四元数进了深入的学习,本篇博客仅对四元数进行推导,后续会对基于四元数的…...
NL2SQL进阶系列(5):论文解读业界前沿方案(DIN-SQL、C3-SQL、DAIL-SQL、SQL-PaLM)、新一代数据集BIRD-SQL解读
NL2SQL进阶系列(5):论文解读业界前沿方案(DIN-SQL、C3-SQL、DAIL-SQL)、新一代数据集BIRD-SQL解读 NL2SQL基础系列(1):业界顶尖排行榜、权威测评数据集及LLM大模型(Spider vs BIRD)全面对比优劣分析[Text2…...
双指针运用:删除重复元素、移除元素
26.删除重复元素 题目描述 给你一个 非严格递增排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。 考虑 nums 的唯一元…...
什么是三高架构
三高架构是指在软件系统设计与开发中,注重解决高并发性、高可用性和高性能的架构设计模式。 高并发性:指系统能够处理大量并发请求的能力。在高并发场景下,系统需要具备有效的并发处理机制,以保证系统能够快速、准确地响应大量并…...
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数据处理、地形三维重建、形变信息提取、监测等应用
合成孔径雷达干涉测量(Interferometric Synthetic Aperture Radar, InSAR)技术作为一种新兴的主动式微波遥感技术,凭借其可以穿过大气层,全天时、全天候获取监测目标的形变信息等特性,已在地表形变监测、DEM生成、滑坡…...
QT进阶------------------QPushButton(快速添加按钮与使用)
1、解决如何快速的添加按钮 在qt中,通常我们喜欢一个按钮添加一个信号与槽,但是这样写太过浪费时间。要是多个按钮那不是要写30个信号与槽,说实话,我不太喜欢这样。 在ui中,只要拖动按钮,会自动生成按钮的名…...
Vue项目管理器创建项目
黑马程序员JavaWeb开发教程 文章目录 1、创建新项目2、详情3、预设4、功能5、配置6、是否保存为预设模板7、正在创建项目8、创建完成 1、创建新项目 2、详情 3、预设 选择手动,点击下一步 4、功能 只需要额外选择一项–Router 即可,其余的保持默认&a…...
PHP-extract变量覆盖
[题目信息]: 题目名称题目难度PHP-extract变量覆盖1 [题目考点]: 变量覆盖指的是用我们自定义的参数值替换程序原有的变量值,一般变量覆盖漏洞需要结合程序的其它功能来实现完整的攻击。 经常导致变量覆盖漏洞场景有:$$&#x…...
研究表明,全球互联网流量竟有一半来自机器人
据Cyber News消息,Thales Imperva Bad Bot近期做了一份报告,显示在2023年有49.6%的互联网流量竟来自机器人,比上一年增长 2%,达到自2013年以来观察到的最高水平。 报告称,这一趋势正对企业组织产生负面影响,…...
橡胶衬板的更换与安装
橡胶衬板的更换与安装 橡胶衬板作为一种重要的工业材料,广泛应用于各种设备和机器中,以提供减震、防滑、耐磨等功能。然而,随着时间的推移和使用频率的增加,橡胶衬板可能会磨损或老化,需要及时更换和安装。本文将介绍…...
Compose 简单组件
文章目录 Compose 简单组件TextText属性使用AnnotatedStringSpanStyleParagraphStyle SelectionContainer 和 DisableSelectionClickableText TextFieldTextField属性使用OutlinedTextFieldBasicTextFieldKeyboardOptions 键盘属性KeyboardActions IME动作 ButtonButton属性使用…...
第十一届蓝桥杯省赛真题(C/C++大学B组)
目录 试题A :门牌制作 试题B :既约分数 试题C :蛇形填数 试题D :跑步训练 试题E :七段码 试题F :成绩统计 试题G :回文日期 试题H :字串分值 试题I :平面切分&a…...
Vim 调用外部命令学习笔记
Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...
浅谈 React Hooks
React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...
Linux应用开发之网络套接字编程(实例篇)
服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...
多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度
一、引言:多云环境的技术复杂性本质 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时,基础设施的技术债呈现指数级积累。网络连接、身份认证、成本管理这三大核心挑战相互嵌套:跨云网络构建数据…...
Ubuntu系统下交叉编译openssl
一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机:Ubuntu 20.04.6 LTSHost:ARM32位交叉编译器:arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...
C++_核心编程_多态案例二-制作饮品
#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为:煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例,提供抽象制作饮品基类,提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...
前端倒计时误差!
提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...
SCAU期末笔记 - 数据分析与数据挖掘题库解析
这门怎么题库答案不全啊日 来简单学一下子来 一、选择题(可多选) 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘:专注于发现数据中…...
pam_env.so模块配置解析
在PAM(Pluggable Authentication Modules)配置中, /etc/pam.d/su 文件相关配置含义如下: 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块,负责验证用户身份&am…...
vue3 字体颜色设置的多种方式
在Vue 3中设置字体颜色可以通过多种方式实现,这取决于你是想在组件内部直接设置,还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法: 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...
