迭代的难题:敏捷团队每次都有未完成的工作,如何破解?
各位是否遇到过类似的情况:每次迭代结束后,团队都有未完成的任务,很少有完成迭代全部的工作,相反,总是将上期未完成的任务重新挪到本期计划会中,重新规划。敏捷的核心之一是“快速迭代,及时反馈”,为什么会发生这种情况呢?
这也是本篇文章想和大家聊的,为什么团队的每次迭代都有未完成的工作,以及我们可以如何改善?
团队承诺不足
在项目过程中,我们有时会遇到这样的场景:老板为了让团队更好地更快地完成项目,有时会采取一些方法,比如告诉团队: 如果不能完成所有工作,他会“采取纠正措施,必要时甚至会解雇”。
这种来自领导的高期望会带来什么结果呢?那就是这个团队不会在迭代过程中 积极地完成大量工作。相反,他们会尽量选择足够多的工作,来避免因为“偷懒”而惹上麻烦,但也不会冒着无法完成全部工作的风险,而选择过多的工作。
团队的谨慎和保守,会让团队陷入“舒适区”,从而降低工作效率,影响整个项目的进度。
敏捷开发不仅注重结果,同时也注重过程。而过于严厉的领导可能也会让团队成员感到压力过大,进而过于关注工作完成情况,进一步限制了他们的主观能动性和自我驱动性。
团队过度承诺
团队对迭代/冲刺中可以完成的工作,设定高一点的目标,是正常的,因为这能激发团队积极性和动力, 但如果团队习惯性地过度承诺,就会变成问题。
当团队过度承诺时,就会一直无法完成迭代中的事情:迭代时间到了,成员就把任务推进到下一个迭代,最终导致项目的延期。时间久了,团队还可能形成一种“总有机会弥补”的心态,导致对每一个迭代的责任心减弱,团队也无法明白敏捷的意义和作用是什么。慢慢地,迭代的开始或者结束就变成了一个随意且没有意义的日期。
所以团队负责人应该让团队明白迭代结束的意义:当迭代结束时,团队会体验到成就感,让团队感受到这种“小胜利的力量”,从而保持更好的节奏和状态迎接下一个迭代。
敏捷团队过度承诺的两个原因
团队过度承诺的最常见原因之一是来自 领导层或团队外部的压力。压力也分好坏,新产品给公司带来的新机会,也能为客户和公司带来更多好处。为了更快的给公司、客户带来好处,他们会采用施加一些压力的方式,激励团队,以便能更快更好地完成任务。但有时, 有些领导的压力并不合适,就像开头提到采用裁员的方式威胁成员的领导那样,不仅不会正向激励成员,反而带来更不好的效果。
团队过度承诺的第二大常见原因是 自身的压力。比如对自我的高要求,满足自己的高期望,或者希望取悦外人,得到别人的认可。
无论过度承诺的压力是来自外部还是团队内部,这对团队来说都不是一个健康的环境,对组织来说也不是一个好的情况。
组织需要可预测性
所有组织都需要一定程度的可预测性,但如果过于追求预期目标的完成,可能反而失去掌控,比如团队设定太高的冲刺目标,反而会因达不到目标而导致失去了工作计划的可控性,降低了可预测性。
因此,团队应该合理规划工作计划,既要设定目标,也要考虑实际操作性。当团队偶尔出现失误时,领导者和团队外的人需要表示理解,这样才能保持工作的可预测性。
三个改善方法
这里分享3个可以帮助改善经常无法实现冲刺目标的团队的方法。
1. 要有适当的目标
什么是适当的目标?根据经验,一个团队适当的目标是 在大约 80% 的时间内完成他们计划完成的所有工作。这不是说在每个迭代完成计划工作的 80%,而是指在 10 次迭代中的 8 次迭代是 100% 完成了所有计划。
不过对于那些迭代节奏容易被频繁打乱的团队来说,每次都成功完成所有工作是不可能的。尤其是那些需要快速响应问题的团队,就可能需要降低目标比例。
2. Sprint 承诺是目标,而不是保证
首先,让团队每个人都明白,冲刺承诺是目标,而不是保证。
承诺是 团队承诺尽最大努力实现目标。如果团队被迫做出保证,他们会少保证一点,以确保“保证”安全。
保证是 有期限的,表示确定性和责任。有时客户确实需要在某个日期之前提供某些功能,这时团队就需要作出保证:一定会在某个日期前完成。
由于承诺和保证的细微差别,作为团队负责人,还需要说服领导,以此让他们在后续的迭代进度中,给予支持和理解。可以尝试将承诺/保证的差异放到领导者可以理解的例子中,帮助他们更好地理解二者的区别,更助于团队执行。例如,可以尝试让他们想象一下,如果询问销售团队他们会承诺销售额达到多少。然后想象一下询问销售团队是否会保证这个金额,或者是其他金额。
3. 找出过度承诺根本原因
除了上面提到的过度承诺的两个原因,还有其他原因。比如有时候无法达成目标,可能是团队对“完成”的预期过于乐观。那么在冲刺计划会议中可以尝试问这样的问题:
- 在迭代中,有哪些情况可能出错并导致无法实现目标?
- 为了实现这个目标,需要做哪些准备?
通过这样类似问题,来帮助团队了解他们计划会中任务的难易程度,以及为了达成任务而预设的所有假设。
最后,我想说的是,虽然衡量敏捷团队的一个常见标准是团队成员是否完成了迭代中的所有工作,但这并 不意味着我们应该期望团队每次都能完成所有的任务。这不现实。即便是一个优秀的团队,可能也不会每次迭代都能实现目标。就像最厉害的篮球运动员也不是每次都能投进的。重要的是让团队明白并记住: 完成目标是承诺,而非保证。
相关文章:

迭代的难题:敏捷团队每次都有未完成的工作,如何破解?
各位是否遇到过类似的情况:每次迭代结束后,团队都有未完成的任务,很少有完成迭代全部的工作,相反,总是将上期未完成的任务重新挪到本期计划会中,重新规划。敏捷的核心之一是“快速迭代,及时反馈…...

ChatGPT未来可能应用于iPhone?
苹果接即将与OpenAI达成协议 ChatGPT未来应用于iPhone 前言 就在5月11日,苹果公司正与OpenAI进行深入讨论,计划在其最新的iOS操作系统中整合OpenAI的先进技术。这一举措是苹果公司在为其产品线融入更先进的人工智能功能所做努力的一部分。 目前情况双方…...
Spring之bean的细节(创建方式、作用范围、生命周期)
在Spring框架中,Bean是一个非常重要的概念,它代表了应用程序中需要被管理的对象。关于Bean的细节,我们可以从创建方式、作用范围以及生命周期三个方面进行阐述。 创建方式 Spring支持以下三种方式创建Bean: 调用构造器创建Bean…...
探索STLport:C++标准模板库的开源实现
在C++编程的世界里,STL(标准模板库)是一个不可或缺的工具。它提供了许多用于数据结构、算法和其他重要功能的模板类和函数。然而,标准模板库的实现并非只有一种,而其中一个备受推崇的选择就是STLport。 官方下载: STLport: Welcome! STLport是什么? STLport是一个开…...

计算机Java项目|Springboot高校心理教育辅导设计与实现
作者主页:编程指南针 作者简介:Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、腾讯课堂常驻讲师 主要内容:Java项目、Python项目、前端项目、人工智能与大数据、简…...
数据结构简单介绍、算法简单介绍、算法复杂度、时间复杂度等的介绍
文章目录 前言一、什么是数据结构二、什么是算法三、算法复杂度1. 时间复杂度① 时间复杂度的定义② 大O的渐进表示法 总结 前言 数据结构简单介绍、算法简单介绍、算法复杂度、时间复杂度等的介绍 一、什么是数据结构 数据结构是计算机存储,组织数据结构的方式&…...

Google I/O 2024:有关AI的一切已公布|TodayAI
2024年谷歌I/O大会圆满落幕,谷歌在会上发布了一系列更新,涵盖从最新的人工智能技术到Android系统的多项改进。此次大会特别关注于谷歌的Gemini人工智能模型,并详细介绍了这些模型如何被融入到Workspace、Chrome等多个应用程序中,展…...

【Shell脚本】Shell编程之数组
目录 一.数组 1.基本概念 2.定义数组的方法 2.1.方法一 2.2.方法二 2.3.方法三 2.4.方法四 2.5.查看数组长度 2.6.查看数组元素下标 3.数组分片 4.数组字符替换 4.1.临时替换 4.2.永久替换 5.数组删除 5.1.删除某个下标 5.2.删除整组 6.数组遍历和重新定义 7…...
Python 全栈系列246 任务调度对象WFlaskAPS
说明 之前已经完全跑通了任务调度,实现了S2S的流转Python 全栈系列243 S2S flask_celery。由于request请求用起来比较别扭,所以创建一个对象来进行便捷操作。 内容 1 功能 WFlaskAPS包含管理定时任务的必要功能 from datetime import datetime from…...
关于Windows中的NTUSER.DAT文件的知识,看这篇文章就差不多了
每个用户配置文件中都隐藏着一个名为NTUSER.DAT的文件。此文件包含每个用户的设置和首选项,因此你不应该删除它,也可能不应该编辑它。Windows会自动为你加载、更改和保存该文件。 NTUSER.DAT包含你的用户配置文件设置 每次更改Windows和已安装程序的外观和行为时,无论是桌…...

【Linux】动态库与静态库的底层比较
送给大家一句话: 人生最遗憾的,莫过于,轻易地放弃了不该放弃的,固执地坚持了不该坚持的。 – 柏拉图 (x(x_(x_x(O_o)x_x)_x)x) (x(x_(x_x(O_o)x_x)_x)x) (x(x_(x_x(O_o)x_x)_x)x) 底层比较 1 前言2 编译使用比较2 如何加载Than…...

私活更好用:SpringBoot开源项目!!【送源码】
今天分享一款非常香的SpringBoot大屏开源项目,非常适合接私活用。 这是一款基于SpringBoot代码生成器的快速开发平台!采用前后端分离架构:SpringBoot,Mybatis,Shiro,JWT,Vue&Ant Design。强…...

SprintBoot案例-增删改查
黑马程序员JavaWeb开发教程 文章目录 一、准备工作1. 准备数据库表1.1 新建数据库mytlias1.2 新建部门表dept1.3 新建员工表emp 2. 准备一个Springboot工程2.1 新建一个项目 3. 配置文件application.properties中引入mybatis的配置信息,准备对应的实体类3.1 引入myb…...

【机器学习】:基于决策树与随机森林对数据分类
机器学习实验报告:决策树与随机森林数据分类 实验背景与目的 在机器学习领域,决策树和随机森林是两种常用的分类算法。决策树以其直观的树形结构和易于理解的特点被广泛应用于分类问题。随机森林则是一种集成学习算法,通过构建多个决策树并…...

.NET 4.8和.NET 8.0的区别和联系、以及查看本地计算机的.NET版本
文章目录 .NET 4.8和.NET 8.0的区别查看本地计算机的.NET版本 .NET 4.8和.NET 8.0的区别 .NET 8.0 和 .NET 4.8 之间的区别主要体现在它们的发展背景、目标平台、架构设计和功能特性上。下面是它们之间的一些主要区别: 发展背景: .NET 4.8 是.NET Fram…...

23.HashMap的put方法流程
一、put方法的流程图 二、put方法的执行步骤 首先,根据key值计算哈希值。然后判断table数组是否为空或者数组长度是否为0,是的话则要扩容,resize()。接着,根据哈希值计算数组下标。如果这个下标位置为空&a…...
元类结合__new__
__new__:用来生成骨架 __init__:骨架添加血肉 【一】类中的__new__ class MyClass(object):def __init__(self,name,age):print(f"给当前MyClass类的对象初始化属性的时候会触发__init__")self.name nameself.age age def __call__(self,*args,**kwargs):pri…...

(C语言)队列实现与用队列实现栈
目录 1.队列 1.1队列的概念及结构 1.2 队列的实际应用联想 1.3队列的实现 2. 队列应用——队列实现栈 主要思路 1.队列 1.1队列的概念及结构 队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进…...
字符画生成网站 ascii字符画
_____ / ___/__ ___ / /__/ _ \/ _ \ \___/ .__/ .__//_/ /_/ font推荐:1.Slant 2.Small 3.Small slant https://patorjk.com/software/taag/#pdisplay&fSmall%20Slant&tCpp https://www.kammerl.de/ascii/AsciiSignature.php https://asciia…...

【C -> Cpp】由C迈向Cpp (6):静态、友元和内部类
标题:【C -> Cpp】由C迈向Cpp (6):静态、友元和内部类 水墨不写bug (图片来源于网络) 目录 (一)静态成员 (二)友元 (三)…...

TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...
椭圆曲线密码学(ECC)
一、ECC算法概述 椭圆曲线密码学(Elliptic Curve Cryptography)是基于椭圆曲线数学理论的公钥密码系统,由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA,ECC在相同安全强度下密钥更短(256位ECC ≈ 3072位RSA…...

理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端
🌟 什么是 MCP? 模型控制协议 (MCP) 是一种创新的协议,旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议,它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...

Python实现prophet 理论及参数优化
文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候,写过一篇简单实现,后期随着对该模型的深入研究,本次记录涉及到prophet 的公式以及参数调优,从公式可以更直观…...
Qt Http Server模块功能及架构
Qt Http Server 是 Qt 6.0 中引入的一个新模块,它提供了一个轻量级的 HTTP 服务器实现,主要用于构建基于 HTTP 的应用程序和服务。 功能介绍: 主要功能 HTTP服务器功能: 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...
【HTTP三个基础问题】
面试官您好!HTTP是超文本传输协议,是互联网上客户端和服务器之间传输超文本数据(比如文字、图片、音频、视频等)的核心协议,当前互联网应用最广泛的版本是HTTP1.1,它基于经典的C/S模型,也就是客…...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”
2025年#高考 将在近日拉开帷幕,#AI 监考一度冲上热搜。当AI深度融入高考,#时间同步 不再是辅助功能,而是决定AI监考系统成败的“生命线”。 AI亮相2025高考,40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕,江西、…...
为什么要创建 Vue 实例
核心原因:Vue 需要一个「控制中心」来驱动整个应用 你可以把 Vue 实例想象成你应用的**「大脑」或「引擎」。它负责协调模板、数据、逻辑和行为,将它们变成一个活的、可交互的应用**。没有这个实例,你的代码只是一堆静态的 HTML、JavaScript 变量和函数,无法「活」起来。 …...
Monorepo架构: Nx Cloud 扩展能力与缓存加速
借助 Nx Cloud 实现项目协同与加速构建 1 ) 缓存工作原理分析 在了解了本地缓存和远程缓存之后,我们来探究缓存是如何工作的。以计算文件的哈希串为例,若后续运行任务时文件哈希串未变,系统会直接使用对应的输出和制品文件。 2 …...
TJCTF 2025
还以为是天津的。这个比较容易,虽然绕了点弯,可还是把CP AK了,不过我会的别人也会,还是没啥名次。记录一下吧。 Crypto bacon-bits with open(flag.txt) as f: flag f.read().strip() with open(text.txt) as t: text t.read…...