Tuesday, October 03, 2006
Like XP For Your Brain
时光倒流,我曾写过一篇名为《将“原理”转化为行动》(Turning "Stuff" into Action)的GTD文章,在那里面我预测了通过某种途径将测试驱动开发(Test-Driven Development)的准则应用到生活中将是大有好处的。
大约一年半之后,当我在对Pathfinders group客户做培训的时候突然间发现自己所做的达到了类似于TDD的程度。我在周四针对客户的初始目标(以“not sucking”形式的构建下)回复他们的时候,写道:
因此,设想你的所有“内部”问题都已解决且你自己不再“吸食(sucks)”:接下来你应该做什么?怀揣这个想法可以实现两件截然不同的事:一个是,它可以帮你创造一个你自己想要的设想中的精神模型。另一个是,它使你能够实际发挥目标的杠杆作用:不仅能找到真正的障碍,还可用它们来检查那些障碍是否已经消除。
如果你有过编程经验,那就可以把它看成是一种测试驱动开发。此刻,你正在对你自己应该的样子和你的“代码”应该有哪些尝试着进行一番“重要的提前设计(big up-front design)”。我们想要取而代之地去创建测试,并且只是进行所需的最小量修改你“自己”来让它能够通过测试。这保证了我们将不会做很多YAGNI's(译者注:表示“您将不需要它(You Aren't Going to Need It)”)。
这样看来,不知在人生道路上哪个地方我不仅最终将这个原则落实到我的生活中,且这样做时是以连我都未曾注意的方式,而直到我开始尝试向别人解释它时我才意识到我是这样做的。那个客户回复道:
哈!这么说我们正在进行极限编程了 ;-)。
由于那时我们并没有在做结对编程,起先我还认为那并非是真正的XP。但等一等,结对编程是一个人在“驱动”细节,而另一个人帮忙在高层进行掌控…。所以我推测以其自身的某种神秘方式,这个培训实际符合了XP的要求。
既然我已经注意到它了,它便开始一次又一次地不断显现出来。比如,今晚,我写道(回复关于效能工具的评论):
一般来说,虽然完成了这个培训过程,我强烈告诫人们不要向他们的系统中增加新的工具。在这里所应用的原则,是我们仅对“失败的测试”做出响应并进行变更,然后只有最小的变更才能通过测试。
我的个人经验是,使用“效能工具”容易导致更多地自省(introspection)和尾随追踪(tail-chasing),但在这里我们想要的并没有那么多。你的注意力应该放在你的目标上面,而非工具。如果你需要一个新工具,你将会明白这一点。
例如,你把讨论班所有注册数据放在了物理文件夹里——我只创建一次就会有一堆卷子(papers)要处理。在最初策划讨论班的时候,我既没有卷子也没有文件。从某个角度讲可能我将需要更多复杂的文件归档来跟踪每个人通往其目标过程中所处的位置,我或许会使用一个PIM程序在这个位置上。然而对于现在由于我还没到那里,玩弄软件将不会对我目标的实现有任何帮助。
所以,事实上对于我的疯狂举动看起来有一个解决之道。“极限精神编程(eXtreme Mental Programming)”?“敏捷自助(Agile Self-Help)”?“测试驱动的个人力量(Test-Driven Personal Power)”?也许我该去看看在这些领域中是否有可以派上用场的。;-)
(同时,若你想了解更多有关如何将这些东西应用到你的生活中这方面事情,请一定去看看我的自我修养Blog,Live your dreams, or die trying。)
(原文链接网址:http://dirtsimple.org/2006/10/like-xp-for-your-brain.html)