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

    SwiftUI All In One SwiftUI SwiftUI is an innovative, exceptionally simple way to build user interfac ...

  2. asm 查看字节码

    a.asm global Start section .text inc dword [esi] push edi mov edi,[esp+0x14] λ nasm -f win32 a.asm - ...

  3. HDFS 02 - HDFS 的机制:副本机制、机架感知机制、负载均衡机制

    目录 1 - HDFS 的副本机制 2 - HDFS 的机架感知机制 3 - HDFS 的负载均衡机制 参考资料 版权声明 1 - HDFS 的副本机制 HDFS 中的文件,在物理上都是以分块(blo ...

  4. 【Python】set 与 list ——如何对列表进行去重?

    在Python中,形如 {1,2,3,4,5} 这样的数据类型叫做"集合",外形酷似列表list [1,2,3,4,5] 但是集合与列表有很多区别,具体表现在以下几方面: List ...

  5. Mysql的join算法

    本文转载自Mysql的join算法 导语 在Mysql中,使用Nested-Loop Join的算法思想去优化join,Nested-Loop Join翻译成中文则是"嵌套循环连接" ...

  6. scala函数至简原则是什么?

    1.return可以省略,Scala会使用函数体的最后一行代码作为返回值 2.如果函数体只有一行代码,可以省略花括号 3.返回值类型如果能够推断出来,那么可以省略(:和返回值类型一起省略) 4.如果有 ...

  7. js 一元运算符

    一元运算符还有一个常用的用法就是将自执行函数的function从函数声明变成表达式. 常用的有 + - - ! void + function () { } - function () { } ~ f ...

  8. Javascript中的事件对象和事件类型

    接上次看JS的事件冒泡和捕获,所以顺带就把事件相关的知识都看完好了 而且想到一个好的学习方法,第一天自己看,第二天把前一天学习的东西写下来,一方面可以当复习,一方面当重新整理并且分享 事件对象 事件处 ...

  9. Vue学习笔记-Django REST framework3后端接口API学习

    一  使用环境 开发系统: windows 后端IDE: PyCharm 前端IDE: VSCode 数据库: msyql,navicat 编程语言: python3.7  (Windows x86- ...

  10. JS数组的常用属性或方法

    1.length 数组长度 计算数组的长度 var arr=[1,2,3,4,5]; console.log(arr.length);//输出结果是5 2. push() 添加元素 向数组尾部添加新元 ...