馬丁-福樂的一句座右銘時(shí):如果一件事它讓你痛苦昼牛,就頻繁的做這件事康聂。看似毫無意義霎烙,實(shí)際當(dāng)你深挖之后會(huì)產(chǎn)生許多有價(jià)值的意義蕊连。
一個(gè)例子就是集成。大多數(shù)的程序開發(fā)者會(huì)發(fā)現(xiàn)和其他人集成工作是一件讓人沮喪和痛苦的經(jīng)歷尝蠕。因此载庭,人們的自然反應(yīng)是盡可能地推遲做這件事。
然而囚聚,如果我們用一張圖來表示痛苦程度和集成的頻率之間的關(guān)系,會(huì)如下所示
如果你知道這種指數(shù)級(jí)的關(guān)系茁计,你就會(huì)頻繁的做這件事星压,它會(huì)大量減少你的痛苦鬼譬。這就是 Continuous Integration所做的事情-通過每天集成,集成的痛苦幾乎會(huì)消失优质。
更頻繁的做一些讓你產(chǎn)生痛苦的事情的想法產(chǎn)生了許多敏捷的思考军洼。測(cè)試歉眷、重構(gòu)颤枪、數(shù)據(jù)庫(kù)遷移畏纲、和客戶溝通、計(jì)劃盗胀、發(fā)版-所有這些活動(dòng)都可以做的更頻繁锄贼。
是什么導(dǎo)致了這種結(jié)果呢?我認(rèn)為有三種理由屑迂。首先就是這些任務(wù)隨著數(shù)量的增加會(huì)變得越來越困難冯键,但當(dāng)被分解成更小的塊時(shí),它們就很容易組合惫确。數(shù)據(jù)庫(kù)遷移是很好的例子。指定涉及多個(gè)表的大型數(shù)據(jù)庫(kù)遷移非常困難掩蛤,而且容易出錯(cuò)陈肛。但如果你一次只遷移一張表就很容易而且也不會(huì)出錯(cuò)。此外蜈亩,您可以輕松地將小型遷移連接到一個(gè)序列中前翎,因此,當(dāng)您將一個(gè)大的遷移分解為一系列小的遷移時(shí)港华,處理起來就容易多了。這就是數(shù)據(jù)庫(kù)重構(gòu)的本質(zhì).
反饋是第二個(gè)原因冒萄。許多敏捷思維都是關(guān)于建立反饋循環(huán),以便我們能夠更快地學(xué)習(xí)帅戒。反饋是極限編程最突出的價(jià)值崖技,也是 Ken Schwaber's discussion一文中的核心觀點(diǎn)。在復(fù)雜的過程中迎献,比如軟件開發(fā),你不得不頻繁的檢查開發(fā)到哪了并確保過程正確扒秸。為了做到這個(gè)冀瓦,你必須盡一切可能來增加反饋循環(huán)并增加你獲取反饋的頻率,這樣就可以更快的調(diào)整渔伯。
第三點(diǎn)是實(shí)踐。任何活動(dòng)锣吼,我們做的越多就提高的越快蓝厌。練習(xí)可以幫助你解決過程中的疑難雜癥,讓你更熟悉出錯(cuò)的跡象读恃。如果你反思你正在做的事情代态,你也會(huì)想出方法來提高你的練習(xí)。軟件也有實(shí)現(xiàn)自動(dòng)化的潛力西雀。一旦你頻繁的做一些事情歉摧,就很容易知道怎么讓它自動(dòng)化完成腔呜。自動(dòng)化可以提高工作效率和減少犯錯(cuò)的機(jī)會(huì)再悼。
所以當(dāng)你面對(duì)一個(gè)痛苦的活動(dòng)的時(shí)候,問問自己這些方法是否適用谤草。如果是這樣的話娘侍,增加頻率可以讓你更有效,并消除壓力的來源憾筏。