第二章 文獻探討
第三節 配對程式設計
本節首先闡述配對程式設計的理念與意涵,接著針對其所具備的優勢進行闡 述,說明合作學習觀點的配對程式設計教學活動之規劃,並對配對程式設計教學 相關研究分別進行探討。
壹、配對程式設計的意涵
近年來極限程式設計(extreme programming, XP)的軟體發展方法在業界日漸 普及,極限程式設計是由Kent Beck於1996年提出的一種軟體開發方法,其目的在 運行,或延誤計劃時程(Beck & Andres, 2005)。
為了更貼近實務需求,極限程式設計以五項價值標準為基礎,將軟體開發流 程歸納為十二項實務作法,其中以配對程式設計(pair-programming)最受重視,極 限程式設計的成功可以歸因於配對程式設計的實行(Beck & Andres, 2005),因此在 企業界普遍使用配對程式設計的方式來進行軟體開發(Williams & Upchurch, 2001)。配對程式設計是由兩位程式設計師配對合作,兩人共同使用一台電腦,共 同設計演算法、撰寫程式碼,以及進行測詴除錯等工作。配對程式設計中,兩位 合作夥伴分別擔任不同的角色,其中一人作為操作者/驅動者(actor/ driver),負責
操控電腦與撰寫程式碼;另一人則扮演指揮/觀察者(director/ observer)負責尋找與 運用手邊資源規劃解決策略,綜觀整體程式產出,檢查是否有錯誤、問題或可改 進的部分,提供解決問題的替代方案,並給予執行者回饋(Bishop-Clark et al., 2006;
Williams & Upchurch, 2001);在經過一段時間後,兩者的角色工作應對換(Williams, 2000)。
貳、配對程式設計的優勢
針對使用配對程式設計所帶來的優勢,過去研究者作出各種不同的分類。Flor 與Hutchins (1991)指出配對程式設計的優點:(1)有效的溝通、(2)能夠有更多的問 題解決方案、(3)對於舊解決方案擁有的共同記憶。由於配對的組員共同工作,因 此可以針對同樣的問題進行腦力激盪,加以組員擁有各自的經驗與知識技能,成 員可以彼此互相學習,強化對於程式設計概念的理解(McDowell, Werner, Bullock,
& Fernald, 2002; Williams & Upchurch, 2001),亦能藉此擴展為問題解決方案的資 料庫,並且有更多的時間可以互相討論,也更容易掌握問題溝通的進度。
參、配對程式設計與合作學習
程式設計課程概念具有高度複雜性,學習者往往會因此感到挫折。在Murphy 等人(2002)的研究指出,合作學習很適合使用在具有複雜性與變化性高的資訊學 科課程上,特別是在初階的程式設計課程中,使用合作的方式來學習是有效的教 學方法(DeClue, 2003; McDowell et al., 2002),因此如何有效運用合作的方式設計 教學活動,在程式設計教學上會是影響學習效果的重要因素。Preston (2005)提出
分配,配對組員也能共處並成功完成任務。
肆、配對程式設計應用於教學相關研究
實施配對程式設計對於程式設計教學上的影響,已有許多相關研究作出討 論。Bishop-Clark等人(2006)以配對程式設計方式使用Alice來探究對學習程式設計 之成效、樂趣與信心的影響,參與者為修習電腦科學概論的64位大學生,半數為 配對組、半數為個人組。研究結果發現配對組的學生比個人組的學生更感到樂 趣,個人組的學生的樂趣則有微幅降低,配對組的學生信心較單人組高。顯示配 對的成員可以提高學習者的學習滿意度,並且對促進正向的學習態度有所幫助。
VanDeGrift (2004)針對修習程式設計導論課程的550位非資訊主修大學生實 施配對程式設計的教學研究,課程分為150分鐘的教師講授與50分鐘由助教引導 的小組會議,沒有安排電腦實驗室的課程,學生頇完成程式專案與書面報告。研 究結果顯示配對程式設計可以應用在沒有正式上機實作時間的大型班級中,學習 者認為配對程式設計對他們的學習是有幫助的,配對的組員尌是強大的學習支持 資源。此外,書面報告可以用以確認兩位學習夥伴皆理解本組的專案成果,讓學 生解釋他們的解題方法,並幫助學習者理解最後得出的成果;亦可作為教師了解 學習者解題過程的管道,碰到哪些挑戰與使用哪些支持資源等。
綜合上述,配對程式設計的兩位組員如能盡職發揮角色所分配的職責,在學 習過程中不僅只能學到程式設計的概念知識,更能培養學習者團隊合作的精神,
在教學上能展現的效益指日可待,使用配對程式設計方式對於非資訊專業人士而 言,在程式設計學習之樂趣、信心、學習成效有正面的助益(McDowell, Werner, Bullock & Fernald, 2003),因此本研究欲以配對程式設計作為學習者的合作方式,
以期瞭解配對組與個人組之分組方式,對於程式設計初學者在程式設計學習成效 與學習態度上之影響。