[技術討論]06年12月結對程式設計與交換程式設計的對話

qingrun發表於2008-01-30

對話內容

2006-12-7 11:57:35 魏偉() 結對程式設計指什麼?
 
2006-12-7 14:17:01 青潤 pair programming
 
2006-12-7 14:20:41 青潤 一種軟體開發過程的團隊分工形式
 
2006-12-7 14:22:14 魏偉() 不明白有什麼好處啊
 
2006-12-7 14:24:26 魏偉() http://qinysong.javaeye.com/blog/24766,這個寫的好麼?
 
2006-12-7 14:24:30 青潤 你看一下XP方面的材料會比較好一些。
 
2006-12-7 14:25:04 青潤 另外,你可以看一下程式設計師雜誌第12期上面有我寫的一篇交換程式設計的文章,這個對你平時開發肯定有好處。
 
2006-12-7 14:25:19 魏偉() 好
 
2006-12-7 14:25:20 青潤 因為目前聽說過我這個方法的都很感興趣並願意採用。
 
2006-12-7 14:28:52 青潤 http://blog.csdn.net/programmer_editor/archive/2006/12/07/1433092.aspx
 
2006-12-7 14:32:01 青潤 是你發的這個寫的內容。但是,評價上需要斟酌。
 
2006-12-7 14:37:45 魏偉() 我感覺實際工作中,很多時候都是這麼做的
 
2006-12-7 14:37:54 魏偉() 當然,沒這麼全面
 
2006-12-7 14:38:21 青潤 呵呵。有很多都是無意識的,轉變成有意識,這是一個過程。其實,並不是什麼特別的創新。
 
2006-12-7 14:38:37 魏偉() 比如,我管理專案的時候,就熱衷於參與很多模組的開發,和開發人員一起開發一些程式碼,然後再換一個
 
2006-12-7 14:39:19 魏偉() 如果從理論上證實是提供效率的,倒很適合現在我們單位的實際情況,專案太多,人員臨時調動很頻繁
 
2006-12-7 14:39:28 青潤 那和結對的方式還是有些差異,其實各個團隊有自己的特點,交換和結對,要看如何應用。團隊特點不同,也需要考慮具體的應對策略。

對話來源 

這段對話來自我msn的留言:國外結對程式設計實驗人數超過百人,部分實驗長達三年被實驗人數千餘人,國內同類實驗六個人,差別,差距!

另外,交換程式設計的文章已經在程式設計師雜誌第十二期上發表,csdn官方blog也已經發布了網路版本:http://blog.csdn.net/programmer_editor/archive/2006/12/07/1433092.aspx

當然,關於這個方法具體的用法一方面是要根據專案來考慮,另一方面就需要根據團隊成員情況進行分析,總之,靈活運用才能讓有效的方法發揮出其效果,本本主義可能反而會毀掉一個方法。

下面是我交換程式設計文章的最新版本中補充的部分內容,釋出在這裡。

交換程式設計最新版本補充內容

Abstract

結對程式設計是一個程式設計方法,在這種方法中要求兩個程式設計師使用一臺電腦在一起工作完成同一個任務。在軟體開發中關於結對程式設計的價值正在進行著爭論。Pair programming is a programming technique in which two programmers use one computer to work together on the same task. There is an ongoing debate over the value of pair programming in software development. 目前在這個領域大量的知識都是離散的和無條理的。回顧這些可以看到絕大多數這方面的實驗研究都是在大學環境中進行的。幾乎沒有在真實軟體開發專案中詳細審查下的結對程式設計被已存在的系統化實驗研究過。因此,假設目前仍然沒有純粹的經驗驗證這種優勢的存在。The current body of knowledge in this area is scattered and unorganized. Review shows that most of the results have been obtained from experimental studies in university settings. Few, if any, empirical studies exist, where pair programming has been systematically under scrutiny in real software development projects. Thus, its proposed benefits remain currently without solid empirical evidence.

由於結對程式設計在表象上給人以浪費一個開發人員的感覺,所以,在很多軟體企業中,結對程式設計很難得到推廣實施。在本文的報告中,給出了一種有別於結對程式設計和傳統的單人程式設計的團隊組織形式,這種形式融合了結對程式設計促進團隊內相互交流的好處,保持了團隊的穩定性,同時採用了傳統單人程式設計的形式,不給人以浪費人力的感覺。

1.           Introduction

在傳統的開發過程中,往往是一個人從一個模組的需求開始,然後作分析、設計、編碼、單元測試,接著才會交給第二個人(專職測試人員)進行其他測試專案。這樣的開發過程會因為開發人員的變動而對專案的進展產生較大的影響,所以就有人提出專案中編碼人員的重要性遠比專案經理大。而同時,極限程式設計中的結對程式設計方式,對於開發人員人手嚴重不足的專案中,很多軟體企業是不認可這種組織方式的,他們認為這會浪費很多的人力,一加一未必大於二。

Pair Programming is one technique of 12 Core Practices in Extreme Programming [1, 2, 3] . With Pair Programming, all tasks must be performed by pairs of programmers using only one display, keyboard, and mouse. Proponents of Pair Programming claim that their development paradigm brings strong advantages over conventional processes, including higher team productivity and improved software quality. XP的宣傳中提到,兩個人結對在一段時間以後可以使得開發效率超過solo programming,同時質量也會得到提高[6]。同樣,在2006年的敏捷中國開發者大會上,ThoughtWorks的總經理也提到了這個問題,他的解釋是這樣的:當兩個人合作三個月以後,效率會超過兩個人單獨程式設計的效率!但請注意這裡有一個時間前提:三個月以後。三個月這個時間未必是真實確鑿的時間分界線,它只是一個模糊的大概的時間範疇,如果兩個人配合的好,也許只需要兩個多月,如果配合不好,也許需要四五個月的時間,或者更長的時間……。本文相信這樣的說法連Martin也不會反對的。

但是,在本文的實踐過程中發現,幾乎沒有軟體企業因為XP這樣的宣傳而採用Pair Programming的方式進行軟體開發。除了Thought Works等少數公司外,幾乎所有的公司都仍然採用傳統的solo programming的方式進行軟體開發。

在所能查閱到的關於Pair Programming優勢分析和資料採集的文獻資料中,其研究的基礎大部分都是在校學生[7, 8, 9, 10, 11, 12, 13, 14, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29]。只有不到十分之一的論文是關於專業程式設計師進行結隊程式設計的實驗[6, 33],而這部分關於專業程式設計師實踐Pair Programming的論文也並沒有討論Pair Programming開發效率是否真的能夠達到兩個同等水平的專業程式設計師solo programming的開發效率。幾乎所有的論文的對比資料基礎都是基於Pair Programming和一個solo programming之間進行的,這樣的資料無疑並不能讓軟體企業信服這種開發方法所具有的優勢。同時還查閱到一些論文在實踐的基礎上提出了相反的觀點,如Hanna Hulkko & Pekka Abrahamsson的研究就認為Pair Programming在與solo programming對比的時候並不能始終保持高效率和高質量。他們在文中寫道:”They indicate that pair programming may not necessarily provide as extensive quality benefits as suggested in literature, and on the other hand, does not result in consistently superior productivity when compared to solo programming” [32, 33].

基於這樣的實踐和研究,本文更認為,交換程式設計具有其特殊的優勢,在與Pair Programmingsolo programming的對比上。

References

[1]   K. Beck. Embracing change with extreme programming. IEEE Computer, pages 70–77, Oct. 1999.

[2]   K. Beck, Extreme Programming Explained: Embrace Change. Reading, Massachusetts: Addison-Wesley, 2000.

[3]   Williams, L. & Kessler, R. (2002), Pair Programming Illuminated, Pearson.

[4]   Constantine, L.L., Constantine on Peopleware. Yourdon Press Computing Series, ed. E. Yourdon. 1995, Englewood Cliffs, NJ: Yourdon Press.

[5]   F. Brooks. The Mythical Man Month. Addison-Wesley, anniversary edition, 1995.

[6]   Cockburn, A. & Williams, L. (2001), The costs and benefits of pair programming, in ‘Extreme Programming Examined’, Addison-Wesley, chapter 14, pp. 223–244.

[7]   In Support of Student Pair-Programming——這次的論文

[8]   The Effects of “Pair-Pressure” and “Pair-Learning” on Software Engineering Education軟體工程教育中的結對壓力與結對學習的影響——這次的論文

[9]   Case Study: Extreme Programming in a University Environment

[10]   EXTREME PROGRAMMING FOR SOFTWARE ENGINEERING EDUCATION? 軟體工程教育中的極限程式設計

[11]   Guidelines for the Use of Pair Programming in a Freshman Programming Class在新生程式設計課程中使用結對程式設計的指導方針

[12]   The Impact of Pair Programming on Student Performance, Perception and Persistence學生結對程式設計的實踐效果:效能,理解,堅持

[13]   Working in pairs as a means for design knowledge building: an empirical study結對工作作為一種設計知識積累的方式:完全經驗主義的研究

[14]   Kim Man Lui & Keith C.C. Chan, “A Cognitive Model for Solo Programming and Pair Programming 的認知模型”, Proceedings of the Third IEEE International Conference on Cognitive Informatics (ICCI’04), 2004

[15]   Matthias M. M¨uller & Frank Padberg, “An Empirical Study about the Feelgood Factor in Pair Programming完全經驗式的研究關於結對程式設計中的情感因素”, Proceedings of the 10th International Symposium on Software Metrics (METRICS’04), 2004

[16]   Laurie Williams, Anuja Shukla, Annie I. Antón, “An Initial Exploration of the Relationship Between Pair Programming and Brooks’ Law結對程式設計與布魯克斯法則之間關係的初步探索”, Proceedings of the Agile Development Conference (ADC’04), 2004——北卡羅琳娜州立大學

[17]   Hiyam Al-Kilidar, Peter Parkin, Aybüke Aurum, Ross Jeffery, “Evaluation Of Effects Of PairWork On Quality Of Designs設計質量上結對工作的效果評估”, Proceedings of the 2005 Australian Software Engineering Conference (ASWEC’05), 2005——澳大利亞,新南威爾士大學

[18]   Work in Progress - Unexpected Student Outcome from Collaborative Agile Software Development Practices and Paired Programming in a Software Engineering Course工作進展——在軟體工程課中不可預料的學生成果從協作敏捷軟體開發實踐和結對程式設計

[19]   Towards Increasing the Compatibility of Student Pair Programmers有助於提高適應性的學生結對程式設計

[20]   Undergraduate Student Perceptions of Pair Programming and Agile Software Methodologies Verifying a Model of Social Interaction大學生理解的結對程式設計和敏捷軟體方法學:群體互動驗證模型

[21]   How and Why Collaborative Software Development Impacts the Software Engineering Course影響軟體工程課程的協作軟體開發應該如何做,為什麼要這樣做

[22]   Pair Programming in Graduate Software Engineering Course Projects在畢業生軟體工程課程專案中的結對程式設計

[23]   Work in Progress - Effect of Instructional Design and Pair Programming on Student Performance in an Introductory Programming Course工作進展—在介紹程式設計課程中的學生成績在指導設計和結對程式設計上的影響

[24]   Changing Students’ Perceptions: An Analysis of the Supplementary Benefits of Collaborative Software Development改變學生的理解:一個針對協作軟體開發附加好處的分析

[25]   Empirical Validation of Test-Driven Pair Programming in Game Development在遊戲開發中測試驅動和結對程式設計的經驗驗證

[26]   Examining the Compatibility of Student Pair Programmers學生結對程式設計的相容性檢查

[27]   Jari Vanhanen & Casper Lassenius, “Effects of Pair Programming at the Development Team Level: An Experiment在開發團隊層面上結對程式設計的效果:一種經驗”, 0-7803-9508-5/05/$20.00 (c)2005 IEEE, 2005——??這個引用不知該如何修改。

[28]   Debunking the Nerd Stereotype with Pair Programming結對程式設計揭穿愚蠢的陳詞濫調

[29]   Joseph Chao & Gulgunes Atli, “Critical Personality Traits in Successful Pair Programming成功結對程式設計個性特點的評價”, Proceedings of AGILE 2006 Conference (AGILE'06), 2006

[30]   Hanna Hulkko & Pekka Abrahamsson, “A Multiple Case Study on the Impact of Pair Programming on Product Quality關於結對程式設計在軟體質量上的效果的多個案例研究”, ICSE’05, May 15–21, 2005, St. Louis, Missouri, USA. 2005——反面觀點論文

[31]   A Multiple Case Study on the Impact of Pair Programming on Product Quality研究結對程式設計對產品質量影響的若干案例分析

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/257598/viewspace-165679/,如需轉載,請註明出處,否則將追究法律責任。

相關文章