領(lǐng)域驅(qū)動(dòng)實(shí)戰(zhàn)思考(一):用TDD思想對(duì)DDD的協(xié)作設(shè)計(jì)過程進(jìn)行基準(zhǔn)化

版權(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)化:

對(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)的高低,和智商的天花板了闪湾。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末冲甘,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子途样,更是在濱河造成了極大的恐慌损合,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件娘纷,死亡現(xiàn)場離奇詭異,居然都是意外死亡跋炕,警方通過查閱死者的電腦和手機(jī)赖晶,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來辐烂,“玉大人遏插,你說我怎么就攤上這事【佬蓿” “怎么了胳嘲?”我有些...
    開封第一講書人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長扣草。 經(jīng)常有香客問我了牛,道長,這世上最難降的妖魔是什么辰妙? 我笑而不...
    開封第一講書人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任鹰祸,我火速辦了婚禮,結(jié)果婚禮上密浑,老公的妹妹穿的比我還像新娘蛙婴。我一直安慰自己,他們只是感情好尔破,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開白布街图。 她就那樣靜靜地躺著,像睡著了一般懒构。 火紅的嫁衣襯著肌膚如雪餐济。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,166評(píng)論 1 284
  • 那天痴脾,我揣著相機(jī)與錄音颤介,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛滚朵,可吹牛的內(nèi)容都是我干的冤灾。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼辕近,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼韵吨!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起移宅,我...
    開封第一講書人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤归粉,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后漏峰,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體糠悼,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年浅乔,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了倔喂。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡靖苇,死狀恐怖席噩,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情贤壁,我是刑警寧澤悼枢,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站脾拆,受9級(jí)特大地震影響馒索,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜名船,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一双揪、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧包帚,春花似錦渔期、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至谋梭,卻和暖如春信峻,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背瓮床。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來泰國打工盹舞, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留产镐,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓踢步,卻偏偏與公主長得像癣亚,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子获印,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容