沒有文檔的軟件是一種災(zāi)難。代碼不是傳達(dá)系統(tǒng)原理和結(jié)構(gòu)的理想媒介。團(tuán)隊(duì)更需要編制易于閱讀的文檔,來(lái)對(duì)系統(tǒng)及其設(shè)計(jì)決策的依據(jù)進(jìn)行描述。
然而,過(guò)多的文檔比過(guò)少的文檔更糟。編制眾多的文檔需要花費(fèi)大量的時(shí)間,并且要使這些文檔和代碼保持同步,要花費(fèi)更多的時(shí)間。如果文檔和代碼之間失去同步,那么文檔會(huì)變成龐大的、復(fù)雜的謊言,會(huì)造成重大的誤導(dǎo)。
對(duì)于團(tuán)隊(duì)來(lái)說(shuō),編寫并維護(hù)一份系統(tǒng)原理和結(jié)構(gòu)方面的文檔將總是一個(gè)好主意,但是那份文檔應(yīng)該是短小的(short)并且主題突出的(salient)。“短小的”意思是說(shuō),多有一二十頁(yè)。“主題突出的”意思是說(shuō),應(yīng)該僅論述系統(tǒng)的高層結(jié)構(gòu)和概括的設(shè)計(jì)原理。
如果全部擁有的僅僅是一份簡(jiǎn)短的系統(tǒng)原理和結(jié)構(gòu)方面的文檔,那么如何來(lái)培訓(xùn)新的團(tuán)隊(duì)成員,使他們能夠從事與系統(tǒng)相關(guān)的工作呢?我們會(huì)非常密切地和他們?cè)谝黄鸸ぷ。我們緊挨著他們坐下來(lái)幫助他們,把我們的知識(shí)傳授給他們。我們通過(guò)近距離的培訓(xùn)和交互使他們成為團(tuán)隊(duì)的一部分。
在 給新的團(tuán)隊(duì)成員傳授知識(shí)方面,好的兩份文檔是代碼和團(tuán)隊(duì)。代碼真實(shí)地表達(dá)了它所做的事情。雖然從代碼中提取系統(tǒng)的原理和結(jié)構(gòu)信息可能是困難的,但是代碼 是惟一沒有二義性的信息源。在團(tuán)隊(duì)成員的頭腦中,保存著時(shí)常變化的系統(tǒng)的脈絡(luò)圖(road map)。人和人之間的交互是把這份脈絡(luò)圖傳授給他人的快、有效的方式。
許多團(tuán)隊(duì)因?yàn)樽⒅匚臋n而非軟件,導(dǎo)致進(jìn)度拖延。這常常是一個(gè)致命的缺陷。有一個(gè)叫做“Martin文檔第一定律(Martin’s first law of document)”的簡(jiǎn)單規(guī)則可以預(yù)防該缺陷的發(fā)生:
直到迫切需要并且意義重大時(shí),才來(lái)編制文檔。