成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

責任編輯:佚名 來源: 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

2023-06-19 15:38:38

JavaScripAPI

2021-07-30 20:23:52

物聯網災難管理IOT

2018-06-20 08:47:44

DevOps微服務UX設計師

2017-10-20 11:07:45

編程代碼編程模式

2011-11-24 16:34:39

Java

2019-10-24 07:42:28

Java引用GC

2017-07-06 15:40:19

DevOps核心能力

2011-03-16 09:05:53

NATiptables

2014-04-09 10:18:21

ASP.NETMVC

2010-06-17 09:48:54

UML動態建模

2009-10-13 15:31:38

網線配對

2021-10-24 08:37:18

網絡監控網絡架構網絡

2009-04-20 09:13:44

編程開發效率

2020-06-12 08:28:29

JavaScript開發技術

2020-11-10 10:08:41

Kubernetes容器開發

2018-12-05 16:25:14

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美a在线看 | 久草在线在线精品观看 | 99亚洲精品 | 中文字幕乱码亚洲精品一区 | 国产一区二区三区在线视频 | 97免费在线视频 | 精品久久香蕉国产线看观看亚洲 | 视频在线亚洲 | 亚洲高清在线免费观看 | 999久久久 | 日韩精品成人 | 在线视频一区二区三区 | 国产探花在线精品一区二区 | 日韩精品久久一区二区三区 | 日本视频在线播放 | 日韩人体视频 | 亚洲视频国产 | 成人欧美一区二区三区在线观看 | 伊人春色在线 | 中国美女撒尿txxxxx视频 | 亚洲精品在线视频 | 中文字幕一区二区视频 | 久久久精品影院 | 久久久久亚洲 | av香蕉| 91精品国产91久久久久久最新 | 成人免费网站在线 | 精品久久一区二区 | 日韩精品视频在线免费观看 | 欧美一区二区三 | 亚洲国产二区 | 激情婷婷成人 | 亚洲精品视频一区 | 99re视频这里只有精品 | 日韩精品亚洲专区在线观看 | 欧美成人一区二区三区 | 伊人二区 | www.久 | www.精品国产 | 精品一区二区在线观看 | 日韩亚洲视频在线 |