他很少提起往事,也不再提及二十年前那场引起软件行业变革的会议,他专注于当下,一直活跃在敏捷领域。八十多岁的他依然运营维护着网站和博客,是极限编程网站 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的更多相关文章

  1. 敏捷宣言(Agile Manifesto)和敏捷开发十二原则

    敏捷宣言 The Agile Manifesto Individuals and interactions over Process and tools 个体与交互 重于 过程和工具 Working ...

  2. 敏捷史话(二):Scrum社区的悲剧性损失——Mike Beedle

    2018年3月23日,在美国的芝加哥发生了一起意外刺杀事件.一名男子刺杀了一位首席执行官,而这位不幸的首席执行官就是<敏捷宣言>的合著者--Mike Beedle.Mike 的这场意外令 ...

  3. 敏捷史话(九):用做面包的方式做敏捷——Alistair Cockburn

    在一次用例和敏捷技术交流大会上,Alistair给大家分享了自己比较崇尚的三个字: "守""破""离",他用做面包的例子,形象地将这三个字与 ...

  4. 敏捷史话(十四):敏捷之峰的攀登者 —— Jim Highsmith

    "我们希望,一起组成的敏捷联盟能够帮助到其他同行,帮他们用新的更'敏捷'的方式去思考软件开发.方法论和组织.做到这一点,我们就得偿所愿了."Jim Highsmith 在雪鸟会议结 ...

  5. 敏捷史话(十五):我发明了敏捷估算扑克牌 —— James Greening

    雪鸟会议 雪鸟会议前夕,James Grenning 在 Object Mentor 与 Robert C. Martin 一同工作,彼时组织雪鸟会议的 Bob 大叔盛情邀请 James,告知他会议的 ...

  6. 敏捷史话(六):也许这个人能拯救你的代码 —— Robert C. Martin

    Robert C. Martin( 罗伯特·C·马丁),作为世界级软件开发大师.设计模式和敏捷开发先驱.C++ Report杂志前主编,也是敏捷联盟(Agile Alliance)的第一任主席,我们尊 ...

  7. [CSAPP笔记][第十二章并发编程]

    第十二章 并发编程 如果逻辑控制流在时间上是重叠,那么它们就是并发的(concurrent).这种常见的现象称为并发(concurrency). 硬件异常处理程序,进程和Unix信号处理程序都是大家熟 ...

  8. MINA、Netty、Twisted一起学(十二):HTTPS

    由于HTTPS协议是由HTTP协议加上SSL/TLS协议组合而成,在阅读本文前可以先阅读一下HTTP服务器和SSL/TLS两篇博文,本文中的代码也是由这两篇博文中的代码组合而成. HTTPS介绍 上一 ...

  9. Gradle 1.12用户指南翻译——第五十二章. Maven 插件

    本文由CSDN博客貌似掉线翻译,其他章节的翻译请参见:http://blog.csdn.net/column/details/gradle-translation.html翻译项目请关注Github上 ...

随机推荐

  1. CSS 实现文本的竖向排版

    CSS 实现文本的竖向排版 demos .text{ word-wrap: break-word; width: 0px; } writing-mode .text{ writing-mode: ve ...

  2. vux使用

    Vue中使用vux的配置,分为两种情况: 一.根据vux文档直接安装,无需手动配置 npm install vue-cli -g // 如果还没安装 vue init airyland/vux2 my ...

  3. RecycleView 点击事件监听

    1.定义RecycleView 监听接口类 1 package com.example.*****; 2 3 import android.view.View; 4 5 public interfac ...

  4. Java自学第7期——异常(Exception)

    1.概念: 异常 :指的是程序在执行过程中,出现的非正常的情况,终会导致JVM的非正常停止. 在Java等面向对象的编程语言中,异常本身是一个类, 产生异常就是创建异常对象并抛出了一个异常对象. Ja ...

  5. SpringBoot整合Mybatis 使用generator自动生成实体类代码、Mapper代码、dao层代码

    1.新建一个SpringBoot项目,并引入Mybatis和mybatis-generator相关的依赖. <dependency> <groupId>org.springfr ...

  6. 维格表2月更新:智能图表上线,唤醒全量工作数据堪比AI

    你是否曾经想过,你的维格表数据有朝一日变化出如科幻电影般的数据图表? 你是否感到厌倦,对当前的后台系统密密麻麻的数据累觉不爱? 你是否一直期待,拥有一个专属大数据 BI 看板,让你的规划如有神助,挥斥 ...

  7. BigDecimalUtil:对double类型的数据进行处理(加减乘除、四舍五入、类型转换、比较两个值的大小)

    该工具类所在的包:import java.math.BigDecimal; 项目中使用该工具类的相关代码: // 如果Output表中已经存在该节点(插入数据的节点)的信息,则修改Output表中的这 ...

  8. tcp粘包情况分析

    1 什么是粘包现象 TCP粘包是指发送方发送的若干包数据到接收方接收时粘成一包,从接收缓冲区看,后一包数据的头紧接着前一包数据的尾.在tcp长连接时,发送端发到buffer里面,接收端也有个buffe ...

  9. Android - 利用扩展函数为Bitmap添加文字水印

    <异空间>项目技术分享系列--扩展函数为Bitmap添加文字水印 对图片Bitmap绘制文字水印还是比较常见的需求,毕竟版权意识都在增强(用户可以给自己图片加上用户名),还可以为用户提供更 ...

  10. 小程序setData中key用变量

    Page({ data:{ //类型列表 lastRootList:0,//上次点击的类型 rootList:[{name:'服饰箱包',selectClass:'root-active',iconC ...