鐘文峰 劉曉璐
摘 要:針對(duì)高職軟件技術(shù)專(zhuān)業(yè)學(xué)生普遍缺乏團(tuán)隊(duì)協(xié)作精神這一問(wèn)題,提出了在《C語(yǔ)言程序設(shè)計(jì)》課程的實(shí)踐教學(xué)中融入結(jié)對(duì)編程技術(shù)。經(jīng)過(guò)與獨(dú)自編程的對(duì)比實(shí)驗(yàn),發(fā)現(xiàn)實(shí)施了結(jié)對(duì)編程的班級(jí)學(xué)生的整體編程能力提高的較明顯,也表現(xiàn)出更強(qiáng)的團(tuán)隊(duì)協(xié)作精神。
關(guān)鍵詞:C語(yǔ)言程序設(shè)計(jì);實(shí)踐教學(xué);結(jié)對(duì)編程;團(tuán)隊(duì)協(xié)作
中圖分類(lèi)號(hào):G712 ?文獻(xiàn)標(biāo)識(shí)碼:A
在高職院校,程序設(shè)計(jì)語(yǔ)言像C語(yǔ)言、Java語(yǔ)言等都是軟件技術(shù)專(zhuān)業(yè)學(xué)生進(jìn)行程序設(shè)計(jì)的入門(mén)語(yǔ)言,一般首選C語(yǔ)言作為入門(mén)語(yǔ)言,在第二學(xué)期再學(xué)習(xí)Java語(yǔ)言。《C語(yǔ)言程序設(shè)計(jì)》課程傳統(tǒng)的教學(xué)方法往往只注重學(xué)生個(gè)體能力,忽視了學(xué)生口頭表達(dá)、溝通協(xié)調(diào)等團(tuán)隊(duì)協(xié)作能力的培養(yǎng),而團(tuán)隊(duì)協(xié)作能力是從事軟件開(kāi)發(fā)工作的基本素質(zhì)。如今,社會(huì)分工越來(lái)越細(xì)化、技術(shù)及管理越來(lái)越復(fù)雜,團(tuán)隊(duì)協(xié)作能力往往比個(gè)人能力顯得更為重要,尤其在IT行業(yè)。因此本課題以《C語(yǔ)言程序設(shè)計(jì)》這一門(mén)課程為藍(lán)本進(jìn)行結(jié)對(duì)編程的實(shí)踐教學(xué)探索研究。
1 結(jié)對(duì)編程模式介紹
結(jié)對(duì)編程是一種敏捷軟件開(kāi)發(fā)方法,已經(jīng)在一些IT公司中被采用。其基本含義是兩個(gè)程序員組合成一對(duì)共同來(lái)完成程序文檔和代碼的編寫(xiě)。兩個(gè)程序員共同在一臺(tái)電腦上工作,完成算法設(shè)計(jì)、代碼編寫(xiě)和軟件測(cè)試等。當(dāng)其中一人進(jìn)行代碼輸入的時(shí)候,另一人則在旁邊隨時(shí)審查他輸入的每一行代碼并提出改進(jìn)意見(jiàn),他們的關(guān)系好比賽車(chē)手和領(lǐng)航員的關(guān)系。只動(dòng)口不動(dòng)手的人主導(dǎo)整個(gè)的設(shè)計(jì)思想,由操作鍵盤(pán)的人來(lái)實(shí)現(xiàn)。由于人的思維速度比輸入代碼的速度快得多,所以在旁邊審查的人可以有空閑的時(shí)間做額外的思考,觀(guān)察代碼編寫(xiě)和程序內(nèi)部結(jié)構(gòu)有沒(méi)有問(wèn)題。結(jié)對(duì)的兩個(gè)程序員經(jīng)?;Q角色,這樣可以取長(zhǎng)補(bǔ)短,以便更準(zhǔn)確更健壯地完成代碼的編寫(xiě)。結(jié)對(duì)編程要求兩個(gè)程序員相互協(xié)調(diào),相互配合,這對(duì)提高程序員的程序設(shè)計(jì)能力和提升溝通協(xié)調(diào)等團(tuán)隊(duì)協(xié)作能力都都具有積極的作用。
2 結(jié)對(duì)編程在程序設(shè)計(jì)課程實(shí)踐教學(xué)中的實(shí)現(xiàn)
2.1 學(xué)生結(jié)對(duì)的分配方案
進(jìn)行結(jié)對(duì)編程實(shí)踐教學(xué)之前要對(duì)學(xué)生進(jìn)行分組,每?jī)扇私M成一對(duì)?,F(xiàn)在的學(xué)生獨(dú)立意識(shí)比較強(qiáng),經(jīng)常只會(huì)跟自己身旁熟悉的同學(xué)交流,如果給他分配一個(gè)不熟悉的同學(xué)很可能就不愿意交流。還有,學(xué)習(xí)能力差的兩個(gè)學(xué)生結(jié)對(duì),往往會(huì)出現(xiàn)由于兩人都不會(huì)而不知怎樣開(kāi)展工作的局面。IT企業(yè)界普通建議結(jié)對(duì)的雙方不要從頭到尾一直固定,而是要隨著項(xiàng)目的推進(jìn)做些調(diào)整。所以為了能夠更有效地給學(xué)生結(jié)對(duì),采用前期的自由結(jié)對(duì)和后期的能力結(jié)對(duì)方案。前期由學(xué)生自己尋找結(jié)對(duì)伙伴,主要是讓學(xué)生盡快熟悉結(jié)對(duì)編程角色的搭配和工作的開(kāi)展過(guò)程。后期學(xué)習(xí)的內(nèi)容難度上升了,改用“優(yōu)帶中、優(yōu)帶弱,中帶弱”的能力結(jié)對(duì),力爭(zhēng)使每一個(gè)學(xué)生都能學(xué)到知識(shí),達(dá)到整體提升的目標(biāo)。把實(shí)踐教學(xué)的內(nèi)容歸結(jié)為一個(gè)一個(gè)的問(wèn)題模塊,在每個(gè)問(wèn)題模塊中對(duì)學(xué)生進(jìn)行結(jié)對(duì)編程,在不同的問(wèn)題模塊內(nèi)學(xué)生的結(jié)對(duì)可以改變,但要遵循上述分配的原則?;趩?wèn)題模塊的結(jié)對(duì)編程如圖1所示。
2.2 結(jié)對(duì)編程的實(shí)踐教學(xué)設(shè)計(jì)
從作者所帶的軟件技術(shù)專(zhuān)業(yè)中選取了一個(gè)班進(jìn)行了結(jié)對(duì)編程的實(shí)踐教學(xué)實(shí)驗(yàn),另外一個(gè)班采用常規(guī)的獨(dú)自編程。這兩個(gè)班的實(shí)踐教學(xué)內(nèi)容是相同的,均以問(wèn)題模塊的方式布置實(shí)踐內(nèi)容,只是編程模式不同。結(jié)對(duì)學(xué)生內(nèi)部協(xié)調(diào)好角色的分配,起初自定誰(shuí)來(lái)操作鍵盤(pán)輸入代碼誰(shuí)來(lái)審查對(duì)方輸入的代碼。
第一次結(jié)對(duì)編程時(shí)教師找了一個(gè)學(xué)生進(jìn)行結(jié)對(duì),給學(xué)生們演示結(jié)對(duì)編程的過(guò)程,讓學(xué)生對(duì)結(jié)對(duì)編程有個(gè)初步的認(rèn)識(shí)。在每次實(shí)踐課中,特別要求同學(xué)們做到以下幾點(diǎn):結(jié)對(duì)伙伴之間要有禮貌,相互尊重;要和搭檔不斷地交流溝通,交流頻率不要低于兩分鐘一次;要不斷地變換結(jié)對(duì)伙伴間的角色,比如每10分鐘或完成了一個(gè)小功能變換一次,讓結(jié)對(duì)雙方共同進(jìn)步;鼓勵(lì)各對(duì)之間課后互相交流,吸取其他對(duì)好的經(jīng)驗(yàn);每次實(shí)踐課結(jié)對(duì)結(jié)束的時(shí)候,要及時(shí)給搭檔一些建議或意見(jiàn),虛心接受反饋;不要做一個(gè)專(zhuān)橫的領(lǐng)航員;不要搶奪賽車(chē)手的鼠標(biāo)或鍵盤(pán)。學(xué)生結(jié)對(duì)編程的時(shí)候教師要不斷地巡視學(xué)生,及時(shí)發(fā)現(xiàn)異常情況并解決。比如,對(duì)于能力相差大的結(jié)對(duì),老師要注意及時(shí)參與進(jìn)去,多鼓勵(lì)較弱的學(xué)生;結(jié)對(duì)雙方意見(jiàn)不一致發(fā)生爭(zhēng)執(zhí)時(shí)老師要及時(shí)調(diào)和;與結(jié)對(duì)成員共同討論優(yōu)化程序的算法等。
2.3 結(jié)對(duì)編程實(shí)踐教學(xué)效果分析
本文選擇了軟件技術(shù)2班在《C語(yǔ)言程序設(shè)計(jì)》課程的實(shí)踐教學(xué)中進(jìn)行結(jié)對(duì)編程的教學(xué)探索實(shí)驗(yàn),作為對(duì)照班級(jí)的軟件技術(shù)1班進(jìn)行傳統(tǒng)的獨(dú)自編程。兩個(gè)班的人數(shù)一樣多,教學(xué)總課時(shí)都是90,理論與實(shí)踐比例均為1∶1。通過(guò)對(duì)實(shí)驗(yàn)班和對(duì)照班的對(duì)比,發(fā)現(xiàn)相同的實(shí)踐題目,實(shí)驗(yàn)班學(xué)生完成的情況整體上要比對(duì)照班好,無(wú)論是學(xué)生學(xué)習(xí)編程的積極性方面、還是編寫(xiě)的程序健壯性方面都是呈現(xiàn)較好的勢(shì)頭。對(duì)照分析兩個(gè)班的教學(xué)效果,總結(jié)如下:
一是在學(xué)生的溝通和團(tuán)隊(duì)協(xié)作能力培養(yǎng)方面。獨(dú)自編程講究的是單打獨(dú)斗,一個(gè)人在那埋頭苦干,算法設(shè)計(jì)、代碼編寫(xiě)、程序調(diào)試等都是自己一人做決定,毫無(wú)溝通和合作理念。結(jié)對(duì)編程講究的是并肩作戰(zhàn),程序算法的設(shè)計(jì)、代碼的編寫(xiě)、程序的調(diào)試和評(píng)審都是在兩個(gè)人經(jīng)過(guò)不斷的溝通交流下進(jìn)行的,兩人達(dá)成一致意見(jiàn)才能付諸實(shí)施,是一個(gè)高頻交流和協(xié)作的團(tuán)隊(duì)活,學(xué)生頻繁的溝通地得到了鍛煉,團(tuán)隊(duì)協(xié)作能力也得到了很大的提高。
二是在學(xué)生抗挫折和學(xué)習(xí)積極性方面。獨(dú)自編程的學(xué)生由于是獨(dú)干,編程過(guò)程中遇到了問(wèn)題如果經(jīng)過(guò)自己的努力還是解決不了,要么就放棄在那偷偷地玩手機(jī),要么坐在那等待老師來(lái)指導(dǎo)。由于班上學(xué)生人數(shù)較多,平均等待老師的指導(dǎo)要十分鐘左右,等待過(guò)程很容易讓學(xué)生產(chǎn)生失敗感,這樣的次數(shù)多了逐漸地就會(huì)對(duì)編程失去興趣。結(jié)對(duì)編程的學(xué)生由于是合作,當(dāng)其中一人遇到問(wèn)題時(shí)他可以與結(jié)對(duì)伙伴交流,取長(zhǎng)補(bǔ)短,積極地去解決問(wèn)題,待到程序調(diào)試結(jié)果正確的那一刻他們的成就感倍增,從而增強(qiáng)了學(xué)習(xí)的興趣,學(xué)習(xí)積極性自然會(huì)提高。
三是在學(xué)生學(xué)習(xí)效率和老師負(fù)擔(dān)方面。根據(jù)多年的教學(xué)觀(guān)察,發(fā)現(xiàn)學(xué)生們?cè)诰幊踢^(guò)程中遇到的bug多數(shù)是一些語(yǔ)法錯(cuò)誤。獨(dú)自編程的學(xué)生面對(duì)這些常見(jiàn)的bug,他們?cè)诤艽蟪潭壬系却蠋焷?lái)幫助解決,等待的時(shí)間少則一到兩分鐘,多則十幾分鐘都有可能。一個(gè)教師很難及時(shí)一一指導(dǎo)一個(gè)大班級(jí)中的每一位學(xué)生,學(xué)生的學(xué)習(xí)效率低,老師的負(fù)擔(dān)也重。編程過(guò)程中學(xué)生遇到一些常見(jiàn)的bug,結(jié)對(duì)伙伴間可以通過(guò)相互交流就可以解決的,學(xué)生既鍛煉了溝通表達(dá)能力又沒(méi)有浪費(fèi)時(shí)時(shí),學(xué)習(xí)效率自然會(huì)高。老師的精力就不是幫助學(xué)生排除一些常見(jiàn)的bug,而是主要用于指導(dǎo)學(xué)生如何改進(jìn)算法、如何將所學(xué)知識(shí)做更深入的應(yīng)用等問(wèn)題上,減輕了老師的負(fù)擔(dān)。
四是在學(xué)生編寫(xiě)的代碼錯(cuò)誤率方面。獨(dú)自編程從算法設(shè)計(jì)、代碼編寫(xiě)到調(diào)試整個(gè)過(guò)程都是一人在做決定,由于編程人員知識(shí)不牢、考慮問(wèn)題不周全等因素,往往編寫(xiě)出來(lái)的程序bug會(huì)比較多。結(jié)對(duì)編程的兩個(gè)人在一起寫(xiě)代碼的時(shí)候考慮問(wèn)題會(huì)更加全面,能夠融合兩人的程序設(shè)計(jì)思路,更容易設(shè)計(jì)出結(jié)構(gòu)更優(yōu)的算法和編寫(xiě)出執(zhí)行效率更高的程序代碼。同時(shí)也會(huì)更早地發(fā)現(xiàn)程序中的bug,減少錯(cuò)誤出現(xiàn)的次數(shù),提高程序的質(zhì)量。結(jié)對(duì)編程可以把程序代碼的錯(cuò)誤率降低15%~50%之多。
為了能夠更清楚地分析結(jié)對(duì)編程的實(shí)踐教學(xué)效果,在此收集了兩個(gè)班對(duì)應(yīng)的6個(gè)問(wèn)題的編程正確率,并繪制成圖表如圖2所示。從圖2可以看出,采用結(jié)對(duì)編程的實(shí)驗(yàn)班的編程正確率明顯高于獨(dú)自編程的對(duì)照班,而且實(shí)驗(yàn)班的編程正確率保持相對(duì)較穩(wěn)定。
3 結(jié)語(yǔ)
在《C語(yǔ)言程序設(shè)計(jì)》課程的實(shí)踐教學(xué)中引入了結(jié)對(duì)編程。通過(guò)對(duì)照實(shí)驗(yàn),發(fā)現(xiàn)學(xué)生編寫(xiě)程序的能力更高、編寫(xiě)的程序更健壯、學(xué)生的學(xué)習(xí)積極性更強(qiáng)、學(xué)生的溝通和團(tuán)隊(duì)協(xié)作精神表現(xiàn)的更突出。在此,結(jié)對(duì)編程時(shí)要注意以下幾點(diǎn):溝通是結(jié)對(duì)編程成功的關(guān)鍵,你和你的伙伴應(yīng)該保持溝通;不要侮辱你的搭檔,要尊重對(duì)方;不要做一個(gè)專(zhuān)橫的領(lǐng)航員;一定要經(jīng)常切換角色;結(jié)對(duì)編程也是團(tuán)隊(duì)合作。
參考文獻(xiàn):
[1]李支成,向華,吳開(kāi)誠(chéng).結(jié)對(duì)編程在計(jì)算機(jī)語(yǔ)言課程混合教學(xué)改革中的應(yīng)用[J].電腦知識(shí)與技術(shù),2019(8).
[2]徐勝舟,杜小坤.結(jié)對(duì)編程在Java Web開(kāi)發(fā)課程實(shí)踐教學(xué)中的應(yīng)用[J].現(xiàn)代計(jì)算機(jī),2015(05).
[3]黃家瑋,鐘萍,季桂樹(shù).計(jì)算機(jī)程序設(shè)計(jì)課程配對(duì)學(xué)習(xí)模式教學(xué)研究[J].計(jì)算機(jī)教育,2014(12).
[4]魏妮妮,宋翌.結(jié)對(duì)編程在程序設(shè)計(jì)基礎(chǔ)課程實(shí)驗(yàn)教學(xué)中的研究與實(shí)踐[J].實(shí)驗(yàn)技術(shù)與管理,2013(12).
基金項(xiàng)目:院級(jí)課題“創(chuàng)新結(jié)對(duì)編程在高職《C語(yǔ)言程序設(shè)計(jì)》課程實(shí)踐教學(xué)實(shí)現(xiàn)”(編號(hào):JXXD-2019-14)的研究成果
作者簡(jiǎn)介:鐘文峰(1978—),男,漢族,江西分宜人,碩士,副教授,主要研究方向:高職教育、嵌入式與物聯(lián)網(wǎng)系統(tǒng)的設(shè)計(jì);劉曉璐(1983—),女,漢族,江西安福人,碩士,講師,主要研究方向:高職教育、軟件技術(shù)。