《程序员的修炼——从优秀到卓越》一一1.9博伊德迭代法则

    xiaoxiao2023-06-18  158

    本节书摘来自异步社区出版社《程序员的修炼——从优秀到卓越》一书中的第1章,第1.9节,作者:【美】Jeff Atwood,更多章节内容可以访问云栖社区“异步社区”公众号查看。

    1.9 博伊德迭代法则

    程序员的修炼——从优秀到卓越Scott Stanfield曾经转发给我一篇Roger Session的文章,题为“A Better Path to Enterprise Architectures”(通向企业架构更好的一条路)。尽管文章的标题带了“企业”这个很泛滥的词,但出乎我的意料,这篇文章写得挺好!

    我特别喜欢Roger在文中独辟蹊径,使用一组类比来阐明了软件开发中迭代和递归方法的区别。他首先展示了Colonel John Boyd对于20世纪50年代的喷气式战斗机在操控过程中的独特性能的研究。

    Colonel John Boyd对任何空战都很感兴趣,而对于MiG-15和F-86之间的较量尤为关注。作为一名资深飞行员和飞机设计师,Boyd对于这两种飞机都非常熟悉。他知道MiG-15的性能比F-86更加优异:爬升速度更快,转弯速度更快,可视距离也更远。

    F-86也有两个优点。首先,它拥有较宽的视野,相比于MiG-15的飞行员可以看到前方更远的地方,F-86的飞行员可以看到飞机侧面的更多情况。其次,F-86拥有液压飞行控制系统,而MiG-15的飞行控制系统是手动的。

    一般飞机设计师普遍认为,飞机的可操作性是赢得空战的关键因素。毫无疑问,拥有更快的转弯速度和爬升性能的MiG-15可以完胜F-86。

    但问题在于,尽管MiG-15被飞机设计师们认为是优胜者,但飞行员们却更愿意驾驶F-86。原因很简单,在与MiG-15的一对一的较量中,10次中有9次是F-86胜出。

    一种配置稍逊的飞机如何能持续击败另一种配置优良的飞机?作为史上最优秀的空战飞行员之一,Boyd有他自己的一套理论。

    Boyd认为,空战中取胜的主要决定因素不是观察、定向、计划以及更好地操作,而是观察、定向、计划以及更快地操作。换句话说,能不能取胜就看飞行员能够多快地执行迭代。Boyd暗示,迭代的速度胜过迭代的质量。

    接下来,Boyd提出了另外一个问题:为什么F-86可以更快地迭代?他总结的原因是,F-86装备了液压飞行操纵杆而MiG-15只装备了手动操纵杆——在此之前,没人觉得飞行操纵杆有这么重要。

    没有液压装备,移动MiG-15的飞行操纵杆会比F-86稍微多费一些体力。一旦MiG-15的飞行员移动操纵杆,尽管MiG-15可以更快转弯(或者爬得更高),但飞行员会消耗更多的体力。

    每完成一次迭代,MiG-15的飞行员都会比F-86的飞行员更加疲乏一点。随着疲劳的累积,MiG-15的飞行员会需要更长的时间才能完成一次OOPA迭代——Observe(观察)、Orient(定向)、Plan(计划)、Act(操作)。MiG-15的飞行员输就输在OOPA的速度上。

    这就引出了“博伊德迭代法则”:迭代的速度胜过迭代的质量。

    于是你不难发现,在现代软件工程的方方面面都有异曲同工之妙:

    单元测试必须要小而快,以便每次编译时都能运行这些测试。可用性测试这么做最有效:以两周为一个周期来做一些小改动,并且快速抛弃那些不好的部分。大多数敏捷开发方法都建议,迭代周期不能超过4周。软件测试就是(在将软件发布之前)让它提早失败,经常失败。功能规范书最好能简明扼要,并且持续改进。请记住:疑惑之时,唯有快速迭代方能突围!

    相关资源:敏捷开发V1.0.pptx
    最新回复(0)