迭代的难题:敏捷团队每次都有未完成的工作,如何破解?
各位是否遇到过类似的情况:每次迭代结束后,团队都有未完成的任务,很少有完成迭代全部的工作,相反,总是将上期未完成的任务重新挪到本期计划会中,重新规划。敏捷的核心之一是“快速迭代,及时反馈”,为什么会发生这种情况呢?
这也是本篇文章想和大家聊的,为什么团队的每次迭代都有未完成的工作,以及我们可以如何改善?
团队承诺不足
在项目过程中,我们有时会遇到这样的场景:老板为了让团队更好地更快地完成项目,有时会采取一些方法,比如告诉团队: 如果不能完成所有工作,他会“采取纠正措施,必要时甚至会解雇”。
这种来自领导的高期望会带来什么结果呢?那就是这个团队不会在迭代过程中 积极地完成大量工作。相反,他们会尽量选择足够多的工作,来避免因为“偷懒”而惹上麻烦,但也不会冒着无法完成全部工作的风险,而选择过多的工作。
团队的谨慎和保守,会让团队陷入“舒适区”,从而降低工作效率,影响整个项目的进度。
敏捷开发不仅注重结果,同时也注重过程。而过于严厉的领导可能也会让团队成员感到压力过大,进而过于关注工作完成情况,进一步限制了他们的主观能动性和自我驱动性。
团队过度承诺
团队对迭代/冲刺中可以完成的工作,设定高一点的目标,是正常的,因为这能激发团队积极性和动力, 但如果团队习惯性地过度承诺,就会变成问题。
当团队过度承诺时,就会一直无法完成迭代中的事情:迭代时间到了,成员就把任务推进到下一个迭代,最终导致项目的延期。时间久了,团队还可能形成一种“总有机会弥补”的心态,导致对每一个迭代的责任心减弱,团队也无法明白敏捷的意义和作用是什么。慢慢地,迭代的开始或者结束就变成了一个随意且没有意义的日期。
所以团队负责人应该让团队明白迭代结束的意义:当迭代结束时,团队会体验到成就感,让团队感受到这种“小胜利的力量”,从而保持更好的节奏和状态迎接下一个迭代。
敏捷团队过度承诺的两个原因
团队过度承诺的最常见原因之一是来自 领导层或团队外部的压力。压力也分好坏,新产品给公司带来的新机会,也能为客户和公司带来更多好处。为了更快的给公司、客户带来好处,他们会采用施加一些压力的方式,激励团队,以便能更快更好地完成任务。但有时, 有些领导的压力并不合适,就像开头提到采用裁员的方式威胁成员的领导那样,不仅不会正向激励成员,反而带来更不好的效果。
团队过度承诺的第二大常见原因是 自身的压力。比如对自我的高要求,满足自己的高期望,或者希望取悦外人,得到别人的认可。
无论过度承诺的压力是来自外部还是团队内部,这对团队来说都不是一个健康的环境,对组织来说也不是一个好的情况。

组织需要可预测性
所有组织都需要一定程度的可预测性,但如果过于追求预期目标的完成,可能反而失去掌控,比如团队设定太高的冲刺目标,反而会因达不到目标而导致失去了工作计划的可控性,降低了可预测性。
因此,团队应该合理规划工作计划,既要设定目标,也要考虑实际操作性。当团队偶尔出现失误时,领导者和团队外的人需要表示理解,这样才能保持工作的可预测性。
三个改善方法
这里分享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 (图片来源于网络) 目录 (一)静态成员 (二)友元 (三)…...
Qt Widget类解析与代码注释
#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码,写上注释 当然可以!这段代码是 Qt …...
解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错
出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上,所以报错,到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本,cu、torch、cp 的版本一定要对…...
【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)
骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术,它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton):由层级结构的骨头组成,类似于人体骨骼蒙皮 (Mesh Skinning):将模型网格顶点绑定到骨骼上,使骨骼移动…...
华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建
华为云FlexusDeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色,华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型,能助力我们轻松驾驭 DeepSeek-V3/R1,本文中将分享如何…...
使用 SymPy 进行向量和矩阵的高级操作
在科学计算和工程领域,向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能,能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作,并通过具体…...
【Linux】自动化构建-Make/Makefile
前言 上文我们讲到了Linux中的编译器gcc/g 【Linux】编译器gcc/g及其库的详细介绍-CSDN博客 本来我们将一个对于编译来说很重要的工具:make/makfile 1.背景 在一个工程中源文件不计其数,其按类型、功能、模块分别放在若干个目录中,mak…...
归并排序:分治思想的高效排序
目录 基本原理 流程图解 实现方法 递归实现 非递归实现 演示过程 时间复杂度 基本原理 归并排序(Merge Sort)是一种基于分治思想的排序算法,由约翰冯诺伊曼在1945年提出。其核心思想包括: 分割(Divide):将待排序数组递归地分成两个子…...
Mac flutter环境搭建
一、下载flutter sdk 制作 Android 应用 | Flutter 中文文档 - Flutter 中文开发者网站 - Flutter 1、查看mac电脑处理器选择sdk 2、解压 unzip ~/Downloads/flutter_macos_arm64_3.32.2-stable.zip \ -d ~/development/ 3、添加环境变量 命令行打开配置环境变量文件 ope…...
理想汽车5月交付40856辆,同比增长16.7%
6月1日,理想汽车官方宣布,5月交付新车40856辆,同比增长16.7%。截至2025年5月31日,理想汽车历史累计交付量为1301531辆。 官方表示,理想L系列智能焕新版在5月正式发布,全系产品力有显著的提升,每…...
软件工程教学评价
王海林老师您好。 您的《软件工程》课程成功地将宏观的理论与具体的实践相结合。上半学期的理论教学中,您通过丰富的实例,将“高内聚低耦合”、SOLID原则等抽象概念解释得十分透彻,让这些理论不再是停留在纸面的名词,而是可以指导…...
