频率降低难度

  我最喜欢的一句金句是:如果有难度,就更频繁地做。表面上这话看起来有一些荒谬的娱乐性,但当您深入思考时会产生一些有价值的意义。

  这方面的一个例子就是集成。大多数程序员很早就认识到将他们的工作与他人集成是一种令人沮丧和痛苦的经历。因此,人类的自然反应是尽可能地推迟这样做。

  然而,问题在于,如果我们能够绘制困难和集成之间间隔时间的关系图,我们会看到这样的图表

  如果你面对这样的指数关系,那么你做得越频繁,你就可以大大减少痛苦。这就是持续集成中所发生的事情——通过每天集成,集成的痛苦几乎消失了。它本来有困难,而你频繁去做,然后就不再有困难。

   这种更频繁地做有困难的事情的想法在敏捷思维中很常见。测试、重构、数据库迁移、与客户的对话(用户故事法)、计划、发布——各种活动都更频繁地进行。

  是什么导致了这种效果?我认为有三个普遍的原因。首先,大多数这样的任务是随要做的任务的数量的增加而变得更加困难的,但是当分解成更小的块时,它们操作起来就会很容易。数据库迁移就是一个很好的例子。实施涉及多个表的大型数据库的迁移很困难且容易出错。但是,如果您一次只做一个小的更改,则更容易让每个更改都正确。此外,您可以轻松地将小型迁移串成一个序列。因此,当您将大型迁移分解为一系列小的迁移时,一切都会变得更容易处理。这就是数据库重构的本质。

  反馈是第二个原因。许多敏捷思维都是关于建立反馈循环,以便我们可以更快地学习。反馈是极限编程的一个明确价值,也是Ken Schwaber讨论预定义过程控制和经验型过程控制之间差异的核心。在像软件开发这样的复杂的过程中,你必须经常检查自己的位置并进行路线修正。为此,你必须寻找每一个机会来添加反馈循环并增加获得反馈的频率,以便更快地进行调整。

  第三个原因是实践。对于任何活动,我们都会随着我们更频繁地进行而改进。人们常说,获得良好手术的关键是找到一位经常进行手术的外科医生。练习可以帮助您解决流程中的问题,并使您更加熟悉出现问题的迹象。如果你反思你正在做的事情,你也会想出改进你的练习的方法。有了软件,还有自动化的潜力。一旦你做了几次某事,就会更容易看到如何自动化它,并且你更有动力去自动化它。自动化特别有用,因为它可以提高速度并减少出错的机会。

  因此,每当您面临痛苦的活动时,问问自己这些力量是否适用。如果是这样,增加频率可以使您更有效并消除压力来源。

posted @ 2021-09-08 15:47  leehsiang  阅读(37)  评论(0编辑  收藏  举报