【專家觀點】打造「DDD」河道,別讓業務單位再和IT玩比手畫腳

0
2275
圖片來源:KKday提供

業務單位和IT之間的溝通落差,往往導致的不會只是一次性的時間、資源、人力損失,還可能成為未來發展路上的大石頭。而DDD(Domain Driven Design,領域驅動設計)就是我們用來打通跨部門溝通障礙的重要河道。

你玩過「比手畫腳」的遊戲嗎?如果將同一道題目交給十個不同的人去演繹,會不會出現十種不一樣的比法?又這個遊戲如果在經過十個人的傳遞之後,最後一個人猜中答案的機率又會有多高?或許你沒意識到,但在企業裡,很多時候跨部門之間的溝通,就像是比手劃腳。

失敗的溝通,損失的不只是當下的資源

以產品開發為例,從業務單位提出需求,最後到了IT手上,經常只剩下決定好的規格。而在不同的專業知識背景,以及不了解產品開發核心、目標與商業邏輯的情況下,同樣的規格進入不同人的眼中,可能就會產生不同的解讀。

於是最後做出來的可能會是一個符合需求端規格,實際上卻不好用,甚至不能用的產品。也或許問題在當下不會立即顯現,卻在日後成了產品進化或是想增加新功能時的死結。

於是,這時業務單位會責怪IT的能力不足、執行力不佳;IT則是會指責需求端不夠專業,沒有把需求說清楚。如此一來,企業損失的其實不只有過去投入一段時間投入的資源,以及進入市場的時機點,更會在無形中打擊團隊士氣和信任。長此以往,人才耗損就會是可怕的副作用。

為了解決這個問題,我們在KKday創新研發中心系統架構師楊智州的介紹下,開始認識,並且嘗試導入DDD(Domain Driven Design,領域驅動設計)

DDD創造知識流動,建立多方理解

DDD當中的Domain,指的是商業領域,Design則是指軟體設計。而要如何讓商業領域驅動軟體設計,核心精神就是「溝通」。或者,我們可以把DDD想像成是一條乘載了各部門知識的河道,透過DDD,訊息就不再只是單向的一對一流動,而是可以讓商務端的知識流到IT人員身上;同時業務單位也會知道系統是怎麼被設計出來的,彼此都能夠多一分理解。

而且別以為技術端的IT人員就一定對商業不感興趣。實際上曾有不只一位工程師告訴我,他們不希望自己在公司存在的意義,只是為了讓大家工作方便,而是期望自己花費這麼多時間、精神做出來的產品,也能夠為公司創造出更大的商業價值。「我們是有使命感的。」那位工程師這麼說。

而在DDD這條河道疏通之後,當業務單位提出需求時,就不會再讓IT人員覺得自己的工作毫無意義,甚至可以主動提出達成目標更好的方法;另一方面,當IT基於開發時程等理由必須捨棄某項業務單位提出的功能時,業務單位也就不會再感到憤怒或不受尊重。

設定目標,然後討論、定義、聚合

至於要如何讓不同支流暢通無阻的匯聚到同一條河道,朝著同一個目標前進,方法就是讓所有利害關係人,共同經過不斷地討論、收斂,清楚定義出達成目標路上必須經歷的每一個事件,以及觸發每一次事件的方法和參與者,然後聚合成一個模組。(跨國團隊遠端工作好困難?10個技巧增進工作效率!

透過一個簡單的例子,就可以明白「定義」和「一致性」為什麼很重要。一般來說,我們在談話中混用「客人」和「會員」兩個名詞,其實無傷大雅,但在系統開發時,必須先將會員定義為註冊過的人,而有註冊又有實際消費的,才可以納為客人,如此當系統實際運作時,客人和會員才會被歸類到兩個不同模組,然後得出的結果,也才會是業務部門真正需要的。

DDD要成功,部門間的語言必須先磨合到高度的一致性,才會變成可互相理解的有效資訊。
圖片來源:Jopwell from Pexels

但需要被清楚定義的還不只如此。因為企業資源往往是有限的,所以在過程中還必須要同步確認三件事:什麼是公司最重要的核心領域,什麼是必要但非核心的領域,以及什麼是可以委外給第三方的領域。完成這項工作,會是創造多方理解時的重要基礎。

而在經歷過這樣的討論和收斂過程之後,即便行銷、業務人員不會寫程式、IT不會下廣告、拉生意,彼此的腦海卻可以出現同一套產品流程概覽。同時也因為大家都已經清楚流程中每一個階段的目標與意義,如此即便需要討論的會議很多,卻可以因為具備相同背景知識而讓每次會議更聚焦也更有效率。

KKday業務與技術團隊溝通整合的3個階段

DDD是解決高商業複雜度的利刃,但未必適用新創

不過DDD當然也有其限制。其實從以上的描述大概可以想像,導入DDD需要投入大量的人力和時間,進行非常深入的細節討論。這對於初起步,需要快速測試市場的小新創,或是商業邏輯較單純的公司,導入DDD有如殺雞用牛刀,不合成本效益也沒有必要。

但對於中、大型規模,且商業邏輯較複雜的公司來說,就有其價值,甚至可以說是切中痛點的一套重要解法。但即便是再好的解法,要想在一夕之間改變所有人的作業方式,也太過不切實際,若是想強力推行,反而還可能讓公司這艘大船擱淺在河道上。

其實不必求快,只要能夠先掌握DDD的核心精神「溝通」,已經是跨出邁向成功的一大步。而且一旦抓住了這個核心精神,DDD不只能用於軟體開發,更可以廣泛應用在商業領域上。(數據分析高不可攀?那就先讓種子軍團打破高牆吧

發表評論

請輸入您的評論!
請在這裡輸入您的名字