|
結(jié)對(duì)編程(Pair-Programming)可能是近年來(lái)最為流行的編程方式。所謂結(jié)對(duì)編程,也就是兩個(gè)人寫(xiě)一個(gè)程序,其中,一個(gè)人叫Driver,另一個(gè)人叫Observer,Driver在編程代碼,而Observer在旁邊實(shí)時(shí)查看Driver的代碼,并幫助Driver編程。并且,Driver和Observer在一起時(shí)可以相互討論,有效地避免了閉門(mén)造車,并可以減少后期的code review時(shí)間,以及代碼的學(xué)習(xí)成本。
有實(shí)驗(yàn)證明,平均下來(lái),結(jié)對(duì)編程時(shí)間花銷比單人編程增加10%的時(shí)間,但也會(huì)比單人編程減少15%的代碼BUG。如果再算上后期代碼的維護(hù)和學(xué)習(xí)成本,結(jié)對(duì)編程比單人編程更有效率,還更為節(jié)省成本。無(wú)論是對(duì)開(kāi)發(fā)團(tuán)隊(duì)還是對(duì)于Business,結(jié)對(duì)編程都會(huì)是非常不錯(cuò)的Programming Practice。
下面是一些結(jié)對(duì)編程的優(yōu)點(diǎn):
- 程序員互相幫助,互相教對(duì)方,可以得到能力上的互補(bǔ)。
- 可以讓編程環(huán)境有效地貫徹Design。
- 增強(qiáng)代碼和產(chǎn)品質(zhì)量,并有效的減少BUG。
- 降低學(xué)習(xí)成本。一邊編程,一邊共享知識(shí)和經(jīng)驗(yàn),有效地在實(shí)踐中進(jìn)行學(xué)習(xí)。
- 在編程中,相互討論,可能更快更有效地解決問(wèn)題。
當(dāng)然,結(jié)隊(duì)編程也會(huì)有一些不好的地方:
- 對(duì)于有不同習(xí)慣的編程人員,可以在起工作會(huì)產(chǎn)生麻煩,甚至矛盾。
- 有時(shí)候,程序員們會(huì)對(duì)一個(gè)問(wèn)題各執(zhí)己見(jiàn)(代碼風(fēng)格可能會(huì)是引發(fā)技術(shù)人員口水戰(zhàn)的地方),爭(zhēng)吵不休,反而產(chǎn)生重大內(nèi)耗。
- 兩個(gè)人在一起工作可能會(huì)出現(xiàn)工作精力不能集中的情況。程序員可能會(huì)交談一些與工作無(wú)關(guān)的事情,反而分散注意力,導(dǎo)致效率比單人更為低下。
- 結(jié)對(duì)編程可能讓程序員們相互學(xué)習(xí)得更快。有些時(shí)候,學(xué)習(xí)對(duì)方的長(zhǎng)外,可能會(huì)和程序員們?cè)谄鹱躺涣細(xì)夥找粯涌臁1热纾匣飸?yīng)付工作,敷衍項(xiàng)目。
- 面對(duì)新手,有經(jīng)驗(yàn)的老手可能會(huì)覺(jué)得非常的煩躁。不合適的溝通會(huì)導(dǎo)到團(tuán)隊(duì)的不和諧。
- 新手在面對(duì)有經(jīng)驗(yàn)的老手時(shí)會(huì)顯得非常的緊張和不安,甚至出現(xiàn)害怕焦慮的的精神狀態(tài),從而總是出現(xiàn)低級(jí)錯(cuò)誤,而老手站在他們后面不停地指責(zé)他們導(dǎo)致他們更加緊張,出現(xiàn)惡性循環(huán)。最終導(dǎo)致項(xiàng)目進(jìn)展效率低下,并且團(tuán)隊(duì)貌合神離。
- 有經(jīng)驗(yàn)的人更喜歡單兵作戰(zhàn),找個(gè)人來(lái)站在他背后看著他可能會(huì)讓他感到非常的不爽,最終導(dǎo)致編程時(shí)受到情緒影響,反而出現(xiàn)反作用。
是否使用結(jié)對(duì)編程,需要具體問(wèn)題具體分析,不可盲目。任何事手都有他的好與壞,結(jié)對(duì)編程也不例外,只有知道了好與壞,你才能更好的利用它。
最后,需要我們記住的是,人是一種非常復(fù)雜的動(dòng)物,他們的缺點(diǎn)和內(nèi)心的陰暗面可能會(huì)比你想像得還要糟糕,而這些東西是可以讓一切事物失敗的。所以,正如《人件》所說(shuō),人才是軟件開(kāi)發(fā)中最核心,也是最需要花時(shí)間去關(guān)注的事情。
it知識(shí)庫(kù):結(jié)對(duì)編程的利與弊,轉(zhuǎn)載需保留來(lái)源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。