我先來說說知識管理這個(gè)背景:
我最近有機(jī)會跟ThoughtWorks中國區(qū)CTO一起搞(學(xué))事情(習(xí))桐愉,在做一個(gè)不一樣的培訓(xùn)項(xiàng)目。培訓(xùn)針對的主要也是開發(fā)人員的培訓(xùn)掰派,將自動化和知識管理來結(jié)合起來提升交付團(tuán)隊(duì)的工程效能从诲。
從需求到代碼,通過有效地知識管理在團(tuán)隊(duì)內(nèi)部高效傳遞和共享知識(業(yè)務(wù)需求和技術(shù)架構(gòu))靡羡,并結(jié)合自動化工程實(shí)踐來保證軟件的質(zhì)量系洛。
極限編程提倡的是通過有價(jià)值的工程實(shí)踐來讓一群普通的程序員在一起也能夠創(chuàng)造出有價(jià)值的軟件。所以掌握這些敏捷工程實(shí)踐不應(yīng)該只是一些高能人事要做的略步,而是每一個(gè)敏捷程序員要做到的描扯,比如自動化測試,團(tuán)隊(duì)開發(fā)人員應(yīng)該要熟練掌握的纳像。還有其他的實(shí)踐荆烈,比如TDD、重構(gòu)竟趾、簡單設(shè)計(jì)憔购、結(jié)對編程等。
再往上走岔帽,Senior開發(fā)人員應(yīng)當(dāng)需要發(fā)揮杠桿作用玫鸟,借助有效的知識管理手段,來牽引團(tuán)隊(duì)的Junior開發(fā)人員犀勒,使得他們能夠快速消費(fèi)知識屎飘,而作為一個(gè)團(tuán)隊(duì)的TL,掌握這些知識管理手段也是當(dāng)務(wù)之急贾费。
在這個(gè)上下文中钦购,知識管理,是指通過高效的方式來創(chuàng)造知識并讓這些知識能夠被消費(fèi)掉褂萧,從而產(chǎn)生實(shí)際價(jià)值押桃。
在交付團(tuán)隊(duì)中,Tasking是一種有效的知識管理手段导犹,團(tuán)隊(duì)的TL或者Senior掌握了較為全面的業(yè)務(wù)需求和技術(shù)架構(gòu)知識唱凯,通過Tasking將這些知識做出合理的分解羡忘,分解出由多個(gè)容易被估算且能落地的任務(wù)組成的任務(wù)列表,然后傳遞給Junior磕昼,通過有效地溝通反饋來達(dá)成一致理解卷雕。隨即Junior主要工作是在限定的時(shí)間內(nèi)將這些任務(wù)逐個(gè)搞定,并引入自動化測試等工程實(shí)踐達(dá)到質(zhì)量內(nèi)建票从。
CTO提出了一個(gè)針對Senior開發(fā)人員的Tasking二層劃分法漫雕。當(dāng)拿到業(yè)務(wù)需求,首先對業(yè)務(wù)需求做分解纫骑,分解出不同的需求場景蝎亚,然后結(jié)合系統(tǒng)的技術(shù)架構(gòu)和測試策略,分解出具體的技術(shù)任務(wù)先馆。通過兩次劃分发框,將一個(gè)業(yè)務(wù)需求拆分成一個(gè)個(gè)可以落地執(zhí)行技術(shù)任務(wù),Junior在完成這些技術(shù)任務(wù)的時(shí)候煤墙,必須保證自動化測試的落地梅惯,TDD也是一種不錯(cuò)的方式。
Tasking二層劃分法其實(shí)是結(jié)合了面向業(yè)務(wù)需求的Tasking和面向技術(shù)實(shí)現(xiàn)的Tasking仿野。這兩種Tasking視角我之前在一個(gè)問題中提到:如何區(qū)分Tasking的兩種視角?
Tasking是TDD很難落地的一個(gè)關(guān)鍵點(diǎn)铣减,Tasking門檻比寫測試本身要高得多,而且體現(xiàn)的是一個(gè)人分析性思維脚作,在ThoughtWorks葫哗,我們把這個(gè)能力歸到為Senior的基本勝任力。
如果在團(tuán)隊(duì)里將Tasking作為知識管理手段有效的解決了TDD中的最難的環(huán)節(jié)球涛,后面的Test-Driven Development還那么難嗎劣针?