想必大家對敏捷開發中的結對程式設計都有所瞭解,可在公司試用推廣時卻很容易遭到大多數同事的反對,反對理由如下:
1.長期的習慣導致在有個人在旁邊監督你編寫程式碼時很彆扭;
2.敏捷的結對程式設計要求兩個程式設計師最好能力水平相當?這個不好界定吧,另外每個人都有每個人的編碼習慣,大家也知道,做為程式設計師的我們往往比較固執,也比較愛佈道,所以很容易產生各種實時衝突,影響開發效率;
3.也許兩個人會聊其他話題哦,比如這款智慧機怎樣,那遊戲怎麼樣,哈哈,這種情況應該比較少吧。
其實我認為可以引入一種結對程式設計的變種,並不是嚴格按照敏捷概念的那種結對。而是對大範圍的一個結對,比如說一個產品(在我們公司常常就有一個人開發一個產品的情況),一個子系統,一個核心功能的結對,不是針對編碼的結對,恰恰,編碼要分開!我覺得這種結對的精髓就是,對核心功能的設計兩個人都去參與研究和設計,然後綜合二人的方案提交給部門一個評審方案,因為一個人研究一個核心功能難免會有思維侷限,要麼就是陷入誤區後無法很快找到熟悉此功能的人一起探討。而結對程式設計在某種程度上規避了此種風險的發生,子系統的設計開發和產品的設計開發同理。注意,有一點,編碼上一定要嚴格分開,兩人不能有功能和程式碼上的交叉重疊。程式碼完成後,程式碼評審也在兩人間進行。
我覺得采用以上結對程式設計,相比傳統的敏捷結對程式設計有以下幾個好處:
1.沒人監視程式設計了,很舒服,自主;
2.水平不相當也沒關係,把簡單功能分給水平稍低的;
3.功能的分解由兩個人同時寫程式碼完成肯定比只有一個人寫程式碼快;
4.質量?沒關係,有程式碼評審呢;
5.衝突,至少實時的衝突沒有了,兩個人可以在程式碼評審時互相學習,集中解決衝突。