不要逼我結對編程
這是一篇痛斥,我真的很生氣。
我不是一個社交型的生物。我不想整天時間或大部分時間、甚至一小部分時間坐在另外一個程序員邊上編程 ——即使是經過測量發現這樣會提高我的開發效率。就是因為這不是我喜歡的工作方式。它會毀了我對生活的感覺,毀了我的工作環境。我,跟大多數左腦型的人一 樣,是一個內向的人,無法從容的忍受過度的結伴或社交活動。我感覺這些都是非常讓人消耗精力、讓人惱怒的事情。我更喜歡安靜的一個人工作。這樣工作我會非 常有效率。事實上我是想說這樣我會極其有效率。我深信這是我能獲得最大工作效率的工作方式。更重要的,這是我最樂意的方式。生活中沒有比快樂更重要的事情了。我可以做一次嘗試,看看結對編程是否能比我單獨編程更有效率,但我不愿意,因為我根本不在意比較的結果。如果我渴望整天時間坐在另一個人或一群人身邊搞社交活動,那我不如去做公關工作或銷售或其它類似的工作。
我 知道結對編程有很多可以看到的好處。我知道有些人深信結對編程能幫助初級程序員更快的提高進步。我知道有些人深信它能讓你減少bug的產生。我知道有些人 深信它能幫助增加團隊的凝合力。如此等等…我知道有很多研究都對此加以證實。我也讀了不少,但這些研究都像是在跟我作對,沒有一個是適合我的。一個都沒 有。如果按照那些自稱能讓我更有效率的指導強行對我施行結對編程,我寧愿立即辭職。如果結對編程是軟件業唯一允許的實踐方法,我寧愿單干,自己開公司。如 果編程工作只能用結隊編程實現,那我選擇放棄編程。我會選擇一種行當,一種沒有這些多余的要求我從事社交活動、被人打攪的準則的行當。(不斷的被打攪是結 對編程的基本信條之一。長時間的結對編程的情況下一個人怎么能進入最高效率狀態、進入zone境界?這超出了我的能力。)
結對編程跟我的個性真是無法兼容,我是一個能力很強、技術很高的程序員。我知道,因為我媽媽這樣說的。;) 事實上,我的能力和技術證明了結對編程的非必要性。結對編程對于增加程序員的效率和開發出最好的產品都絕對不是必須的。它對我反而有負面影響。
我 并不認為我是唯一有這種觀點的人。所有我的同事都有這種看法。在我20多年的職業生涯中,我只知道有一個人,我懷疑他有可能是適合結對編程的,這個人是外 向型的,老實的說,他不是一個特別好的程序員。不是特別差,但不能稱作好——一般吧。我的意思是,我有信心說,我的對結對編程的觀點和態度不是獨有的。絕 對不是。我相信軟件產業里有份量的開發者或領袖會有同感。而那些廣大的“螺絲釘”和“齒輪”(朝九晚五拿工資的人),我懷疑只有40%或更少的人能從結對 編程中受益。我懷疑所有的關于結對編程的喧囂都來自他們。結果,外向型的管理經理們把這些人和內向型的放在團隊里一起管理。(提示:非技術人員一般不應該 被安排管理技術人員——這如同水火不容。)
所以,如果你是這些人中的一員,請閉嘴,不要再說什么結對編 程了。它就像是一支又老又無聊的頌歌,我早就聽煩了。沒錯,它可能很適合你。沒錯,它可能很適合你的團隊。但你們只是少數——非常少但噪音很大的少數。干 那些適合你自己的,但請尊重其他人,讓其他人做適合他們的事。我很久沒有聽到或讀到有人抨擊結對編程有多么的糟糕了。集中你的注意力,努力思考,深入問 題,設計解決方案,正確的實現,系統化的測試。我們不需要把思想觀點從喉嚨里擠出來,掛在臉上,顯示它是多么“神奇”和多么具有“革命性”。我們只是在開 發,管好自己的事就行了。如果你認為把一種編程實踐方法當作宗教式的宣傳比編程本身更重要,那你是絕對需要結對編程來幫助你提高效率。好的程序員,少說, 多做。
[英文原文:Pair Programming (give it a rest) ]
來自: 外刊IT評論 http://www.aqee.net/