2000年,灵巧共同声明的问世使此项合作开发模式迅速红遍全球。它从被人批评,已发展到金融行业内几乎天下人言必称灵巧。然而,此灵巧早已不是彼灵巧了。2010 年后,我们的Kozhikode转变成别说灵巧,只补救,从那以后,灵巧就早已开始出现自相矛盾的偏激了。

如今,我们看到的灵巧尽是对应用软件金融行业的性丑闻:

愤慨国内外的空中巴士737 Max系列产品飞机交通事故导致上千人遇难,事件中空中巴士管理工作层多多少少把发难对准应用软件技师造成的MCAS应用计算机程序;

某强国内政部针对如何避免应用软件设计工程项目中的Agile BS (伪灵巧),公合作开发表概述手册;

作为顾客方,某大型跨行业租车公司在一个工程项目上莫名其妙花费5000亿美元后,却没任何供采用者采用的新功能上架,有鉴于此与相关应用软件设计BizTalk分销商反目成仇......数不胜数的事例引发了我们对以下现况的检视:

● 应用软件系统的产品品质缺乏,以及缺少或者说的质量开放性;

● 许多公开场合里,应用软件技师们没获得或者说的认同;

● 用峡谷的管理工作观念来控管灵巧应用软件交货项目组;

●从业者素养参差不齐,有些人甚至缺少底子及业余素养;

● 应用软件系统的采用者最终顾客的商业价值被所谓的合作开发过程所溶化,或被忽略了,或缺少尽快意见反馈;

● 领袖们竭尽全力采用传统工程项目化、程序化观念来管理工作实质上应该是其他人一起创造中商业价值的工作;

● 心疼又无可奈何的技师们竭尽全力被进退两难走,缺少尽快的参与,缺少贡献和一致意见的形成。

再过去的20年里,原本简洁明了的灵巧概念早已变得含糊不清了,精益、看板、LeSS、SAFe、现代化、技能提升……形形色色的概念都掺杂其中。这些掺杂进去的理念未必不好,但它们并不是灵巧原本的信息。

于是,身为多本灵巧应用软件设计经典著作的作者和灵巧共同声明缔造者之一的Bob屌丝决定正本清源,重拾灵巧初心。这本新作——《灵巧整洁之道:回归本源》也因此应运而生。

大叔qq技术博客-第1张

满100减50元

灵巧整洁之道:回归本源

作者:[美] Robert C. Martin

译者:申健 何强 罗涛

审校者:熊节 韩磊

Bob屌丝与灵巧共同声明

20年前美国雪鸟镇的一次聚会无意中掀起了应用软件设计世界乃至整个商业世界的灵巧浪潮,短短4句灵巧共同声明道出了应用软件系统合作开发管理工作应有的状态。只是,还差了一点点。

虽然当时的17人中有好几位极限编程( Extreme Programming, XP)的代表,但是为了与其他管理工作类的灵巧方法求同存异,他们淡化了应用软件匠艺——编程工作底子的内容。只有共同声明第二条略有提及,然而什么叫可工作的应用软件,即使去问拥有几年经验的灵巧实践者,也会得到模棱两可的不同解读,更别说去问照本宣科的道听途说者了。

大叔qq技术博客-第2张

Bob屌丝在国际灵巧社区非常活跃,贡献过《灵巧应用软件设计:原则、模式与实践》《代码整洁之道》《代码整洁之道:程序员的业余素养》等书,还分享过很多优秀的编程练习(Kata)。2008年他曾提议给灵巧共同声明加上第五句一一 匠心雕琢高于瞎写垃圾(Crarfsmansnip over Crap)。

Bob屌丝何许人也?

大叔qq技术博客-第3张

Robert C. Martin,世界级应用软件设计大师,灵巧共同声明发起人之一,灵巧联盟首任主席。他从20世纪70年代起就是一名程序员,被后辈程序员尊称为鲍勃屌丝( Uncle Bob)。

他是Clean Coders网站的创始人, 为应用软件设计者提供在线视频培训。他也是鲍勃屌丝咨询公司( Uncle Bob ConsultingLL .C )的创始人,为世界各地的大企业提供应用软件咨询、培训和技能发展服务。

我们正在探索通过合作开发应用软件并帮助他人合作开发应用软件的更好方法。

——《灵巧共同声明》

从灵巧革命的最初时刻起,Bob就在思考大型灵巧的问题:如何才能将轻量级,迭代,增量,高意见反馈合作开发的原理应用于或者说的大型工程项目?

最初的答案是Scrum of Scrums。其思路是在更大的规模上递归应用灵巧合作开发的原则。如果一个工程项目需要多个由 5 至 12 个合作开发人员组成的项目组来完成,则可以由两个此规模的项目组进行构建,并由一个更高级别的项目组来监管? 他们。当我们开始考虑大型工程项目时,我们无法避开层次结构;但是灵巧似乎极其讨厌层次结构。

但Bob和他的项目组受到很大的阻碍:编译耗时数小时。编辑是在电传打字机上完成的。那时,大多数程序员根本不知道如何采用键盘。因此他们让按键操作员为其输入了代码。在这种环境下,很难实现快速意见反馈循环。

即使这样,他们仍在努力缩短这些意见反馈循环的耗时。他们采用汇编程序来写代码,通过将应用软件打包为八进制或十六进制来进行调试。他们可以在调试程序中执行代码,甚至通过在计算机上单步执行来测试代码。他们逐渐变得相当擅长于此项工作。在当时,这是在合理的时间内完成工作的唯一方法。

大叔qq技术博客-第4张

但是,历史的车轮不断向前,为了在冗长意见反馈回路的环境下更好地工作,峡谷模型就是在这种环境下应运而生。当需要花一整天时间完成编辑、编译、测试循环时,必须进行大量的前期规划和后期检查。

后期他们开始采用在控制台上不容易调试的语言,编写越来越大的程序。摩尔定律所说的指数发展曲线,对于当今大多数程序员来说并不陌生。。他们从1970年的24小时周转,到1980年的60分钟周转,到1990年的十分钟周转,再到2000年的十秒周转。到了2005年,大多数程序员的周转时间不到一秒钟。

灵巧方法就是在这种环境下问世的。灵巧方法是 20 世纪 60 年代快速测试周期、高意见反馈合作开发战略的回归,但它拥有更强大的机器、更好的编程语言和工具,需要处理更大型的工程项目。

灵巧方法最终脱颖而出。峡谷模型虽然在 70 年代和 80 年代发挥了不可或缺的作用,但在某些极端情况下却无能为力。在那几十年里,他们走了不少弯路,学到了很多。因此,当灵巧方法在 90 年代末期出现时,伴随它的还有那段黑暗时期吸取的教训。

灵巧,不仅仅是回到较短的意见反馈周期。在较短的意见反馈周期之上,灵巧还涉及了多门学科。诸如测试、重构、配对和高度自动化之类的学科。诚然,灵巧是科技的推手;但在推动技术发展的同时,也推动着历史的车轮滚滚向前。灵巧无疑向前迈进了一大步,已不再局限于 60 年代的战略。

但是灵巧的方向是什么?Bob一直坚持的灵巧革命改进了什么?对此,Bob回应道:

灵巧从来都不是工程项目管理工作。但这就是他们将其变成的东西。灵巧和工程项目管理工作完尽是正交的。灵巧不是管理工作工程项目的更好方法。灵巧与管理工作工程项目无关。灵巧是一套商业价值观和纪律,可以帮助相对较小的应用软件手工艺项目组(男女)构建中小型产品。

灵巧这场革命关注的是相对小的项目组如何合作开发相对小的应用软件工程项目。

Bob屌丝为何对灵巧清理门户

虽然灵巧的影响力在金融行业中逐渐下渗,与之随行的,还有技术实践的逐渐缺失。

从若干记录灵巧实施的论文中可以看到,距离互联网领域和少数核心企业越远,在实施灵巧的过程中持续集成、自动化测试等技术实践的缺失就越严重。

最终在很多企业变成只见其形不见其神的呆板管理工作手段,似乎是各种先进管理工作方法在中国难以绕开的难题。

在灵巧转型上投入了几年时间与资源后,这些公司意识到:他们以前存在的问题如今仍然存在。当然,他们把责任全都推到灵巧头上。

向中层管理工作者兜售灵巧流程很容易,因为他们都希望应用软件能够更快交货。希望推动程序员更快工作的管理工作者,正在利用灵巧流程带来的充分开放性,对项目组进行微观管理工作。

一个很常见的现象是,管理工作层早已确定了工程项目未来 6~12 个月所有的迭代和相应的采用者故事。如果一次迭代没能交货原计划中所有的采用者故事点,就意味着合作开发项目组需要在下一次迭代更努力地工作,以弥补上次的延迟交货。每日站会变成了合作开发人员必须向产品负责人和灵巧教练汇报进展,详细说明自己正在做什么、什么时候能够完成。如果产品负责人觉得合作开发人员浪费了太多时间在自动化测试、重构或结对编程等事情上,他们会直接叫项目组停止这些实践。

战略性的技术工作在他们的灵巧流程中是没位置的。不需要架构或设计。他们要求只管聚焦在产品待办列表中最高优先级的事项上,然后一个接一个尽可能快地完成。这种方式导致项目组不断重复着短视的、战术性的工作,从而积累了技术债务。

管理工作者们责怪合作开发人员前进得不够快。合作开发人员责怪管理工作者们不允许他们做必要的技术和战略性工作。产品负责人不认为自己是项目组的一部分,当事情出问题时也不承担责任。井水不犯河水的文化开始占据主导。

——灵巧的宿醉

平心而论,经历过灵巧转型(哪怕并不完整)的公司,从业务角度看都比以前处在更好的位置上。不过,尽管公司的现况比以前要好,灵巧流程与工程实践的分离仍然在伤害公司。

如今大多数灵巧教练并没足够的技术能力去辅导合作开发人员掌握技术实践,他们也很少谈论工程实践。几年过去,合作开发人员开始把灵巧教练当成新的一层管理工作者:这群人告诉他们该做什么,而不是帮助他们更好地完成工作。

是合作开发者在远离灵巧,还是灵巧在远离合作开发者?

或许两者都是。看上去,灵巧和合作开发者正在互相远去。在许多组织中,灵巧被认为是Scrum 的同义词。当提到极限编程时,就只剩下了几个技术实践,例如测试驱动合作开发和持续集成。

灵巧教练们期望合作开发人员可以采用一些极限编程的实践,但是他们并没或者说提供帮助,也从不参与到合作开发者的工作中去。许多产品负责人(或者工程项目经理)仍然不觉得自己是项目组的一分子,在事情没按计划推进时也并无任何责任感。合作开发人员仍然需要艰难地与业务部门沟通,才能进行必要的技术改造,从而竭尽全力合作开发与维护系统。

公司仍然不够成熟,没足够理解技术问题实际上是业务问题。

随着对技术能力逐渐失去关注,灵巧是否还能给应用软件工程项目带来显著的改善?灵巧是否还像当初《灵巧共同声明》中所言,聚焦于身体力行同时帮助他人探寻更好的应用软件设计方法?

我不是很确定。

——Bob屌丝

灵巧只是一个框架,它可以帮助合作开发人员和管理工作人员进行务实的工程项目管理工作。但是,这种管理工作不是自动的,并不能保证让你做出恰当的决定。

20年前,Bob就认识到:任何大事,都是很多做小事的小项目组共同协作完成的。然而,在灵巧合作开发发展了20个年头后,我们似乎遗忘了应用软件系统合作开发管理工作者应有的状态,对灵巧合作开发的理解与Bob当初的意图相去甚远。

是时候再来一次灵巧合作开发的观念重启了。

《灵巧整洁之道:回归本源》

《灵巧整洁之道:回归本源》,Bob屌丝从一个或者说热爱构建高产品品质应用软件的技师和全力为项目组争取认同的灵巧先锋人物的视角,创作的《灵巧整洁之道:回归本源》,带着我们重温灵巧初衷,同时又对如何能实现或者说的灵巧提出犀利的见解。

大叔qq技术博客-第1张

满100减50元

灵巧整洁之道:回归本源

作者:[美] Robert C. Martin

译者:申健 何强 罗涛

审校者:熊节 韩磊

本书首先概述灵巧的历史、灵巧的全貌;然后分析应用软件设计各角色之间的关系,说明灵巧出现的缘由;接下来分别讲解灵巧的业务实践、项目组实践和技术实践;同时还介绍了成就灵巧的因素,其中还谈到灵巧转型中常见的问题与困难;最后提出应用软件匠艺理念。

业内大咖推荐

Bob屌丝秉承其一贯风格:旗帜鲜明,简洁为本,一针见血式无论您是想成为卓越应用软件设计者还是领袖,此书都是力荐之作。

在一个复杂多变、高速发展的世界,我们也应该多尝试用应用软件化/数字化的观念来思考和指导我们如何来持续创造商业价值,无论独自一人还是在项目组中都能保持快乐和平和,充满好奇和感恩,和顾客携手共创。

纡余为妍,卓荦为杰——成为更卓越的自己,是人类进化的脚步:如何成为更卓越的自己,并成就项目组,是灵巧启发世界去探索的课题。让我们或者说灵巧起来吧!

——李国彪 优普丰灵巧学院创始人/灵巧教练

灵巧虽然是一种帮助小项目组运作小工程项目的方法,但它对整个IT金融行业有着巨大的影响,因为任何大工程项目都是由若干小工程项目组成的。

这本书首先讲述了灵巧的发展线,并指出,虽然很多培训认证让更多的人知道了灵巧这个词,但同时也让越来越多不或者说理解应用软件设计这一领域的人成了自相矛盾灵巧的代言人。本书也批驳了那些自相矛盾灵巧的说法与观点。

有趣的是,本书最后还直接引用了其他人的文章。而这其中有些文章似乎是反对鲍勃屌丝观点的。然而,细读你会发现,它们不但肯定了书中提到的实践,而且也指导组织如何去学习掌握这些实践,从而让组织或者说灵巧起来。

——乔梁 金融行业畅销书《持续交货2.0》作者,腾讯高级管理工作顾问

鲍勃屌丝是灵巧历史上的主要人物,也是灵巧创建者之一,对灵巧的出现和发展过程一清二楚。无论是在《灵巧共同声明》编写之前还是后,鲍勃屌丝一直强调的是应用软件设计的实战技能和具体可落地的实践。

跟某些应用软件灵巧共同声明的编写者大有不同,鲍勃屌丝一直以来是方法论的独立分子,没对某一个方法论做推广,反而一直强调实用性。在本书中,鲍勃屌丝毫无保留地跟所有灵巧爱好者分享了他对灵巧的看法、体会、应该注意的事项,以及他丰富的经验。本书非常值得参考。

非常时期值得看与众不同的书。本书十分值得灵巧爱好者的关注和探讨。

——史文林(Vernon Stinebaker) CSTCEC CTC极限编程爱好者

Bob屌丝的整洁之道其他作品

2009年,Bob汇聚了数十年编程生涯的心得体会出版了《代码整洁之道》,此书一出版,十分受程序员们的喜爱,他们说:市面上关于学习各种语言的书很多,却很少有教我们编程技能之外的书,尤其是这种高质量的更是少见!

大叔qq技术博客-第6张

满100减50元

代码整洁之道

作者:[美] Robert C. Martin

译者:韩磊

作为编程领域的佼佼者,本书作者给出了一系列产品行之有效的整洁代码操作实践。这些实践在本书中体现为一条条规则(或称启示),并辅以来自现实工程项目的正、反两面的范例。只要遵循这些规则,就能编写出干净的代码,从而有效提升代码质量。

2016年,《代码整洁之道:程序员的业余素养》,以自己以及身边的同事走过的弯路、犯过的错误为例,告诉我们成为或者说专业的程序员需要具备什么样的态度,需要遵循什么样的原则,需要采取什么样的行动。助其业余生涯迈上更高台阶!

大叔qq技术博客-第7张

满100减50元

代码整洁之道:程序员的业余素养

作者:[美] Robert C. Martin

译者:余晟 章显洲

本书是编程大师Bob 屌丝40 余年编程生涯的心得体会的总结,讲解要成为或者说专业的程序员需要具备什么样的态度,需要遵循什么样的原则,需要采取什么样的行动。作者以自己以及身边的同事走过的弯路、犯过的错误为例,意在为后来者引路,助其业余生涯迈上更高台阶。

并且,这两本书都被广大程序员追捧,是无数老程序员心中的白月光,新程序员心中的标杆!并且这是少有的系列产品图书的豆瓣评分都达到8.5以上的系列产品!

大叔qq技术博客-第8张
大叔qq技术博客-第9张

读者的意见反馈也甚佳,关于代码整洁的理念也深入人心,让越来越多的读者领会到代码整洁和业余素养的重要性,而一提到代码整洁,众多程序员浮现的都是Clean!

大叔qq技术博客-第10张
大叔qq技术博客-第11张
大叔qq技术博客-第12张
大叔qq技术博客-第13张

因此,现在我们都说:Bob出品,绝非凡品!

-END-

参考来源:

《灵巧整洁之道 回归本源》

Bob屌丝个人网志:https://blog.cleancoder.com/uncle-bob/2018/04/02/InTheLarge.html