敏捷史话(十二):你现在接触的敏捷也许是“黑暗敏捷”——Ron Jeffries
他很少提起往事,也不再提及二十年前那场引起软件行业变革的会议,他专注于当下,一直活跃在敏捷领域。八十多岁的他依然运营维护着网站和博客,是极限编程网站 XProgramming.com 的作者,该网站是极限编程网站中运行时间最长、最大的单人网站之一,目前包含200多篇文章。他在发布的文章里进一步阐述了开发人员应远离“人造敏捷”或“黑暗敏捷”形式,而应更接近宣言的价值和原则。他是极限编程的创始人之一,Ron Jeffries。
编程工作
Ron Jeffries 从事编程行业的时间比大多数人的年龄还要久,当他在战略空军司令部总部工作时,同事们无意间给他的一本 FORTRAN 手册让他开始了编程的生涯,在1961年,他为战略空军司令部总部的 IBM 704编写了他的第一个计算机程序。

在这之后,他和他的团队研发了收入超过五亿美元的软件产品,其中包括汇编程序、FORTRAN、Pascal、C、C ++和 Smalltalk 中的商业软件。还使用 LISP、Forth 及其他六种语言进行了大量的非商业开发,实现了商业操作系统、编译器、关系和集合理论的数据库系统以及广泛的应用程序。他自述认为自己足够幸运,在入行初期就接触并实践了极限编程。从那之后,“除了帮助其他人,我没有做其他任何事”,这就是他回顾自己所有成功的项目得出的经验:将 XP 技术应用于所有要完成的项目。
Dark Scrum
“我最初的‘敏捷’导师肯特·贝克(Kent Beck)有一次曾经提到,他发明极限编程(Extreme Programming)的主要目的之一是让程序员的生存环境变得更安全一些。然而事实证明,对于程序员而言,这个世界尚不安全,尤其是乱用 Scrum 可能会给程序员带来更多的不安全问题,Scrum 发明人之一 Ken Schwaber 曾说这种情况让他很难过。”在一次访谈中,Ron 这样说道。
他在博客上分享了一篇帖子,主张开发人员应该放弃“敏捷”。该帖子进一步阐述了开发人员应远离“人造敏捷”的形式,而应更接近宣言的价值和原则。
据他称,“人造敏捷”和“黑暗敏捷”这两个术语被作者用来强调各种所谓的“敏捷”方法,这些方法导致开发人员的生活变差而非改善,这是《敏捷宣言》最初思想的对立面。Jeffries 指出发生这种情况的主要原因是:这种“敏捷”对企业有利,对开发人员则不利;开发人员依然不具有自主性,而是被强制性工作。因为借助各种不同的教练和培训,能够提高问题的可见性,通常可以使高层管理人员和整个公司做出更明智的决策。

自上而下的推行敏捷通常意味着某些事情是由高层决定,然后在整个组织中实施或推广。然后,大多数人在没有经过适当的培训或指导、不理解其背后真实理念的情况下就被要求采用敏捷。这样就会给开发人员带来的更多干扰、更短的工作时间、更大的压力以及要求“更快”的需求。对于使用 SAFe、LeSS和其他功能的大型 Scrum 实践中,通常会出现这种情况。
回到敏捷宣言的根源,Ron 强化了这样一种观念,即敏捷背后的最重要的事情是思维方式、价值观和原则,因为它们仍然提供构建软件的最佳方法。
因此,无论组织采用何种正式的框架或方法,每个敏捷开发人员都应以以下方式工作:每周产出可运行的集成软件;不断提升自身技能;保持软件设计干净;在软件价值的基础上进行沟通对话。
敏捷之外
和 Jeff 与 Ken、Thomas 与 Andy 一样,Ron 也有合作更为紧密的伙伴,他和 Chet Hendrickson 是一路相识相知的好伙伴,作为长期的同事和朋友,二人对定义敏捷性都产生了巨大影响。Chet Hendrickson 自1996年以来从事敏捷软件开发工作,也参与开发了极限编程。在2000年,Ron Jeffries、Ann Anderson 和 Chet Hendrickson 一起撰写了《Extreme Programming Installed 》。这本书详细介绍了 XP 的核心实践,如何做以及如何共同帮助团队取得成功。

Ron 最近的著作是《软件开发本质论》,该书于2015年初发行。本书开门见山的打了个比喻:软件开发就像是穿越一片岩浆,但在这片岩浆中存在一条“自然之路”,我们的目标就是找到这条路并尽量行走在上面,而不是陷入岩浆之中。那么如何做到这一点呢?这本书对此进行了解答。这本书所运用的比喻、图片等表达方式体现着 Ron 的性格特征,他拥有天马行空的想象和强大的表达能力。他是敏捷软件开发中技术改进和卓越表现的坚定支持者,性格较为强势,被朋友们描述为“尽管他有时举止粗鲁,但经常被认为是内心住着泰迪熊”。
从个人阅读到手绘到无人机,工作之余,他的兴趣爱好广泛。还会像现在的网红博主一样在博客上为大家进行“好物推荐”,不遗余力地给读者“种草”他认可的好东西,比如可以容纳彩铅、橡皮、素描本甚至 iPad 的帆布包;也会发挥技术严谨优势,对科技产品进行测评,分析新旧款无人机的不同体验感受。从这些方面来看,我们确实得以窥见这只住在 Ron 内心的泰迪熊,剥开强势的外衣,他的本意是在向世界传递价值。
这也就像他反对现在的某些“敏捷”的原因一样,不管形式如何,惠及程序员、提高效率、产出价值,这些才是 Ron 所倡导的敏捷本质。
敏捷史话(十二):你现在接触的敏捷也许是“黑暗敏捷”——Ron Jeffries的更多相关文章
- 敏捷宣言(Agile Manifesto)和敏捷开发十二原则
敏捷宣言 The Agile Manifesto Individuals and interactions over Process and tools 个体与交互 重于 过程和工具 Working ...
- 敏捷史话(二):Scrum社区的悲剧性损失——Mike Beedle
2018年3月23日,在美国的芝加哥发生了一起意外刺杀事件.一名男子刺杀了一位首席执行官,而这位不幸的首席执行官就是<敏捷宣言>的合著者--Mike Beedle.Mike 的这场意外令 ...
- 敏捷史话(九):用做面包的方式做敏捷——Alistair Cockburn
在一次用例和敏捷技术交流大会上,Alistair给大家分享了自己比较崇尚的三个字: "守""破""离",他用做面包的例子,形象地将这三个字与 ...
- 敏捷史话(十四):敏捷之峰的攀登者 —— Jim Highsmith
"我们希望,一起组成的敏捷联盟能够帮助到其他同行,帮他们用新的更'敏捷'的方式去思考软件开发.方法论和组织.做到这一点,我们就得偿所愿了."Jim Highsmith 在雪鸟会议结 ...
- 敏捷史话(十五):我发明了敏捷估算扑克牌 —— James Greening
雪鸟会议 雪鸟会议前夕,James Grenning 在 Object Mentor 与 Robert C. Martin 一同工作,彼时组织雪鸟会议的 Bob 大叔盛情邀请 James,告知他会议的 ...
- 敏捷史话(六):也许这个人能拯救你的代码 —— Robert C. Martin
Robert C. Martin( 罗伯特·C·马丁),作为世界级软件开发大师.设计模式和敏捷开发先驱.C++ Report杂志前主编,也是敏捷联盟(Agile Alliance)的第一任主席,我们尊 ...
- [CSAPP笔记][第十二章并发编程]
第十二章 并发编程 如果逻辑控制流在时间上是重叠,那么它们就是并发的(concurrent).这种常见的现象称为并发(concurrency). 硬件异常处理程序,进程和Unix信号处理程序都是大家熟 ...
- MINA、Netty、Twisted一起学(十二):HTTPS
由于HTTPS协议是由HTTP协议加上SSL/TLS协议组合而成,在阅读本文前可以先阅读一下HTTP服务器和SSL/TLS两篇博文,本文中的代码也是由这两篇博文中的代码组合而成. HTTPS介绍 上一 ...
- Gradle 1.12用户指南翻译——第五十二章. Maven 插件
本文由CSDN博客貌似掉线翻译,其他章节的翻译请参见:http://blog.csdn.net/column/details/gradle-translation.html翻译项目请关注Github上 ...
随机推荐
- CSS pseudo classes All In One
CSS pseudo classes All In One CSS 伪类 https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-classes ...
- LeetCode 题解 593. Valid Square (Medium)
LeetCode 题解 593. Valid Square (Medium) 判断给定的四个点,是否可以组成一个正方形 https://leetcode.com/problems/valid-squa ...
- 如何使用 js 实现一个 debounce 函数
如何使用 js 实现一个 debounce 函数 原理 防抖: 是指在指定的单位时间内,如果重复触发了相同的事件,则取消上一次的事件,重新开始计时! 实现方式 "use strict&quo ...
- 扫码登录 & 实现原理
扫码登录 & 实现原理 二维码扫描登录是什么原理? https://time.geekbang.org/dailylesson/detail/100044032 xgqfrms 2012-20 ...
- webpack defineConstants
webpack defineConstants PAGES 全局常量/全局变量 https://webpack.js.org/plugins/define-plugin/ taro https://n ...
- nasm astrncat_s函数 x86
xxx.asm: %define p1 ebp+8 %define p2 ebp+12 %define p3 ebp+16 %define p4 ebp+20 section .text global ...
- flutter 长按图片保存到手机
main.dart import 'dart:io'; import 'package:flutter/material.dart'; import 'package:http/http.dart' ...
- 按键显示器(判断键盘监听器获得的值为普通Key还中modifiers)
1 import sys 2 from PyQt5 import QtWidgets,QtCore 3 from PyQt5.QtCore import Qt 4 from PyQt5.uic.pro ...
- glibc内存管理那些事儿
本文转载自glibc内存管理那些事儿 Linux内存空间简介 32位Linux平台下进程虚拟地址空间分布如下图: 进程虚拟地址空间分布 图中,0xC0000000开始的最高1G空间是内核地址空间,剩下 ...
- apiAutoTest:支持自定义函数,用例中可调用
0. 前言 apiAutoTest从去年8月以来开源至今,也更新了不少内容,一起来看看吧 第一个版本 - 2020/08/08 增加实际响应存储数据的方法,并在字典可以处理依赖见tools/svae_ ...