編程實踐-交換編程

XP推崇極限編程。為了讓領(lǐng)導(dǎo)跟更容易接受,以及避免“表面上的浪費”,出現(xiàn)了“交換編程”。

關(guān)于“交換編程”的起源,一種說法是:

交換編程是引自《結(jié)對編程技術(shù)》的技術(shù)。

結(jié)對編程在很多項目中得到應(yīng)用,也作為XP一個非常著名的觀點和做法被很多人大為推崇。
  結(jié)對編程是兩個人同時做同一件事情的一種方法。表現(xiàn)上,會給人一種浪費一個開發(fā)人員的感覺,實質(zhì)上,這的確是可以提升效率的。
  同樣的這個做法,我在2002年在上海進行的一個類ERP項目中用過一次,當(dāng)時在我做完權(quán)限系統(tǒng)的全部功能后,和一個弟兄合作了一個模塊,我們兩個人只用了三四天時間,就完成了這個新的模塊的全部功能,這相對于我們此前做的功能模塊來說,時間不到那些模塊開發(fā)時間的十分之一。
  
  正是由于結(jié)對編程會讓人感覺到資源被浪費了一半,在2002年的一個項目中,小子提出進行結(jié)對編程的時候被領(lǐng)導(dǎo)拒絕了。于是就開始考慮如何才能降低這種表面的浪費,而又能讓大家交流起來,也能提高團隊的穩(wěn)定性……
  
  產(chǎn)生
  2002年小子的項目組在做如下這樣的一個項目:
  這是電信MSS系統(tǒng)的核心業(yè)務(wù)系統(tǒng)部分,包括了規(guī)劃、設(shè)計、施工、驗收、財務(wù)、合同等多個重要環(huán)節(jié)和多個部門的業(yè)務(wù)。
  當(dāng)時團隊開發(fā)人員數(shù)量較少,人員技能較為均衡,沒有水平超出其他人過多的技術(shù)人員。這個項目在最初評估的開發(fā)周期就是第一個版本在五個月內(nèi)完成,而整個項目是至少要做上一年以上的,而最后的實際情況是,這個項目隨著不斷的升級和調(diào)整一直開發(fā)了三年多。
  最初的開發(fā)團隊是十一個人,后來擴展到二十三個人,主要開發(fā)人員總數(shù)為十六個人,其中有四個人技術(shù)水平相對較高,另外的七個人技術(shù)水平相對較低但是也都有三年多的實際項目開發(fā)經(jīng)驗,其中有三個是我2001年帶的三個應(yīng)屆畢業(yè)生。
  
  由于開發(fā)團隊中沒有技術(shù)水平超出其他人很多的人員存在,因此技術(shù)方案的論證過程都是在大家的共同討論中制定下來的,只是在團隊整體控制上,當(dāng)時我有相對較強的發(fā)言權(quán),因此,在權(quán)衡了整個項目的實際情況后,我在需求工作完成后,告訴弟兄們一件事情,第二階段設(shè)計模型的開發(fā)大家交換來做。
  剛開始很多弟兄不理解,因為相對而言我的開發(fā)經(jīng)驗比其他人多了幾年,所以,當(dāng)時我說的一些話,兄弟們還可以接受,于是,我就直接要求大家按照我的計劃進行執(zhí)行。
  在設(shè)計模型開發(fā)完成后,我再次要求大家進行了一次交換。
  兩次交換完成后,保證了每一個模塊都有至少兩個人對這個模塊十分熟悉,一方面不會因為人員的變動造成團隊的不穩(wěn)定(這一點考慮相對較少,因為當(dāng)時的團隊合作時間是比較長的,大家十分熟悉和互相都很了解),另一方面保證每一個模塊的開發(fā)人員都能找到人進行討論,這增加了團隊內(nèi)的溝通,方便了協(xié)調(diào)工作的進行。
  因此在那個團隊的開發(fā)過程中,我們經(jīng)常是大呼小叫,十分熱鬧,我們這個團隊無論走到哪里,都是十分熱鬧的場景。
  
  定義
  與結(jié)對編程類似,交換編程也是一個非常簡單和直觀的概念:兩位或者多位程序員輪流開發(fā)同一個軟件系統(tǒng)的同一個模塊的不同階段的任務(wù)。交換編程的方式更合適的說法應(yīng)該是交換開發(fā),這種方式不僅僅在軟件項目中可以應(yīng)用,同樣的事情也可以在其他研究開發(fā)型項目中得到應(yīng)用。
  
  這是一種更容易被人們接受的方法,在前文大家已經(jīng)看到了它在實際項目中的事實,這里先分析一下它與結(jié)對編程的不同之處,那就是:
  1、它仍然采用傳統(tǒng)的一人一機的開發(fā)方式,結(jié)對編程是兩人一機。
  2、它在每個迭代間進行多人交換或者兩兩交換,結(jié)對編程沒有交換的概念。
  它與傳統(tǒng)的編程方式之間的差別是:
  它在每個迭代間進行多人交換或者兩兩交換,傳統(tǒng)編程沒有交換的概念。
  
  建議實施方式
  交換編程中的操作會與其他過程有較大的差異,根據(jù)經(jīng)驗,建議在軟件工程實施的各個階段按照如下的方式進行:
  需求工程,需求調(diào)研和需求分析進行輪流交換,輪流交換至少是三個以上的人進行互換,不是兩兩互換。
  概要設(shè)計(分析模型)開發(fā)中,需求分析到概要設(shè)計也進行輪流交換。
  詳細設(shè)計(設(shè)計模型)開發(fā)中,概要設(shè)計到詳細設(shè)計再進行一次輪流交換。
  編碼實施啟動后,詳細設(shè)計到編碼的交換采用兩兩交換,注意這個時候不再采用輪流交換了。

一種說法是:

image.png

https://www.zhihu.com/question/20637406

image.png

https://www.zhihu.com/people/tsingrun/activities

但不論起源是哪里,能理解交換編程(交換開發(fā)方法)的思想就可以了。

在開發(fā)實踐中,可以作為一種參考。

擴展閱讀:

交換編程

https://baike.baidu.com/item/%E4%BA%A4%E6%8D%A2%E7%BC%96%E7%A8%8B/15702509?fr=aladdin

簡介:

中文名 交換編程
引 自 《結(jié)對編程技術(shù)》
用 途 XP
產(chǎn) 生  2002

《結(jié)對編程技術(shù)》

書 名 結(jié)對編程技術(shù)
作 者 Laurie Williams
ISBN 9787111135319
頁 數(shù) 198
定 價 29.00元
出版社 機械工業(yè)出版社
出版時間 2004-1
裝 幀 簡裝本

《結(jié)對編程技術(shù)》是2004年機械工業(yè)出版社出版的圖書,作者是Laurie Williams。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容