結(jié)對(duì)編程,我的噩夢(mèng)
自從極限編程的概念出現(xiàn),我讀到了一些材料,大談結(jié)對(duì)編程的好處。布道師告訴我們,它將提高代碼質(zhì)量,有利于知識(shí)的傳播,甚至提高生產(chǎn)率,同時(shí)培養(yǎng)開發(fā)者之間深刻到靈魂的聯(lián)系。 (see: spooning).
排斥結(jié)對(duì)編程的人都被認(rèn)定為牛仔,懶蟲,或社會(huì)的隱士。嗯,我不屬于這些(至少我不認(rèn)為),但我仍然討厭結(jié)對(duì)編程的想法。下面是我的理由……
我們不再是一種尊重沉默的文化。外向的人贏了。什么事都必須通過協(xié)作完成。每個(gè)人都必須隨時(shí)準(zhǔn)備好時(shí)間給每個(gè)人。不再有個(gè)人空間,不再有對(duì)工作的分擔(dān)。基本上,我們相信兩個(gè)腦袋總是比一個(gè)更好。
然而對(duì)我們來(lái)說(shuō)應(yīng)該是明顯的,這個(gè)理論并不一定放之四海而皆準(zhǔn)。在編程世界,一些偉大的創(chuàng)新和精妙的作品卻并不是從一個(gè)團(tuán)隊(duì)或一個(gè)結(jié)對(duì)涌現(xiàn)出來(lái)的。我想到了Ant,當(dāng)時(shí)Java社區(qū)的一個(gè)巨大飛躍,只是一個(gè)家伙在從歐洲到美國(guó)的航班上開發(fā)出來(lái)的?;蛘吒睦樱胂胱龀?MINECRAFT 的 Notch,做 Instapaper 的 Marco Arment,或是做 DuckDuckGo 的 Gabriel Weinberg:這都是單槍匹馬干出來(lái)的。事實(shí)上,世界上最有影響力的程序員之一(如果他還不算是最有影響力的人的話)史蒂夫·沃茲尼亞克有一句著名的口號(hào):
“一個(gè)人工作…不要進(jìn)什么委員會(huì)。不要加入什么團(tuán)隊(duì)。”
更進(jìn)一步,一些科學(xué)和藝術(shù)中最偉大的思想家都是低調(diào)的(例如:內(nèi)向)性格 – 想想達(dá)爾文,愛因斯坦,牛頓,或者甚至蘇斯博士。即使約翰·斯坦貝克都說(shuō)過:
有史以來(lái)就沒有什么東西是兩人一起創(chuàng)造出來(lái)的。根本沒有好的合作,無(wú)論是在音樂,藝術(shù),詩(shī)歌,數(shù)學(xué),還是哲學(xué),都是一樣。一旦創(chuàng)造的奇跡已經(jīng)發(fā)生,團(tuán)隊(duì)可以建造和擴(kuò)展它,但一組人從來(lái)沒有發(fā)明過什么。珍寶只能藏在一個(gè)人孤寂的內(nèi)心。
好吧,我在這里忽悠哲學(xué),但是當(dāng)我們回到我們自己的小角落–軟件開發(fā)的時(shí)候,既然我們可以很容易地想到這么多的反例,我們?yōu)槭裁催€要相信如某些人所宣稱的,超級(jí)協(xié)作(例如結(jié)對(duì)編程)是確保質(zhì)量或工作效率的前提呢?對(duì)于某些人來(lái)說(shuō),為什么結(jié)對(duì)編程在任何時(shí)候都是硬性規(guī)定呢?
我相信這只是某些人的個(gè)人心理的反映。簡(jiǎn)單地說(shuō):有些人喜歡這種工作作風(fēng),所以他們大聲疾呼,并推廣給所有人。
然而,事實(shí)是,我們中三分之一是性格內(nèi)向的人(程序員中的比例可能更高?。?。在一般情況下,我們不僅偏好單獨(dú)工作,而且獨(dú)自工作時(shí)成效更顯著。我們并不是不喜歡別人,而是我們的大腦更容易被外部刺激所擾亂(不管好還是壞,結(jié)對(duì)也是刺激的一種)。對(duì)于我們來(lái)說(shuō),高質(zhì)量的工作是和得到和保持自己的“區(qū)域”有關(guān)系的。如果確保了這一點(diǎn),我們就能做到高效率。如果確保不了,我們就做不到。
德馬科和李斯特在其著名的編碼戰(zhàn)爭(zhēng)游戲?qū)嶒?yàn)中(出自《人件》一書)證明過這一點(diǎn) – 他們發(fā)現(xiàn),對(duì)程序員工作質(zhì)量最好的預(yù)測(cè)指標(biāo)既不是工作年頭或薪酬,而是辦公環(huán)境的安靜程度。
這曾經(jīng)是一個(gè)廣受尊敬的見解。事實(shí)上,《Joel 談軟件測(cè)試》一文中關(guān)于好的工作場(chǎng)所的第八個(gè)問題是“程序員有安靜的工作環(huán)境嗎?”然而,可悲的是,超級(jí)協(xié)作的文化已經(jīng)無(wú)情地碾壓過我們更好的感性,而我要誠(chéng)實(shí)地說(shuō),我覺得這種文化超爛。
結(jié)對(duì)編程,這個(gè)“一切都在一起”文化的延伸,已經(jīng)滲透進(jìn)我們的思維到相當(dāng)?shù)某潭?,以至于許多人認(rèn)為,一個(gè)人單獨(dú)工作不僅是無(wú)效的,而且很無(wú)聊。對(duì)于我來(lái)說(shuō)卻恰恰相反。我最好的工作是獨(dú)自完成的,而且這種連貫的狀態(tài)是我做為程序員最享受的。這不是做“牛仔”,或自以為不會(huì)犯錯(cuò)誤。我是一個(gè)嚴(yán)格代碼審查的熱情倡導(dǎo)者,我每天也都從別人的見解受益。我只是說(shuō)結(jié)對(duì)編程的超級(jí)協(xié)作狀態(tài)不會(huì)使我成為一個(gè)更好(或更快樂)的程序員而已。請(qǐng)記住我說(shuō)的話。
當(dāng)人們描述說(shuō)結(jié)對(duì)編程是使他們從中受益的一種實(shí)踐,好吧,我知道了。但是如果他們要邁出下一大步,倡導(dǎo)(或要求)我按他們的做法來(lái),因?yàn)樗麄?ldquo;知道”我會(huì)從中受益(他們有一些“數(shù)據(jù)”來(lái)證明這一點(diǎn)?。€是打住吧。使人們產(chǎn)生高質(zhì)量的工作的方法因人而異。想想世界上(或者就是你的項(xiàng)目里)一些偉大的成就,這個(gè)道理應(yīng)該淺顯易懂。宣稱這種外向人群理想中的結(jié)對(duì)編程方法是對(duì)所有人有效的“最佳實(shí)踐”是愚蠢的,我不在乎敏捷開發(fā)教條主義者會(huì)說(shuō)什么。
英文原文:Ben Northrop,編譯:伯樂在線 – @老碼農(nóng)的自留地