写点什么

随着敏捷文化的传播,软件开发是否也得到了提升?

  • 2007-09-14
  • 本文字数:1010 字

    阅读完需:约 3 分钟

AI 大模型超全落地场景&金融应用实践,8 月 16 - 19 日 FCon x AICon 大会联诀来袭、干货翻倍!

Philippe Kruchten 在《敏捷文化基因群落之旅——在敏捷开发的世界,环境因素是关键》( html , pdf ) 中深入思考了敏捷的文化。他用了代表文化复制基本单位的“文化基因”这个概念,来描述各种敏捷思想和实践,并且称敏捷的文化就是许多的文化基因在传播的过程中聚集在一起,形成“文化基因群落”。Kruchten 声称敏捷的文化,无论其是否对于一个组织有明显的帮助,都极具感染力和传播性。

Kruchten 称敏捷是一组很容易复制的思想:

组成敏捷文化核心的 50 来种基因存在很大的内联性,并且相互支持,XP 的创始人曾经提到并且强调过 XP 那一小群敏捷文化基因的这种特点。敏捷团队 (以及敏捷用户组以及敏捷咨询师) 已经被证明是一种在敏捷文化群落中复制、演化和扩散敏捷基因的有效方式。

遗憾的是,这些敏捷基因被从他们赖以生存的环境中剥离开来了。这也就意味着许多思想被认为是放之四海而皆准的真理——被应用到任意的环境中。因此直接导致了许多项目的失败,并且使敏捷思想对许多组织产生负面的影响:

有些时候,我们会看到有人明确地否定环境的相关性,思想的载体明确地或隐含地宣称敏捷思想的广泛适用性。比如“一个迭代必须有三周”这样一条文化基因,如果脱离了外部环境的定义,就变得毫无意义(如果我的项目本身只有三周的时间,就有三个人该怎么办?)。其他耳熟能详的规则包括“no BUFD”(big upfront design,重量级的前端设计),YAGNI(you aren’t going to need it, 你并不需要它),他们都只在一定的环境下能体现出价值,但是往往在多次传播复制的过程中,这些规则逐渐被脱离开环境来对待。我看到这种态度导致许多敏捷项目严重失败,当有人把精力放到软件架构本身,而不是为最终用户产出立即可见的价值的时候,马上就会被那些敏捷文化的鼓吹者 (agilistas) 系统地否决掉,直到他们撞上南墙(即如果不进行大规模的重构,项目将无法继续下去,而重构所需的时间也并非一个很短的周期)。

Kruchten 将这种脱离开外部环境来实施敏捷的形式称作“病态敏捷”(Agilitis)。治愈这种病态的方法就是将敏捷融入环境,并且抛弃那种认为每一种敏捷思想和实践都能给每一个项目带来益处的盲目信仰。你和你的团队是否也正在被病态敏捷折磨呢?

查看英文原文: As Agile Memes Spread, Does Software Development Improve?


译者简介:木雨宝道,Ruby On Rails 开发者,关注各种 Web 开发技术,敏捷开发爱好者,很少饮酒。参与 InfoQ 中文站内容建设,请邮件至 china-editorial[at]infoq.com。

2007-09-14 04:51741

评论

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

Java进阶(四)Java反射TypeToken解决泛型运行时类型擦除问题

No Silver Bullet

Java 反射 9月月更 typeToken

「趣学前端」SVG,边学边做

叶一一

JavaScript 前端 9月月更

你真的理解C语言中的 “ 数组 ” 吗?(初阶篇)

Albert Edison

数组 C语言 开发语言 二维数组 9月月更

Java进阶(五)Junit测试

No Silver Bullet

JUnit 测试 单元测试 9月月更

随机生成也是需要有效控制的

zxhtom

9月月更

LeetCode-35. 搜索插入位置(java)

bug菌

9月日更 Leet Code 9月月更

YAML管理Kubernetes应用

CTO技术共享

致敬经典!这款华为主题能让你的手机秒变“历代Mate”

最新动态

自动化测试如何管理测试数据

老张

自动化测试

[教你做小游戏] 滑动选中!PC端+移动端适配!完美用户体验!斗地主手牌交互示范

HullQin

CSS JavaScript html 前端 9月月更

云资源管理概述

阿泽🧸

云资源 9月月更

Containerd ctr、crictl、nerdctl 实战

CTO技术共享

云原生(三十六) | Kubernetes篇之Harbor入门和安装

Lansonli

云原生 9月月更

真的破防了!在华为主题熄屏显示找到我的第一台Mate

最新动态

库调多了,都忘了最基础的概念-《方法篇》

知识浅谈

9月月更

2022-09-04:以下go语言代码输出什么?A:不能编译;B:45;C:45.2;D:45.0。 package main import ( “fmt“ ) func main() {

福大大架构师每日一题

golang 福大大 选择题

计算机网络的组成

StackOverflow

编程 计算机网络 9月月更

生产环境中使用 Linkerd

CTO技术共享

【精通内核】Linux内核并发控制原理信号量与P-V原语源码解析

小明Java问道之路

Linux 并发控制 内核 Linux内核 9月月更

《小米创业思考》之一:小米历程

郭明

读书笔记

信息安全之我见(45/100)

hackstoic

信息安全

leetcode 148. Sort List 排序链表(中等)

okokabcd

LeetCode 算法与数据结构

浅述AIOps与DevOps的区别在哪里

穿过生命散发芬芳

DevOps AIOPS 9月月更

你猜 1 行Python代码能干什么呢?神奇的单行 Python 代码

梦想橡皮擦

Python Python. 9月月更

使用 VUE 和 Go 触摸 WebAssembly

devpoint

Go Vue webassembly 9月月更

深入学习SAP UI5框架代码系列之二:UI5 Module的懒加载机制

汪子熙

JavaScript 前端框架 SAP ui5 9月月更

云原生的学习心得

Geek_e8bfe4

神级编程网站,堪称程序员的充电站,我给你找好了不能错过

C语言与CPP编程

编程 程序员 网站 计算机 编程语言‘

一款开源的电商框架介绍:Spartacus

汪子熙

typescript angular SAP Spartacus 9月月更

【CSS】 position : static | absolute | relative | fixed | sticky

翼同学

CSS 前端 9月月更

查看k8s的etcd数据

程序员欣宸

Kubernetes 9月月更

随着敏捷文化的传播,软件开发是否也得到了提升?_研发效能_Amr Elssamadisy_InfoQ精选文章