不要逼我結對程式設計

aqee發表於2013-11-28

  這是一篇痛斥,我真的很生氣。

  我不是一個社交型的生物。我不想整天時間或大部分時間、甚至一小部分時間坐在另外一個程式設計師邊上程式設計——即使是經過測量發現這樣會提高我的開發效率。就是因為這不是我喜歡的工作方式。它會毀了我對生活的感覺,毀了我的工作環境。我,跟大多數左腦型的人一樣,是一個內向的人,無法從容的忍受過度的結伴或社交活動。我感覺這些都是非常讓人消耗精力、讓人惱怒的事情。我更喜歡安靜的一個人工作。這樣工作我會非常有效率。事實上我是想說這樣我會極其有效率。我深信這是我能獲得最大工作效率的工作方式。更重要的,這是我最樂意的方式。生活中沒有比快樂更重要的事情了。我可以做一次嘗試,看看結對程式設計是否能比我單獨程式設計更有效率,但我不願意,因為我根本不在意比較的結果。如果我渴望整天時間坐在另一個人或一群人身邊搞社交活動,那我不如去做公關工作或銷售或其它類似的工作。

  我知道結對程式設計有很多可以看到的好處。我知道有些人深信結對程式設計能幫助初級程式設計師更快的提高進步。我知道有些人深信它能讓你減少bug的產生。我知道有些人深信它能幫助增加團隊的凝合力。如此等等…我知道有很多研究都對此加以證實。我也讀了不少,但這些研究都像是在跟我作對,沒有一個是適合我的。一個都沒有。如果按照那些自稱能讓我更有效率的指導強行對我施行結對程式設計,我寧願立即辭職。如果結對程式設計是軟體業唯一允許的實踐方法,我寧願單幹,自己開公司。如果程式設計工作只能用結隊程式設計實現,那我選擇放棄程式設計。我會選擇一種行當,一種沒有這些多餘的要求我從事社交活動、被人打攪的準則的行當。(不斷的被打攪是結對程式設計的基本信條之一。長時間的結對程式設計的情況下一個人怎麼能進入最高效率狀態、進入zone境界?這超出了我的能力。)

  結對程式設計跟我的個性真是無法相容,我是一個能力很強、技術很高的程式設計師。我知道,因為我媽媽這樣說的。;) 事實上,我的能力和技術證明了結對程式設計的非必要性。結對程式設計對於增加程式設計師的效率和開發出最好的產品都絕對不是必須的。它對我反而有負面影響。

  我並不認為我是唯一有這種觀點的人。所有我的同事都有這種看法。在我20多年的職業生涯中,我只知道有一個人,我懷疑他有可能是適合結對程式設計的,這個人是外向型的,老實的說,他不是一個特別好的程式設計師。不是特別差,但不能稱作好——一般吧。我的意思是,我有信心說,我的對結對程式設計的觀點和態度不是獨有的。絕對不是。我相信軟體產業裡有份量的開發者或領袖會有同感。而那些廣大的“螺絲釘”和“齒輪”(朝九晚五拿工資的人),我懷疑只有40%或更少的人能從結對程式設計中受益。我懷疑所有的關於結對程式設計的喧囂都來自他們。結果,外向型的管理經理們把這些人和內向型的放在團隊裡一起管理。(提示:非技術人員一般不應該被安排管理技術人員——這如同水火不容。)

  所以,如果你是這些人中的一員,請閉嘴,不要再說什麼結對程式設計了。它就像是一支又老又無聊的頌歌,我早就聽煩了。沒錯,它可能很適合你。沒錯,它可能很適合你的團隊。但你們只是少數——非常少但噪音很大的少數。幹那些適合你自己的,但請尊重其他人,讓其他人做適合他們的事。我很久沒有聽到或讀到有人抨擊結對程式設計有多麼的糟糕了。集中你的注意力,努力思考,深入問題,設計解決方案,正確的實現,系統化的測試。我們不需要把思想觀點從喉嚨裡擠出來,掛在臉上,顯示它是多麼“神奇”和多麼具有“革命性”。我們只是在開發,管好自己的事就行了。如果你認為把一種程式設計實踐方法當作宗教式的宣傳比程式設計本身更重要,那你是絕對需要結對程式設計來幫助你提高效率。好的程式設計師,少說,多做。

  英文原文:Pair Programming (give it a rest)

相關文章