天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

敏捷咨詢工具箱(三)──結(jié)對(duì)輔導(dǎo)

My mind to your mind. My thoughts to your thoughts...        -- Mr. Spock

  什么是結(jié)對(duì)輔導(dǎo)

  在前面的兩篇敏捷咨詢工具箱中,我分享了如何做讀書(shū)寫(xiě)代碼活動(dòng)OO訓(xùn)練營(yíng)。認(rèn)真的做好這兩項(xiàng)活動(dòng)之后,團(tuán)隊(duì)的開(kāi)發(fā)設(shè)計(jì)能力會(huì)提升一個(gè)臺(tái)階。對(duì)于有經(jīng)驗(yàn)和有能力的團(tuán)隊(duì),他們可以直接把這些技術(shù)和思想直接應(yīng)用到項(xiàng)目中。但有一些團(tuán)隊(duì)還需要進(jìn)一步的跟進(jìn)。那我們?nèi)绾芜M(jìn)一步的跟進(jìn),保證大家能把這些技術(shù)應(yīng)用到項(xiàng)目中呢?

  這對(duì)一個(gè)敏捷咨詢顧問(wèn)是一個(gè)很大的挑戰(zhàn)。在很多人眼里,顧問(wèn)就是那些能說(shuō)會(huì)道,把事情說(shuō)得天花亂墜,但都是只會(huì)紙上談兵,站著說(shuō)話不腰疼,為團(tuán)隊(duì)帶來(lái)麻煩,卻不解決實(shí)際問(wèn)題的人。我承認(rèn),顧問(wèn)的好名聲就是曾經(jīng)被這樣的人給敗壞了。那顧問(wèn)如何才能深入團(tuán)隊(duì),解決他們的真正問(wèn)題呢?答案是把顧問(wèn)放到一個(gè)具體的項(xiàng)目團(tuán)隊(duì)里面,為團(tuán)隊(duì)成員提供結(jié)對(duì)輔導(dǎo)。那什么是結(jié)對(duì)輔導(dǎo)呢?

  結(jié)對(duì)輔導(dǎo)來(lái)源于極限編程的一個(gè)開(kāi)發(fā)實(shí)踐──結(jié)對(duì)編程:

“結(jié)對(duì)編程,就是兩個(gè)開(kāi)發(fā)人員用一臺(tái)電腦一起編程。一個(gè)人操作鍵盤(pán)和鼠標(biāo),充當(dāng)駕駛員的角色。另一個(gè)人在旁邊觀察和思考,提出建設(shè)性的意見(jiàn),充當(dāng)著領(lǐng)航員的角色。同時(shí),兩個(gè)人會(huì)頻繁的進(jìn)行角色互換。”

  我們把這項(xiàng)實(shí)踐運(yùn)用到咨詢中,我會(huì)去一個(gè)項(xiàng)目團(tuán)隊(duì),和大家一起工作,用結(jié)對(duì)的方式對(duì)團(tuán)隊(duì)中不同角色的人進(jìn)行輔導(dǎo)。我會(huì)和開(kāi)發(fā)人員一起結(jié)對(duì),指導(dǎo)他們?nèi)绾巫鲩_(kāi)發(fā)和設(shè)計(jì);我會(huì)和業(yè)務(wù)分析師一起結(jié)對(duì),指導(dǎo)他們?nèi)绾巫鰧?xiě)用戶故事,如何做需求分析;我會(huì)和項(xiàng)目的經(jīng)理一起結(jié)對(duì),指導(dǎo)他們?nèi)绾喂芾眄?xiàng)目和團(tuán)隊(duì),如何系統(tǒng)思考,如何主持各種會(huì)議等等。下面分享我是如何對(duì)開(kāi)發(fā)人員進(jìn)行結(jié)對(duì)輔導(dǎo),指導(dǎo)他們?cè)谡鎸?shí)項(xiàng)目中進(jìn)行TDD開(kāi)發(fā)和設(shè)計(jì)。

  如何輔導(dǎo)一名主開(kāi)發(fā)人員做TDD開(kāi)發(fā)和設(shè)計(jì)

  我在一個(gè)客戶那里,結(jié)對(duì)輔導(dǎo)了一個(gè)主開(kāi)發(fā)人員。我們一起用了三周時(shí)間,完成了一個(gè)完整的用管理功能模塊,這個(gè)功能大致分為6個(gè)左右的用戶故事。我們是在C語(yǔ)言的開(kāi)發(fā)環(huán)境下,使用TDD的編程方式。下面將分享我是如何做的結(jié)對(duì)輔導(dǎo)。

  梳理需求

  在結(jié)對(duì)開(kāi)發(fā)開(kāi)始之前,我和她花了一天的時(shí)間,從下面幾個(gè)方面對(duì)需求進(jìn)行了梳理:

  • 以前是否有用戶管理功能,它的業(yè)務(wù)流程是什么樣的?
  • 為什么要做一個(gè)新的用戶管理功能?
  • 新的用戶管理流程會(huì)是什么樣的?
  • 每個(gè)需求的內(nèi)容是什么?它的功能范圍是什么?背后的價(jià)值是什么?
  • 有哪些驗(yàn)收用例,這些用例是否全面和具體?
  • 測(cè)試人員如何驗(yàn)收?這些需求是否可以端到端的進(jìn)行完整測(cè)試?

  通過(guò)這樣的提問(wèn)和交流,我們完整的把這些需求梳理了一遍。同時(shí)也把遇到的一些不合理用戶故事做了重新劃分。

  糾正錯(cuò)誤的編程習(xí)慣

  第二天,我們開(kāi)始結(jié)對(duì)編程。剛開(kāi)始結(jié)對(duì)的時(shí)候,發(fā)現(xiàn)她已經(jīng)從別的地方拷貝了一堆代碼,修改了一些,可以編譯通過(guò)。她想在這碓代碼的基礎(chǔ)上開(kāi)發(fā),這也是典型的復(fù)制&粘貼式的開(kāi)發(fā)方法。我們花了很長(zhǎng)時(shí)間討論了這個(gè)問(wèn)題。復(fù)制和粘貼是邪惡重復(fù)代碼產(chǎn)生的根源之一,這顯然是錯(cuò)誤的編程方法和習(xí)慣。可是她卻習(xí)以為常,并不覺(jué)得有什么錯(cuò),按照她的話說(shuō):有現(xiàn)成的代碼,拷貝過(guò)來(lái)修改一下有什么錯(cuò)。激烈的討論之后,最終以雙方的妥協(xié)和各自讓步達(dá)成了一致:

  • 這些代碼是有價(jià)值的,它只是用來(lái)做Spike,驗(yàn)證一些功能是否可以實(shí)現(xiàn)
  • 但是Spike之后這些代碼需要扔掉的,作為妥協(xié),她愿意把這些代碼全部注釋起來(lái)(舍不得這些破爛)
  • 用TDD的方式寫(xiě)代碼,先寫(xiě)測(cè)試后寫(xiě)代碼,沒(méi)有測(cè)試失敗就不要寫(xiě)代碼,重構(gòu)代碼除外

  真正的TDD開(kāi)發(fā)

  我要求她使用TDD開(kāi)發(fā)即測(cè)試驅(qū)動(dòng)開(kāi)發(fā)。先寫(xiě)一個(gè)測(cè)試,運(yùn)行測(cè)試失敗,然后再寫(xiě)業(yè)務(wù)代碼。可是,她上來(lái)就反對(duì):“費(fèi)那事干嗎,一次把所有的測(cè)試都寫(xiě)完了再寫(xiě)實(shí)現(xiàn)代碼,這樣豈不是更快?”。我先是無(wú)語(yǔ),然后便開(kāi)始說(shuō)服她,告訴她這叫小步前進(jìn),就是把復(fù)雜問(wèn)題分解開(kāi),從最簡(jiǎn)單問(wèn)題的開(kāi)始,一步一步的前進(jìn),這樣開(kāi)發(fā)才有節(jié)奏,每一小步都會(huì)有反饋(測(cè)試失敗,實(shí)現(xiàn)業(yè)務(wù)代碼,測(cè)試通過(guò)),整個(gè)開(kāi)發(fā)過(guò)程可控可駕馭。我苦口婆心說(shuō)了半天,她還是堅(jiān)持自己的意見(jiàn)。于是我問(wèn)她:“你為什么要一次寫(xiě)完所有的測(cè)試?”。她的回答讓我恍然過(guò)來(lái):“因?yàn)槲蚁氲搅撕芏鄿y(cè)試場(chǎng)景,如果沒(méi)有寫(xiě)下來(lái),我擔(dān)心自己后面會(huì)忘掉”

  啊哈!我終于搞明白了她的顧慮。這個(gè)好辦,我們拿了一張卡片,然后把想到的測(cè)試場(chǎng)景全部寫(xiě)到卡片上。實(shí)現(xiàn)完一個(gè)小功能,就在上面做個(gè)標(biāo)記。這樣在做TDD開(kāi)發(fā)的時(shí)候,就可以專注寫(xiě)一個(gè)測(cè)試,有了一個(gè)失敗測(cè)試之后,讓測(cè)試通過(guò)是壓倒一切的任務(wù)。這樣的開(kāi)發(fā)過(guò)程很專注,思維不容易發(fā)散,任何時(shí)候想到了其它相關(guān)的問(wèn)題,就及時(shí)的紀(jì)錄在卡片上,等后面再實(shí)現(xiàn)。

  在我的嚴(yán)格要求之下,她開(kāi)始了TDD方法,先寫(xiě)一個(gè)測(cè)試再寫(xiě)業(yè)務(wù)代碼。我的目標(biāo)是把她培養(yǎng)出來(lái),所以我們采取了是教練式的結(jié)對(duì)方法:我提出想法,她操作鍵盤(pán)和鼠標(biāo)寫(xiě)代碼(有時(shí)候我會(huì)為她寫(xiě)一些測(cè)試代碼)。結(jié)對(duì)也是一個(gè)引導(dǎo)的過(guò)程,有了一個(gè)新的測(cè)試之后,第一步是要讓測(cè)試通過(guò),這時(shí)不用去追求代碼的優(yōu)雅,只要測(cè)試通過(guò)就可以了,然后我會(huì)提出代碼中的壞味道,和她一起討論,問(wèn)是否有更好的方法?如何讓代碼更能表達(dá)業(yè)務(wù)意圖?如何在同一個(gè)層次上編程等等?引導(dǎo)她一步一步的進(jìn)行重構(gòu)。

  下面這張圖是一步步用TDD方式產(chǎn)生的用戶登錄功能的測(cè)試用例:

  就這樣,用了三周左右的時(shí)間,我們一起完成了這個(gè)功能模塊的開(kāi)發(fā)。三個(gè)星期的結(jié)對(duì)下來(lái),我也有了一些心得體會(huì)。

  心得體會(huì)

  • 在同一個(gè)經(jīng)驗(yàn)豐富的開(kāi)發(fā)人員進(jìn)行結(jié)對(duì)輔導(dǎo)的時(shí)候,前面會(huì)有一個(gè)挑戰(zhàn)的磨合期。因?yàn)樗麄円话愣挤e累了自己的一套成功的編程方式和習(xí)慣,這樣導(dǎo)致他們對(duì)新的TDD開(kāi)發(fā)和簡(jiǎn)單設(shè)計(jì)有抵觸的情緒。這樣就需要顧問(wèn)一步一步的引導(dǎo)說(shuō)教,讓他們切實(shí)體會(huì)到新開(kāi)發(fā)方法的好處。
  • 結(jié)對(duì)輔導(dǎo)需要兩個(gè)人緊密的協(xié)作,剛開(kāi)始肯定會(huì)有一些工作方法和習(xí)慣上的沖突。如果對(duì)方不認(rèn)可敏捷的開(kāi)發(fā)方法時(shí),不要一味的說(shuō)教,一定要先溝通和交流,詢問(wèn)為什么不愿意這樣做,了解清楚對(duì)方的顧慮和擔(dān)憂之后,對(duì)癥下藥,提供一些實(shí)踐解決對(duì)方的顧慮。
  • 有時(shí)候我們的建議遭到拒絕,往往并不因?yàn)槭墙ㄗh本身的問(wèn)題,而是因?yàn)槲覀冞€沒(méi)有建立好信任和領(lǐng)導(dǎo)力。

  關(guān)于作者

  錢(qián)安川,ThoughtWorks公司高級(jí)軟件咨詢師、敏捷過(guò)程教練、資深講師、Team Leader、開(kāi)發(fā)者、 BeiJing Open Party組織者和主持人。個(gè)人博客:敏捷開(kāi)發(fā)訓(xùn)練

it知識(shí)庫(kù)敏捷咨詢工具箱(三)──結(jié)對(duì)輔導(dǎo),轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: WWW亚洲精品久久久无码 | 一区二区中文字幕在线观看 | 97精品少妇偷拍蜜桃AV | 欧式午夜理伦三级在线观看 | 久久久久夜 | 十九岁在线观看免费完整版电影 | 国产色婷亚洲99精品AV在线 | 麻豆成人久久精品二区三区网站 | 国产成人免费不卡在线观看 | 亚洲精品第一页中文字幕 | 亚洲欧美在无码片一区二区 | 精品国产自在现线拍国语 | 伊在香蕉国产在线视频 | 恋夜直播午夜秀场最新 | 亚洲乱亚洲乱妇在线观看 | 袖珍人与大黑人性视频 | 中国女人内谢69XXXXXA片 | 欧美精品一区二区三区视频 | 在线观看qvod | 日本二区三区欧美亚洲国 | 曰本aaaaa毛片午夜网站 | 97人人添人人澡人人澡人人澡 | 91久久精品一区二区三区 | 粗大分开挺进内射 | 网址在线观看你懂我意思吧免费的 | 久久re这里视频精品15 | bbwvideos欧美老妇| 国产人妻麻豆蜜桃色69 | 理论片午午伦夜理片久久 | 国产精品久久久久久久久免费下载 | 欧美自拍亚洲综合图区 | 日韩精品在线看 | 亚洲中文字幕永久在线全国 | 99久久中文字幕伊人情人 | 久久香蕉电影 | 哇嘎在线精品视频在线观看 | 亚洲成人精品久久 | 校花的奶好大好浪 | 日韩精品亚洲专区在线影院 | 久久久久毛片免费观看 | 国语对白老女人8av 国语对白刺激真实精品 |