马丁-福乐的一句座右铭时:如果一件事它让你痛苦,就频繁的做这件事。看似毫无意义,实际当你深挖之后会产生许多有价值的意义。
一个例子就是集成。大多数的程序开发者会发现和其他人集成工作是一件让人沮丧和痛苦的经历。因此,人们的自然反应是尽可能地推迟做这件事。
然而,如果我们用一张图来表示痛苦程度和集成的频率之间的关系,会如下所示
如果你知道这种指数级的关系,你就会频繁的做这件事,它会大量减少你的痛苦。这就是 Continuous Integration所做的事情-通过每天集成,集成的痛苦几乎会消失。
更频繁的做一些让你产生痛苦的事情的想法产生了许多敏捷的思考。测试、重构、数据库迁移、和客户沟通、计划、发版-所有这些活动都可以做的更频繁。
是什么导致了这种结果呢?我认为有三种理由。首先就是这些任务随着数量的增加会变得越来越困难,但当被分解成更小的块时,它们就很容易组合。数据库迁移是很好的例子。指定涉及多个表的大型数据库迁移非常困难,而且容易出错。但如果你一次只迁移一张表就很容易而且也不会出错。此外,您可以轻松地将小型迁移连接到一个序列中,因此,当您将一个大的迁移分解为一系列小的迁移时,处理起来就容易多了。这就是数据库重构的本质.
反馈是第二个原因。许多敏捷思维都是关于建立反馈循环,以便我们能够更快地学习。反馈是极限编程最突出的价值,也是 Ken Schwaber's discussion一文中的核心观点。在复杂的过程中,比如软件开发,你不得不频繁的检查开发到哪了并确保过程正确。为了做到这个,你必须尽一切可能来增加反馈循环并增加你获取反馈的频率,这样就可以更快的调整。
第三点是实践。任何活动,我们做的越多就提高的越快。练习可以帮助你解决过程中的疑难杂症,让你更熟悉出错的迹象。如果你反思你正在做的事情,你也会想出方法来提高你的练习。软件也有实现自动化的潜力。一旦你频繁的做一些事情,就很容易知道怎么让它自动化完成。自动化可以提高工作效率和减少犯错的机会。
所以当你面对一个痛苦的活动的时候,问问自己这些方法是否适用。如果是这样的话,增加频率可以让你更有效,并消除压力的来源。