阿里、蚂蚁、晟腾、中科加禾精彩分享 AI 基础设施洞见,现购票可享受 9 折优惠 |AICon 了解详情
写点什么

敏捷:反思的实践和应用

  • 2018-08-14
  • 本文字数:4036 字

    阅读完需:约 13 分钟

关键要点

  • 我们应该把重点放在全局上。
  • 最重要的是用户,而不是开发人员。
  • 软件开发是一项团队活动。
  • 好的回顾是至关重要的。
  • 引导(Facilitation)是一项未被充分认识的技能。

作为一名敏捷教练,很容易陷入理论而忽略了实践,因为有些主题理解起来很容易,但实践起来却很难。

我们看到了很多敏捷转型失败,也看到了很多糟糕的看板和 Scrum 实践,有时我们会感觉到成功的喜悦,而有时也会感到失望。这些概念既不复杂也不新颖,只是我们很难找到长久持续的方式来有效地实现它们。

成功的敏捷软件开发基于以下三个思维过程,它们既有相似之处又相互交织,如果缺少了其中任何一个,都会让整体的效果大打折扣。

  • 系统思维
  • 群体观念
  • 反思实践和应用

有时候,我们过于关注原则和价值观。“敏捷软件开发宣言”有一句非常重要的话:“我们通过实践和帮助他人实践来发现更好的软件开发方式“。

敏捷宣言的核心是关于如何更好地交付软件:“我们正在发现更好的方法”。这是一个发现之旅,所以我们并不知道所有问题的答案,并且是“通过实践并帮助其他人实践”来寻找答案。这不仅仅是理论,我们需要与他人分享我们的成功,这样他们就可以从我们过去的成功和失败中吸取经验。

系统思维

这看起来很棒,或许我们用一个不那么高大上的标题会更好些,但问题的关键在于你不是宇宙的中心。“你”可以是指你个人或你的团队。

我们的目标是通过软件有效地为用户解决问题。我们的系统是指这样的一个过程,从确定需求到提供解决方案,通过解决方案来满足需求,然后找出下一个更为重要的需求。

我们的系统不是关于如何编码,也不会将卡片从一个栏位移动到下一个栏位。

分支上的代码写得再好,如果用户在数月或数年内(或许永远不会)用不到它们,就不会给用户带来任何价值,无论你对它们感到多么自豪。对于用不到的功能或架构来说也是如此。

最近,我与一个团队合作开发了一个解决方案,可以将一项常规活动的时间缩短 15 分钟。因为这项活动经常举行,因此节省了大量的时间,从而省下了数百万美元的成本。原先的计划是将它与其他功能放在一起,并在大约 6 个月后交付。但当被指出这事关几百万美元,他们似乎感到困惑和惊讶。一旦清楚地知道影响有多大,团队就有动力减少部署时间。

转型失败

根据我的经验,由于团队成员未能意识到他们是更大系统的贡献者,因此我将大部分不成功的转型(以及很多业务失败)归因于此。这听起来似乎不那么相关,但团队成员是大链条中的连接元素,就像机器中的一个齿轮。过分关注局部不会给整个组织或系统带来任何帮助。

然而,我们却在提高局部效率方面付出了很多努力,却没有意识到,如果缺少了上下文,你的努力就白费了。太过专注于局部效率,可能会导致不必要的浪费,最好的情况是不会给大系统带来任何好处,最坏的情况是降低大系统的效率。对编码效率的痴迷杀死了很多软件产品。我看到有些团队为越来越多需要测试的用例而自豪,或者前端团队为他们开发出不尽其数的特性从而让后端团队赶不上他们而自豪。可悲的是,这些团队似乎没有意识到,他们并没有为系统带来价值。

我的一个朋友最近分享了她的故事:他需要为一个活动准备 10 个蛋糕,但只有一个烤箱。她的丈夫提出要帮忙,她让他提前准备好蛋糕的原料,这样就可以更快让下一个蛋糕进入烤箱。

但当她来取蛋糕的原料时,它们还没有准备好,她的丈夫按照自己的想法忙了一通,但并没有朝着目标的方向走。他先是准备了 10 份面粉,然后是 10 份……等等,他觉得反正后面需要用到它们,他这样做要比每次只做一份然后切换来切换去更有效率。

结果是,虽然他感觉自己很有效率,但系统却要停下来等他,他的效率是以价值交付(蛋糕烘焙)的巨大损失为代价的。

或许,如果他能够了解全局以及他的贡献将如何影响价值流,他会采用不同的方式?他可以一次准备好一块蛋糕的原料,即使对他来说效率有点低。但从整体来看,他们将更快地完成他们的目标。

群体

系统思维是指上下文和领域,但在上下文和领域内部是团队——通常是很多团队。团队是个体的集合——每个个体都是截然不同的——而且个体之间的合作(或不合作)的能力决定了整体的交付能力。在一起合作并共同成长的团队可以完成惊人的壮举,而未能建立信任的团队就像一盘散沙,甚至不会取得任何进步。

软件开发首先是关于人的,这听起来可能有点奇怪。但软件开发的方方面面都是关于团队内部的沟通、与用户的沟通、与利益相关者以及其他团队之间的沟通,等等,可以说有效的沟通推动了软件开发。

那些意识到开发产品其实就是一项以人为本的团队活动的人将会得到更好的发展。那些意识到我们建立跨职能团队是为了让自组织和自激励的团队能够创造出优秀的软件的人,他们更有可能取得成功。

从把自己看成是一个个体到把自己当成是群体的一员,这种思维上的转变是很难的,但当我们能够以有利于群体的方式行事,而不是只为了自己,那么我们就开始成为一个高绩效的团队。但需要注意的是,只是简单地将一群高绩效的人聚在一起,并不会创建出一个高绩效的团队。那通常是一场灾难。当意识到我们不只是简单的机械组合,才有可能组合出高绩效的团队。

其次是在社区中分享知识,并为他人提供支持。敏捷宣言提到,要变得敏捷,不仅要自己实践,还要帮助其他人一起实践。

反思实践和应用

最后,我们必须经常花时间进行反思,这样才能变得善于自我反思,并向其他人提供反馈,帮助他们自我反思。

我相信每个团队——不仅仅是技术团队——都应该定期停下来进行反思。无论你做什么,都可以得到改进,但你需要一个有利于思考的环境。如果你能够学会进行有效的反思,那么进行反思的一小时可能会成为一周中最富有成效的一小时。

当我们忙于日常工作时,专注于眼前的事物,而看不到全局。我们提醒自己真正的优先事项,以及我们对团队和组织的影响。直到我们停下来,开始审视我们的错误信念——太忙而忽略了改进。小的变化可以产生巨大的影响,而且合作是团队在另一个环境中建立联系的好时机。

引导回顾

引导回顾是一项艰巨的技能。有时候人们害怕出现分歧,所以回避困难的话题。但其实如果我们想要提高,正向的冲突通常是有必要的——意见分歧是真正可以促进发生改变的地方。通过噪音来解决真正的问题可能很困难,并需要技巧和练习,但随着时间的推移,辅导员和团队会变得更好,特别是如果他们能够反思如何提高这项技能。多样性很重要,但诚实开放的对话是关键。

作为既是群体也是个体的我们,应该花一些时间找到学习的机会。我们应该不断观察自己和团队,寻找改进的方法。我们学习如何以有助于我们成长而不是削弱我们的方式提供和获取反馈。提供反馈是一种技能,就像接受反馈一样。正如所有技能都需要练习一样,我们应该定期给出好的和不好的反馈。在这两种情况下,都需要秉持开放的态度,并准备好聆听,你或许可以从中学到一些东西。

我们挑战我们的思想,质疑我们的信念,并寻求改进的方法。我们通过尝试和观察新事物学习如何以结构化方式进行实验,并且我们在团队和产品中了解度量指标的价值。

但是,如果我们不应用我们学到的东西,那么学习和反思就是徒劳无功,应用成为我们可以发展的另一项技能,我们中的大多数人都会变得善于析和观察,但不管我们看到什么,我们都会继续做同样的事情。采取行动并承担责任是至关重要的,每天进行评审并且只说不做将让你一事无成。

有一句众所周知的格言很好地概括了我们所讨论的问题:“如果你总是做一直在做的事情,你将永远只能得到你已经得到的东西”。

学会以结构化和有效的方式应用我们的观察和反思是另一个挑战,这个时候应用系统思维是至关重要的。我们应该把重点放在对我们造成的阻碍最多的问题上,单独处理它们,然后重复这个过程。

试图修复太多问题或者每次只关注一个主题,可能会导致混淆,特别是如果你正在评估变化所带来的影响。如果你同时改变了几件事,那么就很难知道是哪一件造成了影响。

这三个思维过程是重叠的,它们交织在一起并且往往相互依赖,当它们结合在一起时会变得非常强大,我们因此能够更好地交付软件并帮助其他人也做到。

关于作者

John Yorke  WWT Asynchrony Labs 的敏捷教练,他在 Asynchrony 负责 Product Owner Chapter,并在圣路易斯组织 Product Ownership Meetup。John 拥有超过 20 年的软件交付经验,他的角色是开发人员、设计师、项目经理和部门负责人。现在,作为一名教练,他为客户提供敏捷转型方面的支持,并在企业内部指导交付团队。他还是敏捷相关主题的作家和演讲者。

查看英文原文 Agile: Reflective Practice and Application

2018-08-14 18:181358
用户头像

发布了 731 篇内容, 共 433.5 次阅读, 收获喜欢 1997 次。

关注

评论 1 条评论

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

Java RMI

沃德

Java 程序员 7月月更

45W性能释放+2.8K OLED全面屏 华硕灵耀X 14 2022精英气质高效利器

科技热闻

个性潮流与性能兼备,华硕a豆14 Pro搭载全新12代酷睿标压处理器

科技热闻

即刻报名|如何降低云上数据分析成本?

Kyligence

数据分析 智能多维数据库

【LeetCode】使数组可以被整除的最少删除次数Java题解

Albert

LeetCode 7月月更

这价格够香!灵耀14 2022影青釉秒杀:12代酷睿+2.8K OLED屏

科技热闻

有一说一,要搞明白优惠券架构是如何演化的,只需10张图!

程序员小毕

Java 编程 程序员 架构 面试

源启数字化:既有模式,还是开源创新?|砺夏行动

OneFlow

活动

对话ACE第四期:分布式数据库未来发展的挑战和机遇

OceanBase 数据库

数据库 分布式数据库 oceanbase

Wallys/industrial Wireless AP/IPQ6018,IPQ4019,IPQ4029,802.11ax,802.11ac,outdoor ap

wallys-wifi6

数仓基本概念解析

五分钟学大数据

数据仓库 7月月更

Qt|控制QScrollBar显示位置

中国好公民st

qt 7月月更

阿里云技术专家杨泽强:弹性计算云上可观测能力构建

阿里云弹性计算

DevOps 可观测性 CI/CD metrics

博物馆数字化——数字藏品app开发

开源直播系统源码

区块链数字藏品 数字藏品软件开发

行业分析| 物流对讲

anyRTC开发者

人工智能 音视频 物流 调度 快对讲

高度关注!2022 开放原子开源峰会最新议程一览

kk-OSC

开源 开放原子全球开源峰会

特斯拉为何使用.NET Core技术框架?

博文视点Broadview

执掌英国工程技术学会 13 载,范纳杰正式退休

E科讯

我,AI博士生,在线众筹研究主题

OneFlow

研究

wallys/industrial Wireless AP/industrial Wireless AP

wallys-wifi6

IPQ4019/IPQ4029

P9力荐!阿里巴巴最新出品776页JDK源码+并发核心原理解析小册

程序员小毕

Java 程序员 面试 程序人生 jdk源码

SAP ABAP 解析 excel 文件的函数 TEXT_CONVERT_XLS_TO_SAP 单步执行分析

Jerry Wang

Cloud SAP abap Netweaver 7月月更

怎样让全彩LED显示屏变的节能环保?

Dylan

LED显示屏 全彩LED显示屏

wallys/industrial Wireless AP/IPQ4019 IPQ4029 ,802.11ac /VSSupport IPQ6018 IPQ4019 IPQ4029 802.11ax 802.11ac

wallys-wifi6

ES6 类聊 JavaScript 设计模式之结构型模式

devpoint

JavaScript 设计模式 桥接模式 适配器模式 7月月更

数字化时代,如何利用区块链技术赋能乳制品企业?

旺链科技

区块链 产业区块链 乳制品

常用 CSS 代码片段集合,建议收藏

南城FE

CSS 前端 CSS语法 7月月更

云原生 SIG 直播:关于 cni 与 hybridnet 核心技术分享 | 第 35 期

OpenAnolis小助手

开源 云原生 直播 sig 龙蜥大讲堂

执掌英国工程技术学会13载,范纳杰正式退休

E科讯

数据库索引:索引并不是万能药

了不起的程序猿

MySQL 数据库 java程序员

Nacos配置中心之环境准备

急需上岸的小谢

7月月更

敏捷:反思的实践和应用_架构_John Yorke_InfoQ精选文章