版權(quán)聲明:本作品采用【知識(shí)共享署名-非商業(yè)性使用-禁止演繹 4.0 國際許可協(xié)議】進(jìn)行許可欢际。
前言
在這一年聚焦DDD設(shè)計(jì),尤其是DDD的協(xié)作設(shè)計(jì)工作坊的咨詢工作中,我發(fā)現(xiàn)客戶同很多咨詢顧問之間總是存在以下沖突:
-
體驗(yàn)的“一致性”沖突
- 客戶:希望不同的顧問在售賣方法論的時(shí)候解釋能一致;
- 顧問:認(rèn)為每個(gè)人對(duì)方法論的認(rèn)識(shí)和理解本身就不同培漏,很難做到一致。
-
服務(wù)的“標(biāo)準(zhǔn)化”沖突
- 客戶:希望顧問能夠?qū)⑺圪u的方法論進(jìn)行標(biāo)準(zhǔn)化胡本;
- 顧問:認(rèn)為顧問所售賣的方法論本身非常靈活牌柄,需要 By Experience 依據(jù)不同的情況進(jìn)行適配,標(biāo)準(zhǔn)化是做不到侧甫,并且也是不應(yīng)該做的珊佣。
結(jié)合我曾經(jīng)在ThoughtWorks近4年的人員培養(yǎng)和教學(xué)經(jīng)驗(yàn),和這幾年來的咨詢經(jīng)驗(yàn)披粟,我能夠理解客戶這樣要求咒锻,是因?yàn)橄M軌驅(qū)崿F(xiàn)方法論的規(guī)模化落地僻爽。而在方法論規(guī)某娴铮化落地的過程中,一個(gè)很重要的問題胸梆,就是絕大多數(shù)能力一般的人敦捧,都更習(xí)慣于依據(jù)“明確的指令”進(jìn)行工作,而不是依賴自己“有限的經(jīng)驗(yàn)”和“莫能兩可的方法論”碰镜。
這篇文章就是記錄我是如何來解決這個(gè)問題的兢卵。
我的基準(zhǔn)化思維框架
對(duì)DDD這樣的方法論進(jìn)行“按部就班”式的基準(zhǔn)化梳理,從而形成“基準(zhǔn)化的操作”绪颖,以提供“明確的指令”秽荤,說起來簡單,做起來卻沒有想象中容易柠横。絕大多數(shù)的顧問雖然能夠?qū)Ψ椒ㄕ撨M(jìn)行階段性拆分窃款,但是卻沒有能夠?qū)⒎椒ㄕ撨M(jìn)行細(xì)粒度的拆分和驗(yàn)證。
從我的觀察來看牍氛,之所以造成這個(gè)問題晨继,主要原因來自幾個(gè)方面:
- 對(duì)方法論的深入研究不夠:在售賣方法論的時(shí)候,現(xiàn)學(xué)現(xiàn)賣搬俊。
- 缺乏反復(fù)的思考和打磨:缺乏機(jī)會(huì)進(jìn)行反復(fù)驗(yàn)證和優(yōu)化紊扬,或者注意力不夠聚焦。
還有一個(gè)很重要的原因唉擂,就是絕大多數(shù)技術(shù)顧問可能脫離寫代碼這件事情太久了餐屎,沒有意識(shí)到對(duì)方法論基準(zhǔn)化非常像我們開發(fā)軟件的過程:
- 首先,都是需要從客戶需要出發(fā)玩祟,明確交付目標(biāo)的價(jià)值和內(nèi)容腹缩。
- 然后,以Tasking思想和階段性驗(yàn)收條件為著眼點(diǎn),將目標(biāo)拆解為不同的階段藏鹊。
- 接下來胜臊,對(duì)每個(gè)階段進(jìn)行細(xì)化的實(shí)現(xiàn),保證每個(gè)階段的驗(yàn)收條件在實(shí)現(xiàn)過程中可以通過最簡單的方式達(dá)成伙判。
- 最后,產(chǎn)出第一版最小基準(zhǔn)化內(nèi)容黑忱,通過不斷的適配和打磨宴抚,進(jìn)行迭代式的改進(jìn),或者較大幅度的修改(類似需求變更)甫煞。
更重要的是菇曲,以上這個(gè)過程,是可以用“測試驅(qū)動(dòng)開發(fā)(Test Driven Development)”的思想來做的抚吠!
利用TDD的方式進(jìn)行DDD設(shè)計(jì)過程的基準(zhǔn)化
那么常潮,我是怎樣用TDD的思想,對(duì)DDD的設(shè)計(jì)過程進(jìn)行基準(zhǔn)化的呢楷力?在這一年喊式,通過大大小小十?dāng)?shù)個(gè)咨詢項(xiàng)目,我是這樣做的:
- 第一步萧朝,我通過在不同客戶項(xiàng)目的實(shí)踐中打磨和定義了每個(gè)階段清晰的輸出件岔留,產(chǎn)出了《DDD工作坊準(zhǔn)入條件和產(chǎn)出物圖例》。這一步就相當(dāng)于通過Tasking確定程序的輸入和輸出检柬,以及定義測試驅(qū)動(dòng)開發(fā)中的測試用例献联。
- 第二步,在確定了輸入輸出后何址,我繼續(xù)通過不同項(xiàng)目的不斷打磨里逆,基準(zhǔn)化了每一個(gè)階段的操作步驟,并把每一步細(xì)化到概念介紹用爪、操作步驟原押、過程圖例、要點(diǎn)提示四個(gè)部分项钮,產(chǎn)出了《DDD工作坊操作手冊(cè)》班眯。這一步就相當(dāng)于通過測試驅(qū)動(dòng)的方式,進(jìn)行了程序“處理”過程的實(shí)現(xiàn)烁巫,并且還通過小步迭代的方式署隘,對(duì)操作過程進(jìn)行了一遍又一遍的迭代。
- 第三步亚隙,在整個(gè)操作手冊(cè)完成之后洪规,基于操作手冊(cè),重新梳理抽象出了適配這個(gè)操作手冊(cè)的最簡單和通常的概念舆蝴,并從整個(gè)宏觀上優(yōu)化和定義了新的DDD分段式設(shè)計(jì)(戰(zhàn)略設(shè)計(jì)階段、戰(zhàn)術(shù)設(shè)計(jì)階段羞延、技術(shù)實(shí)現(xiàn)階段),解決了之前所有我所參與過的DDD培訓(xùn)所看到的知識(shí)體系凌亂脾还,不統(tǒng)一伴箩,不順暢等問題,讓概念講解部分最小化鄙漏,產(chǎn)出了《DDD工作坊概念講解》課件嗤谚。這一步就相當(dāng)于程序設(shè)計(jì)和開發(fā)過程中,通過高度抽象怔蚌,進(jìn)行分層架構(gòu)并實(shí)現(xiàn)架構(gòu)演進(jìn)的過程巩步。
- 第四步,通過項(xiàng)目開發(fā)實(shí)踐和進(jìn)一步總結(jié)桦踊,結(jié)合多種以領(lǐng)域?yàn)楹诵牡姆謱蛹軜?gòu)思想椅野,不斷打磨形成了適配整個(gè)基準(zhǔn)化DDD的基準(zhǔn)化代碼樣例(https://github.com/howiehu/ddd-architecture-samples)。實(shí)現(xiàn)了代碼化落地籍胯。
- 第五步竟闪,繼續(xù)通過不斷的實(shí)踐、打磨和總結(jié)芒炼,產(chǎn)出《DDD成熟度評(píng)估標(biāo)準(zhǔn)》瘫怜。
這樣,就通過實(shí)戰(zhàn)驗(yàn)證的方式本刽,從確定交付物開始鲸湃,一步一步的增量式的完成了DDD設(shè)計(jì)過程的基準(zhǔn)化,這也很像我們做軟件設(shè)計(jì)時(shí)通過TDD而達(dá)到的“簡單設(shè)計(jì)(增量式設(shè)計(jì))”思想子寓。
結(jié)果
DDD的思想和設(shè)計(jì)過程暗挑,是公開并且沒有什么保留意義的,所以斜友,我在這里也選擇分享給大家炸裆,以便為DDD在中國的落地和完善貢獻(xiàn)一份力量。
同時(shí)鲜屏,我也正在建立一系列的DDD基準(zhǔn)化公開材料烹看、社區(qū)和培訓(xùn),我未來會(huì)將這些內(nèi)容逐步發(fā)布到Github的“領(lǐng)域驅(qū)動(dòng)”組織之中洛史,地址如下:
而文章中所說的基準(zhǔn)化的領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)產(chǎn)出物如下惯殊,未來我會(huì)繼續(xù)進(jìn)行不斷的打磨和優(yōu)化:
- 《DDD工作坊準(zhǔn)入條件和產(chǎn)出物圖例》(提取碼: 9jza)
- 《DDD工作坊操作手冊(cè)》(提取碼: uu1d)
- 《DDD工作坊概念講解》(提取碼: b4ft)
- 《DDD基準(zhǔn)化代碼結(jié)構(gòu)樣例》
- 《DDD成熟度評(píng)估標(biāo)準(zhǔn)》(還在完善中,請(qǐng)期待)
對(duì)于這些基準(zhǔn)化的產(chǎn)出也殖,我已經(jīng)通過帶領(lǐng)7個(gè)新咨詢師進(jìn)行了可復(fù)用性的驗(yàn)證土思,這些新咨詢師只需要通過我講解或示范一遍,就能夠獨(dú)立承擔(dān)后續(xù)的DDD設(shè)計(jì)咨詢工作,并且還能夠?qū)崿F(xiàn)概念和手法的一致性己儒。
至于“By Experience”崎岂,則只剩操作者個(gè)人經(jīng)驗(yàn)的高低,和智商的天花板了闪湾。