偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

有效進行結對編程的四種實踐機制

開發(fā) 項目管理
最為極限編程和敏捷開發(fā)的重要實踐方法之一,結對編程為開發(fā)者和項目提供更好的技術實踐和質量保證,但如果做到有效的結對編程還需掌握一些具體的方法。

極限編程與敏捷開發(fā)一文中,我們曾介紹過幾種有效實踐的方法,其中之一就是結對編程。結對編程好像兩個程序員在一個工作臺上共同參與、合作。就好像一個開車一個做導航員,而且最好經常是互換角色。 這種合作對開發(fā)程序有很多好處。比如增加紀律性,寫出更好的代碼等。

近日,皇家信號學校的Stuart Wray為IEEE軟件雜志2010年的一月刊撰寫了一篇文章,題目是“結對編程如何才能真正起作用”。在文章中,它舉出可各種結對的方法(幫工-學徒/驅動者-導航者),并指出了工作的一般方式:

#T#作為使用結對編程的開發(fā)者,我自己的的經驗是這樣的,它并非只是一種一個人編碼,另一個人觀察的技術。兩個程序員會很緊密地在一起工作,總是在交談,快速記下對要做的事兒的提醒,并且在屏幕上指出代碼的片段。(結對編程的特征之一就是,如果你正確地使用了這種方法,那么在一天結束的時候,屏幕上會滿是油膩的手指印。)程序員輪番使用鍵盤,經常會用這樣的話來進行交換,“不,讓我向你展示一下我是什么意思。”

以他對有效的結對編程的描述為基礎(并且指出并非所有對結對編程的實現都是有效的),他提出了能夠使有效的結對編程變得成功的四種機制。

機制一:結對編程者的交談

Brian Kernighan和Rob Pike建議要大聲地解釋問題,即便是向毛絨玩具也要那樣,John正在研究的一種實踐叫做“橡膠植物效應(rubber-plant effect)”。結對編程的一部分效力是由于持續(xù)觸發(fā)這種效應而得到的:當一位程序員被卡住了,那么反復的交談會使其突破,這種方式與單獨工作的程序員大聲地說出自己的問題是類似的。

他還討論了交談帶來的更大的好處,其中應用了他所謂的“專家程序員理論”——隨著需要知識的問題被更有效地解決,結對的兩個人會彼此更了解對方。

那么這可能正是專家程序員理論起作用的地方:專家更可能會提出有深度的問題,那會對被卡住的程序員起到很大的提示作用??雌饋磉€可能僅僅是認為你正在與一位專家交談——或者假裝——那會幫助被卡住的程序員得出那種有深度的問題,可能在之前專家曾經問過他們。

將交談的價值累加起來,他指出:

這樣,第一種機制讓我們可以猜測,對程序談論更多的程序員會更有生產力,而不時地互相提出有深度的問題的人會是生產力最高的。

機制二:結對編程者會注意到更多細節(jié)

“你看不到自己的錯誤”,這是軟件開發(fā)中的(也是很多其它學科的)公理。
 
我們所能注意到的東西取決于我們期望看到什么,以及我們無意識地認為突出的東西。所以,盡管成功的結對編程者通常更多地會關注同樣的東西,但是他們也可能會注意到不同的東西。

因此,一起編程的兩個人不會擅長同樣的知識或者類別:一個人可能會更快地指出某個方面的問題,而另一個人對于其他方面更快一些。這樣他們的工作效率就取決于他們通過觀察來找到問題的速度。兩個人的頭腦肯定會比一個人的好。事實上,當人們開始進行結對編程的時候,最早做出的發(fā)現之一就是,不輸入代碼的人總是會更快地找出拼寫錯誤:“哦,在這里你漏掉了逗號。”

接下來,他提出了關于結對疲勞現象的警告:當兩個程序員進行結對,他們發(fā)現和無法發(fā)現的東西會變得越來越類似。最終,兩雙眼睛的優(yōu)勢會喪失殆盡。

結對疲勞使得我們經常對結對進行輪換:

有些結對編程者認為輪換是實踐中可選的部分,而且在小型團隊或者是沒有幾個程序員愿意結對的團隊中,可能沒有其它的選擇。但是,結對疲勞意味著最終他們的生產力會降低。

機制三:與不好的實踐作斗爭

由于來自同儕的壓力而不使用不好的實踐,有人已經明確地指出這是有效的結對編程的優(yōu)勢。

他討論了“編碼并修正”編程的例子,并將它與老虎機賭博成癮相關聯。

這是交互編程特定的屬性,使得我們很難做正確的事情。使用編碼并修正的方式,我們會隨意的修改程序,每次運行代碼的時候,就像將硬幣放在老虎機里面一樣。老虎機是我們所知道的最容易上癮的一種賭博形式。而來自于“編碼并修正”編程會帶來類似的不可預測的好處,這意味著它同樣讓人容易上癮。

而結對編程比較不容易受到不好的實踐的影響,因為程序員們會承諾以特定的方式編寫代碼,并確保兩個人都信守承諾。在人們容易犯錯的工作中,兩人結對工作的方式變得越來越流行,這會讓我們認真考慮,結對的壓力也可能是我們的一種解決方案。

機制四:分享并評價專家的意見

個人的生產力之間會有巨大的不同,至少可以將其分解成十個因素來度量。這通常意味著對難度和時間的估計是不準確的。對于好的和壞的程序員都是這樣——你只能通過與其緊密地工作來確定一個人的編程能力。

大多數程序員會解決他們自己的問題,因此沒有人知道他們有多棒(或者有多糟糕)。但在結對編程中,人們持續(xù)地一起工作。因為他們會不停地交換搭檔,團隊中的每個人都知道對于特定的領域誰是最專業(yè)的。出于這種比較,他們也會意識到自己的專業(yè)等級。這樣我們應該期望,比起單獨的編程團隊,通過結對編程可以對時間和難度進行更準確的估計。從我們的經驗看,這的確是那樣的。

責任編輯:佚名 來源: InfoQ
相關推薦

2012-09-11 09:55:26

編程HTML5編程能力

2015-08-19 13:40:58

編程編程更有效

2011-05-11 18:16:52

網站收錄量

2013-05-24 09:37:25

結對編程結對編程實踐BitBucket

2021-07-30 20:23:52

物聯網災難管理IOT

2023-06-19 15:38:38

JavaScripAPI

2017-10-20 11:07:45

編程代碼編程模式

2014-04-09 10:18:21

ASP.NETMVC

2018-06-20 08:47:44

DevOps微服務UX設計師

2019-10-24 07:42:28

Java引用GC

2017-07-06 15:40:19

DevOps核心能力

2011-03-16 09:05:53

NATiptables

2010-06-17 09:48:54

UML動態(tài)建模

2011-11-24 16:34:39

Java

2021-10-24 08:37:18

網絡監(jiān)控網絡架構網絡

2009-10-13 15:31:38

網線配對

2013-06-20 09:38:57

2009-04-20 09:13:44

編程開發(fā)效率

2020-05-19 20:13:04

物聯網計算類型IOT

2021-06-04 10:45:31

軟件架構分布式
點贊
收藏

51CTO技術棧公眾號