【AICon】探索RAG 技术在实际应用中遇到的挑战及应对策略!AICon精华内容已上线73%>>> 了解详情
写点什么

回顾会议指引观念转变

  • 2011-07-21
  • 本文字数:4527 字

    阅读完需:约 15 分钟

引言

本文讲述了一个我们如何在一家公司的特定项目中指导敏捷软件开发过程的故事。它传递给我们下述信息:一旦软件工程师理解了软件开发过程中对转变的需要,他们就能够完成(转变),而挑战是指如何指导他们自己认识到转变的必要,同时让他们自己引导这种转变。这样的认识需要观念上的转变,而我们的职责就是在采用敏捷方法的初始阶段引导这种(观念)转变。 我们用来指导这个过程的机制就是在每个迭代结束时进行一小时回顾会议。当团队成员开始自己主持回顾会议时 ,这标志着 a)团队已经准备好引导敏捷开发所需要的观念转变和在开发过程中的转变,和 b)我们已经完成对这个团队的指导。从我们的角度来看,达到这一阶段即为成功的标志。

在通常软件开发过程中引入反思过程,特别是在敏捷软件开发过程中引入的重要性,主要是基于 Schön《反思实践者》的观点。(Schön,1983)。

从团队的角度来看,回顾过程旨在研究开发过程,并寻求改进方法。从指导者的角度来看,回顾也可以作为一种可以加强观念转变的工具。为了尽可能地挖掘他们的潜力,回顾会议选取在每两周迭代开发周期结束时进行,同时为了保证生产效率,每次会议时间控制在一小时。另外,在这个会议期间不进行其它活动,在每次回顾会议结束前至少会做出一个任务项,并指定具体的负责人。 [1]

示例图 1 描述了如何实现回顾会议的目标。实施每次回顾会议结束时做出的任务项将会在开发过程中产生一个变化,这种变化会导致对开发过程本身观念上的改变。这种变化,特别是在逐步实施敏捷过程中,在软件开发过程中产生了新的改进需要,这种需要最终会成为将来某次回顾会议的主题。这种方式,通过这个过程建立了观念转变,这个循环会在每一个小的观念转变导致下一个转变的过程中继续。逐步地,这些小的观念转变积累成为团队对于软件开发观念的显著转变。如下文所述,我们的经验表明在某些时候,这种转变足以使团队有能力自己开始主持回顾会议并自我主导这种观念转换。

示例图 1. 回顾会议循环:回顾会议驱动观念转变

故事

项目环境

这个故事是关于一个复杂的、独一无二的项目,该项目是为客户特定需求专门定制应用程序的敏捷项目。这个特定的项目是系统开发,不像其它软件项目一样,这个项目开发涉及诸如硬件、固件和机械部分多个领域。这类项目开发周期相对很长,需要数年时间甚至有些情况下会持续几代人。

因为许多严重的问题,例如需求经常变化,费用超支(主要跨领域间的协作和集成),和团队内部缺少沟通,项目决策层决定在软件团队内尝试敏捷方法,软件团队包括 15 个成员,分为 4 个小组。大多数团队成员都是经验丰富的嵌入式实时软件工程师,他们专长是网络和通信。其中的一些人是团队领导。

敏捷方法分两个阶段实施。在第一阶段,应用了 Scrum 框架中的下述敏捷实践:每 8 周一个 sprint,在小组内的每日站会,维护一份 sprint backlog,sprint 总结展示和 sprint 回顾会议。这一阶段向诸多方面的改进前进了一大步:计划,沟通和客户(系统工程师)合作。

然而,似乎必要采取更重要和有勇气的行动才能发挥敏捷方法论的最佳效果。具体来说,sprint 回顾没有包括任何可测量的数据,因此没有关于流程成果的客观数据,无法衡量改进情况,也不能系统的改进流程。

第二阶段,也就是在我们指导开始后的第五个月,流程得到加强。特别是,软件团队采纳了下面的敏捷实践:迭代周期为两周的短迭代,客户参与,数据测量,角色分配和每两周的回顾会议。

描述关于知识共享的回顾会议循环

为了开始和敏捷方法相关的观念转变,在第二阶段的开始,回顾会议由我们主持,依靠我们作为软件从业者在软件工程上的专门知识。

表 1 描述了前 15 次和项目团队一起进行的回顾会议。可以看到,知识共享是几次回顾会议的主题。根据回顾会议循环(示例图 1),回顾会议的主题不是在指导过程一开始就决定的,而是随着敏捷转变过程浮现出来的。几次回顾会议都关注于知识共享的事实一点儿也不应该感到惊讶;毕竟软件工程就是知识工作,因此,知识共享成为回顾会议的主题可以合乎情理,这些主题也应该在敏捷方法实施过程中解决。

表 1. 回顾会议(#1——#15)

回顾会议 #

主题

简要描述

1

时间管理

Covey 关于要事先行的概念

2

知识分享 1

缺少知识

3

估算和实际表现

估算和实际表现间的差距

4

迭代计划 1

任务分解和计划的方式

5

迭代计划 2

背景知识转换

6

组织文化

项目的其它纪律

7

知识分享 2

在每日会上展示的信息

8

干系人

项目干系人

9

测试

采用自动化测试

10

工作流程

对一个任务来说,“完成”的定义

11

实验室 1

使用和实际建立实验室

12

实验室 2

定义提前计划实验台的工具的需求

13

发布交付

发布前的压力

14

知识分享 3

需要学习的主题。确定了一个主题

15

过程改变

自采用敏捷第二阶段开始以来的过程改变

示例图 2 描述了知识分享的回顾会议循环,显示了回顾会议如何通过知识分享促进观念转变。

示例图 2. 在知识共享的例子中的回顾会议循环

我们现在来描述两次知识分享的回顾会议并解释如何促进观念转变。

第二次回顾会议(指导过程开始后的一个月):要求团队成员指出三件积极的事情和三件当前开发过程中需要改进的事情。缺少项目中不同部分的知识被确认为需要改进的内容,并被选为在所有团队成员提出的需改进内容中亟待解决的。在这次回顾会议结束的时候,确定了下述改进项:a)了解每个团队成员的专长领域(团队领导负责完成这项任务)和 b)接下来几个迭代中,分配不熟悉特定领域知识的团队成员负责需要这些领域知识的任务。

实施这些任务项通过两种方式启动了知识分享的过程。首先,团队成员需要指出他们在项目不同部分的专长。为达到这个目的,他们必须 a)评估他们在项目不同部分的知识水平和 b)和其他团队成员分享评估结果。第二,分配需要特定领域知识的任务给那些不是很熟悉这些领域的人 a)拓展了他们在项目不同部分的知识和 b)鼓励那些在这些领域是专家的团队成员分享他们在这些领域的知识以便于支持团队成功的完成这些任务。毫无疑问这四个行动中的每一个都促进了知识共享并通过消除项目不同部分的知识鸿沟的方式改变了团队关于开发流程的观念。

第七次回顾会议:在一次观察站会之后,我们意识到在站会上团队成员见提到的一些概念表明存在知识差距。在确认这些差距确实存在之后,我们决定在第七次回顾会议上解决这些知识差距的问题(至少是部分解决)。

回顾会议的开始,我们要每个团队成员写下三个在站会上提到的他们不懂的概念。所有这些概念都匿名的写在白板上,并且团队成员对每个概念都投票指出他们理解或不理解。这个过程进行了 10 分钟。然后团队分为 5 个小组,每个小组要求选择一个概念然后花 20 分钟准备一个关于这个概念的介绍。接下来 5 个组分别为准备的概念做一个 5 分钟的展示,每个展示后面有一个 1 分钟的简短问答。这次回顾会议的一个行动项目是将这些介绍组织到团队的知识库中。

这个回顾会议得到了很多和知识分享相关的产出。首先,团队成员应该详细梳理在站会上提到的概念有关的知识并定义对这些不清晰概念的熟悉程度,无论这些不清晰的概念是他们自己的还是其他团队成员的。第二,当团队分小组整理概念时,团队成员必须一次次的分享他们对这些概念的知识,以便准备简短的展示。那些熟悉概念的团队成员出于完成展示的目标也得分享他们的知识,那些不熟悉的团队成员也要提出问题并指出哪些地方不清楚。第三,在小组展示的时候,所有这些知识都为整个团队所共享。

结果是,在一个小时之内,识别了 5 个不清楚的概念,准备了解释这些概念的简短展示并与全体团队成员分享,所有团队成员都参与其中,每个团队成员都分享了各自的知识。很显然,向分享知识的文化的转变已经达成。

团队成员开始引领观念转变

在我们开始指导过程的八个月之后,在这期间敏捷软件开发原则已经逐渐介绍给团队并实施,我们组织了一个专门的回顾会议来总结到目前为止我们完成了什么。我们询问团队成员,让他们指出在这个过程中三件好的事情和三件仍需改进的事情。这个回顾会议的结果是,两个需要解决的问题浮现出来:a)在团队中专门的知识分享时间;和 b)避免时间压力。在接下来的回顾会议中,我们进一步研究了这些结果。

大约指导过程开始一年之后的一次回顾会议上我们解决了避免时间压力这一主题。在这次回顾会议中间,一个团队成员打断了讨论,说:“我们没抓住要点。在过去的几个回顾会议中,我们讨论了度量这些我们不懂的东西,但实际上分析未决任务更重要。”我们认识到这正是让团队成员自己领导回顾会议的时候,因此我们停止了回顾会议并和这位团队成员说:“请继续主持会议。”那个团队成员很自然的接过会议主导并接着主持回顾会议。这次回顾会议的行动项目是识别为决任务列表。 [2] 几个团队成员,根据计划,每人选择一个任务并主持关于该任务的回顾会议。

自此,在我们开始指导过程一年之后,回顾会议由团队成员自己主持。这个过程非常自然,每次回顾会议的主题都是由团队识别出来的,或者是由一个团队成员提出一个对他 / 她来说亟需解决的问题(例如时间估算和个人职责)。

总结

这个故事描述了观念转变如何与技术改变相关联,并建议使用一个途径——回顾会议——将两个过程关联起来。从我们的角度来看,作为敏捷教练,当开发团队,也就是开发流程中工程方面的专家,能够同时实行这两项转变过程,就意味着成功。

参考

  • Hazzan, O. and Dubinsky, Y. (2008). Agile Software Engineering, Springer.
  • Kerth, N. (2001). Project Retrospective, Dorest House Publishing.
  • Schön, D. A. (1983). The Reflective Practitioner, BasicBooks.

关于作者

Orit Hazzan 博士是以色列 Technion 技术学院的助理教授和科技教育系领导。她在 Technion 科技教育系获得了学士学位(1989),硕士学位(1991)和博士学位(1995)。在美国马萨诸塞州波士顿的 EDC(教育发展中心)取得博士后学位(1995-1996)之后,她在 Technion 工业工程管理系获得了 MBA(2000)。她的研究包括计算机科学和软件工程教育,特别是教授软件工程中有关人的方面。她的研究可分为不同的研究方向:高中计算机科学课程,本科计算机科学和软件工程课程,高科技工业和公众领域。Hazzan 在专业期刊和会议上发表了大约 100 篇论文并合著了三本书:软件工程中人的方面(Charles River Media,2004),敏捷软件工程(Springer,2008)和计算机科学教授指导:基于活动的方法(Springer,2011)。关于她的更多信息可以访问她的主页

Yael Dubinsky 博士隶属于 IBM 海法实验室的软件服务部,她曾经在软件工程和信息系统方面的会议和杂志上发表过文章,同时组织过各种研讨会和担任会议的指导。 Yael 在工业和学术中敏捷实现的过程方面有着非常丰富的经验。她和 Orit Hazzan 合著的关于敏捷软件工程的书于 2008 年由 Springer 出版社出版。


[1] 更多关于如何主持回顾会议的指导,参考我们的书(Hazzan 和 Dubinsky,2008)及其它回顾会议主持方式的书籍(如 Kerth,2001)。

[2] 未决任务被定义出来因为在估算实现时间和实际完成时间之间存在显著的差异。

查看英文原文: The Retrospective Practice as a Vehicle for Leading Conceptual Change


感谢崔康对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家加入到 InfoQ 中文站用户讨论组中与我们的编辑和其他读者朋友交流。

2011-07-21 00:002296
用户头像

发布了 32 篇内容, 共 83754 次阅读, 收获喜欢 1 次。

关注

评论

发布
暂无评论
发现更多内容

图文结合丨Prometheus+Grafana+GreatSQL性能监控系统搭建指南(下)

GreatSQL

greatsql

SOA认知和方法论 | 京东物流技术团队

京东科技开发者

架构 软件架构 SOA 企业号10月PK榜

低代码平台探讨-MetaStore元数据缓存 | 京东云技术团队

京东科技开发者

缓存 低代码 元数据 企业号10月PK榜

用友 Fast by BIP引领专业技术服务企业快速迈向数智化创新

用友BIP

Fast by BIP

玩转MaxCompute SQL训练营! 数据分析挖掘迅速出师

阿里云大数据AI技术

大数据 数据分析

百度世界大会2023重磅发布进行时,小度全新智能音箱重构家居美学新乐章

新消费日报

LAS Spark+云原生:数据分析全新解决方案

字节跳动数据平台

数据库 大数据 数据中台 数据研发 企业号10月PK榜

使用流量管理工具保护 Kubernetes 的六种方法

NGINX开源社区

Kubernetes DOS攻击 Web应用防火墙 原生云

代码的艺术 - Writing Code Like a Pianist | 京东云技术团队

京东科技开发者

代码质量 整洁代码 企业号10月PK榜 系统质量

九章云极DataCanvas多模态大模型平台实践与思考

九章云极DataCanvas

新晋技术管理者如何推动组织变革?

LigaAI

团队管理 研发管理 进阶 技术管理 企业号10月PK榜

黄金眼PAAS化数据服务DIFF测试工具的建设实践 | 京东云技术团队

京东科技开发者

测试 PaaS 回归测试 企业号10月PK榜

QSpace Pro for Mac(多窗文件管理器)

展初云

文件管理 Mac软件

2024北京国际物联网展览会(物联网展)

AIOTE智博会

物联网展览会 物联网展会 物联网博览会 物联网展 世亚智博会

商用显示设备包括哪些?

Dylan

企业 设备 显示器 LED显示屏

全面解析内存泄漏检测与修复技术

华为云开发者联盟

程序员 开发 内存 华为云 华为云开发者联盟

PaddleX解决分类、检测两大场景问题?实战精讲教程来了!

飞桨PaddlePaddle

AI 飞桨 套件

AIGC立法和相关版权案例分享-“心寄源”法律沙龙(2023第五期 | 总第十期)成功召开

开放原子开源基金会

最全数据安全评估标准汇编,你应该需要!(附下载)

极盾科技

数据安全

英语学习工具:Eudic欧路词典 for Mac增强版

展初云

Mac 欧路词典 英语学习工具

SoundSource for mac(音量控制工具)

展初云

Mac软件 音量调节

校源行 | 开放原子开源社团(西北工业大学)授牌仪式成功举行

开放原子开源基金会

李彦宏:我们即将进入一个AI原生的时代|百度世界2023

飞桨PaddlePaddle

百度 大模型 文心一言

原料所属权管理领先实践,助力造币厂来料加工原料管理降本增效

用友BIP

领先实践 原料所属权管理

如何从构建到运营?数科公司数智创新研讨会成功举办

用友BIP

数科公司

使用 ChaosBlade 验证 DLRover 的弹性和容错的稳定性

AI Infra

人工智能 开源 开发者 云原生 大模型

欢迎来到 GPTSecurity!共建知识库

云起无垠

GPTSecurity

List.of() Vs Arrays.asList()

越长大越悲伤

Java

以烟草行业为例,聊聊如何基于 PLC + OPC + TDengine,快速搭建工业生产监测系统

TDengine

tdengine 时序数据库

面试多起来了

王磊

Java

从理论到实践,实时湖仓功能架构设计与落地实战

袋鼠云数栈

数据中台 数据仓库 数据湖 湖仓一体 实时湖仓

回顾会议指引观念转变_研发效能_Yael Dubinsky_InfoQ精选文章