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

迭代的难题:敏捷团队每次都有未完成的工作,如何破解?

各位是否遇到过类似的情况:每次迭代结束后,团队都有未完成的任务,很少有完成迭代全部的工作,相反,总是将上期未完成的任务重新挪到本期计划会中,重新规划。敏捷的核心之一是“快速迭代,及时反馈”,为什么会发生这种情况呢?

这也是本篇文章想和大家聊的,为什么团队的每次迭代都有未完成的工作,以及我们可以如何改善?

团队承诺不足

在项目过程中,我们有时会遇到这样的场景:老板为了让团队更好地更快地完成项目,有时会采取一些方法,比如告诉团队: 如果不能完成所有工作,他会“采取纠正措施,必要时甚至会解雇”。

这种来自领导的高期望会带来什么结果呢?那就是这个团队不会在迭代过程中 积极地完成大量工作。相反,他们会尽量选择足够多的工作,来避免因为“偷懒”而惹上麻烦,但也不会冒着无法完成全部工作的风险,而选择过多的工作。

团队的谨慎和保守,会让团队陷入“舒适区”,从而降低工作效率,影响整个项目的进度。

敏捷开发不仅注重结果,同时也注重过程。而过于严厉的领导可能也会让团队成员感到压力过大,进而过于关注工作完成情况,进一步限制了他们的主观能动性和自我驱动性。

团队过度承诺

团队对迭代/冲刺中可以完成的工作,设定高一点的目标,是正常的,因为这能激发团队积极性和动力, 但如果团队习惯性地过度承诺,就会变成问题。

当团队过度承诺时,就会一直无法完成迭代中的事情:迭代时间到了,成员就把任务推进到下一个迭代,最终导致项目的延期。时间久了,团队还可能形成一种“总有机会弥补”的心态,导致对每一个迭代的责任心减弱,团队也无法明白敏捷的意义和作用是什么。慢慢地,迭代的开始或者结束就变成了一个随意且没有意义的日期。

所以团队负责人应该让团队明白迭代结束的意义:当迭代结束时,团队会体验到成就感,让团队感受到这种“小胜利的力量”,从而保持更好的节奏和状态迎接下一个迭代。

敏捷团队过度承诺的两个原因

团队过度承诺的最常见原因之一是来自 领导层或团队外部的压力。压力也分好坏,新产品给公司带来的新机会,也能为客户和公司带来更多好处。为了更快的给公司、客户带来好处,他们会采用施加一些压力的方式,激励团队,以便能更快更好地完成任务。但有时, 有些领导的压力并不合适,就像开头提到采用裁员的方式威胁成员的领导那样,不仅不会正向激励成员,反而带来更不好的效果。

团队过度承诺的第二大常见原因是 自身的压力。比如对自我的高要求,满足自己的高期望,或者希望取悦外人,得到别人的认可。

无论过度承诺的压力是来自外部还是团队内部,这对团队来说都不是一个健康的环境,对组织来说也不是一个好的情况。

Every iteration has unfinished work, how to crack it?

组织需要可预测性

所有组织都需要一定程度的可预测性,但如果过于追求预期目标的完成,可能反而失去掌控,比如团队设定太高的冲刺目标,反而会因达不到目标而导致失去了工作计划的可控性,降低了可预测性。

因此,团队应该合理规划工作计划,既要设定目标,也要考虑实际操作性。当团队偶尔出现失误时,领导者和团队外的人需要表示理解,这样才能保持工作的可预测性。

三个改善方法

这里分享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 (图片来源于网络) 目录 (一)静态成员 (二)友元 (三&#xff09…...

探索Playwright:Python下的Web自动化测试革命

在如今这个互联网技术迅速发展的时代,web应用的质量直接关系着企业的声誉和用户的体验。因此,自动化测试成为了保障软件质量的重要手段之一。今天,我将带大家详细了解一款在测试领域大放异彩的神器——Playwright,并通过Python语言…...

先有JVM还是先有垃圾回收器?很多人弄混淆了

是先有垃圾回收器再有JVM呢,还是先有JVM再有垃圾回收器呢?或者是先有垃圾回收再有JVM呢?历史上还真是垃圾回收更早面世,垃圾回收最早起源于1960年诞生的LISP语言,Java只是支持垃圾回收的其中一种。下面我们就来刨析刨析…...

关于 vs2019 c++20 规范里的一个全局函数 _Test_callable

(1)看名思议,觉得这个函数可以测试其形参是否是可以被调用的函数,或可调用对象? 不,这个名字不科学。有误导,故特别列出。看下其源码(该函数位于 头文件): 辅…...

07-Fortran基础--Fortran指针(Pointer)的使用

07-Fortran基础--Fortran指针Pointer的使用 0 引言1 指针(Poionter)的有关内容1.1 一般类型指针1.2 数组指针1.3 派生类(type)指针1.4 函数指针 2 可运行code 0 引言 Fortran是一种广泛使用的编程语言,特别适合科学计算和数值分析。Fortran 9…...

日期差值,

日期差值 ac代码 #include<iostream> using namespace std; int ans0; int get(int n){int mon[14]{0,31,28,31,30,31,30,31,31,30,31,30,31};ans0;int m_dayn%100;int m_month(n/100)%100;int m_year(n/10000);ansm_day;while(m_month--){//加上月数if((m_year%40&…...

GMV ES6直流变频多联空调机组室外机工作原理

GMV ES6直流变频多联空调机组室外机工作原理如下&#xff1a; 内机为制冷模式运行时&#xff0c;室外机根据室内机的运行负荷需求启动运行&#xff0c;室外换热器作为系统的冷凝器&#xff0c;各制冷室内机的换热器并联作为系统的蒸发器&#xff0c;通过室内机的送回风循环实现…...

中国开源 AI 大模型之光-InternLM2

今天给大家带来 AI 大模型领域的国产之光 - InternLM2&#xff0c;在10B量级开源大模型领域取得了全球 Top 3 的成绩&#xff0c;仅次于 Meta 发布的 Llama-3&#xff0c;在国内则是第一名的存在&#xff01; 简介 InternLM2是由上海人工智能实验室和商汤科技联合研发的一款大型…...

【嵌入式开发】Arduino人机界面及接口技术:独立按键接口,矩阵按键接口,模拟量按键接口(基础知识介绍)

“生活总是让我们遍体鳞伤,但到后来,那些受伤的地方一定会变成我们最强壮的地方。” 🎯作者主页: 追光者♂🔥 🌸个人简介: 📝[1] CSDN 博客专家📝 🏆[2] 人工智能领域优质创作者🏆 🌟[3] 2022年度博客之星人工智能领域TOP4🌟 🌿[4] …...

element ui Tree树形控件

lazy 是否懒加载子节点&#xff0c;需与 load 方法结合使用 boolean 默认为falseload 加载子树数据的方法&#xff0c;仅当 lazy 属性为true 时生效 function(node, resolve)使用懒加载load不需要再使用data&#xff0c;利用resolve返回值即可注意&#xff1a;第一层的数据要写…...

AI 绘画神器 Fooocus 图生图:图像放大或变化、图像提示、图像重绘或扩充、反推提示词、生成参数提取、所需模型下载

本文收录于《AI绘画从入门到精通》专栏&#xff0c;专栏总目录&#xff1a;点这里&#xff0c;订阅后可阅读专栏内所有文章。 大家好&#xff0c;我是水滴~~ 本文讲述 Fooocus 的图生图功能&#xff0c;主要内容包括&#xff1a;图像放大或变化、图像提示、图像重绘或扩充、反推…...