天馬行空浪漫魔幻的電腦書編輯。
閱讀&電影心得,心情雜記,小說創作,手作天然石飾品…。

黑心湖。the black lake 臉書專頁(Facebook Page)https://www.facebook.com/heixinhu
Ellen塔羅牌與仁倫動中禪:https://ellentarot.blogspot.tw/

2019年5月11日 星期六

2019年書單:《領域驅動設計:軟體核心複雜度的解決方法》

領域驅動設計:軟體核心複雜度的解決方法
Domain-Driven Design: Tackling Complexity in the Heart of Software
出版社:博碩文化
作者:Eric Evans
翻譯:趙俐、盛海艷、劉霞
審校:任發科
編譯:博碩文化
Goodreads的平均目前有4.14(算是很高分呢):
https://www.goodreads.com/book/show/179133.Domain_Driven_Design

本篇落落長的閱讀心得在博客來有「濃縮版/精簡版」~XD
https://www.books.com.tw/products/0010821330

Image via goodreads


(以下page # 除非特別說明,都是繁體書的頁碼)

入行後第一本接手編輯的翻譯書終於出版了!也算是放下心中一塊大石頭。趁對這本書仍記憶深刻、尚有滿腹牢騷滿腔熱血之際,來寫一篇讀後心得,推薦給對這本書有興趣的讀者吧!XDDD

本來是想開一個新的類別,像是「編輯感想」之類的,但仔細回想編輯這本書的過程,我不也是花了上百個小時「多次閱讀」簡體書、「反覆比對」英文書、甚至「再三校潤」繁體內文嗎?要比閱讀這本書的次數,我應該不會輸給任何一位在「領域驅動設計」耕耘多年的軟體開發人員,雖然我並沒有因此就學會寫程式或成為程式設計高手~XDDD

所以我還是決定將這篇文章歸類為「閱讀心得」、「推薦書單」。



***


編輯這本書的時候,我預設的心情和立場就是「假設」讀者手中已經有了原文書(或簡體書)。但因為原文書的英文有時非常艱深,讀者或許看不太懂英文的意思,也有可能簡體書的譯句偶爾讀來「拗口」,令讀者一知半解或感覺困惑…這時候,若有「繁體的版本」能夠整合兩者的優點,甚至「修正」和「潤飾」了簡體譯文的語句……

🌷要讓從事軟體設計開發的讀者能夠學習正確的知識和技術架構,也要讓像我這樣的門外漢能夠了解領域的概念和原著的理念… 
🌷若能同時在三個版本中比對和參考,繁體中文的修潤將會是最接近原文想表達的意思… 
🌷要讓本書成為適合繁體中文讀者深入理解並實作領域驅動設計的經典…

我就是抱持著以上的期許在編修這本書,只希望它不負「名家名著」的系列美名。

當然,眼尖的讀者或許會疑惑,為何這本書採用的是簡體譯稿呢?這就得稍稍抱怨八卦一下本書命途多舛的製作過程。這本書剛交接到我手上時,在仔細比對過台灣譯者的譯稿後,卻發現譯稿品質慘不忍睹,簡直到了看了會想哭的境界。但此時因為種種(一言難盡的)原因,重頭修改或重找翻譯都已經太遲了。同一時間,我自掏腰包買了簡體書來參考,企圖嘗試靠我自己paraphrase/rewrite/reword「搶救」譯稿,但終究工程太過浩大,在我幾乎是「重新翻譯和意譯」了近四個章節之後,終於決定廢止與該名譯者的合約,結束此一階段的糾葛(嘆)

但也是因為參考了簡體書嘗試自行重譯的這段歷程,讓我發現簡體譯文的品質其實很不錯。雖然有些句子過長需要修潤,有些「古風」或「文言」的形容讀來甚至有些怪異,也就是雖然直白貼切,但卻有點「俗氣」,哈哈!舉個比較無關緊要但又偏向個人喜好的例子吧,像是原文書CH14393頁的Phasing Out a Legacy System小節,開頭第一句英文是:『All good things must come to an end, even...』,簡體稿的翻譯非常詩詞(同事說應該是改編自歌詞),什麼『好花』、『美景』、『不常在』都用上了,我覺得有點過頭了。我喜歡白話、傾向直譯,所以這一句在繁體版第401頁的「逐步淘汰遺留系統」小節就被我修改為:『所有美好的事物都有結束的時候,……』

但整體來說,簡體譯稿非常忠於原著,誤譯並不多,就算有也是在所難免,試問哪個翻譯或編輯沒有失誤或眼花的時候?XDD 我在後續的編譯過程中也都盡量抓出來修正了。例如,Figure8.8這張圖右下方框裡的譯文,繁體版就有補上簡體版漏掉的一小句,雖然沒幾個字,而且不仔細看也不會察覺,但卻是很重要的「說明」。此處的疏漏我是直到二校時才發現,真是捏把冷汗。

總之,為了不讓本書的製程一再延宕,彷彿跌進黑洞的深淵,最後只好做出買簡體譯稿回來修潤和編譯的決定,而無法找到優良的台灣譯者來成就本書,也算是一個微小的遺憾吧。而早期我自己嘗試翻譯或意譯的部分,或多或少都「不著痕跡地」incorporate進了最終成品之中,在CH1、2還有10的各處,以及CH3和CH11的前幾頁,都還能發現一些(只有編輯我自己知道的)蛛絲馬跡,讀起來與簡體稿應該是大同小異,其中多數都是我對形容詞或句型喜好的「小小偏執」罷了。

這本書的繁體中文譯本能在我手中「孵化」,也算是它跟我的緣分吧!

***

所以,這本書到底是怎樣的一本書呢?(先喝口茶)

首先,雖然它是簡體骨,但我重新為它注入了繁體魂

所有專有名詞在初步機器簡轉繁之後,再加上我人工校對至少四遍以上,應該都已轉換為繁體/台灣的慣用字詞。而雖沒有大修特修、大改特改,但細部的描述和形容,整體的語氣和氛圍,應該也很趨近繁體/台灣讀者的閱讀習慣。再加上我時不時都有用括弧將原著的英文單字標示在中譯旁邊,幫助讀者中英對照

或許「這樣的作法」「選擇哪些字需要提供括弧英文」多少帶有個人偏見,但我的心情很單純,僅僅是希望藉此幫助讀者學習知識技巧的同時,也要能學習英文、甚至更進一步地去「咀嚼」英文書,來達到更融會貫通的「知識消化」(Knowledge Crunching)。

本書的副標題也道盡了一切:Tackling Complexity in the Heart of Software,即試圖在「複雜度/複雜性/複雜且紊亂的軟體領域之中,找出規律、規則和共通的語言」,既然躲避不了,就想辦法控制它,使之簡單整齊清晰靈活容易理解。「透過重構得到更深層的理解」,這是本書第13章的章名,也是整本書中不斷出現的主旨之一,有好一陣子我連吃飯如廁散步運動甚至是作夢都會一直想到「透過重構得到更深層的理解」(page 329,CH13)、「透過重構得到更適當的結構」(page 487,CH16)、「重構(refactoring)就是在不改變軟體功能的前提下重新設計它」(page 190,PART III)、「停一下:重構……」(page 176,CH7)……

(不行了,重構到眼神死)

還有一項特色也值得一提,也就是各種各式各樣的(大寫字母)模式,例如:BOUNDED CONTEXT(CH14)、REPOSITORY(CH6)…等等。讀者應該會注意到每個字第一個字母都比較大,也就是比其他字母來得「高人一等」,這是總編輯交代的專門字型樣式,也就是作者在Appendix A所說的「英文小體大寫格式」(page 515),只有提到「模式」時才會使用,方便讀者辨別。(這部分真是辛苦排版了!編輯我甚至校對到眼皮抽筋!…連續一個月右上眼皮都在跳啊!!)

本書的英文應該是我讀過最困難、卻也是最「驚豔」的一本書:句型複雜卻不失流暢、用詞冷僻卻精準切中要害Eric Evans的寫作方式就像是「領域驅動設計」本身的「復刻,只出版這麼一本書真是太可惜了!十多年過去了真的沒有考慮再寫個第二版或是其他跟領域驅動設計有關的題目嗎?(我可是因為這本書學到不少平時根本不會用到但卻非常有趣的英文句型、形容詞和動詞哩!)

至於跟技術有關的部分我這個門外漢就不獻醜了,讀者閱讀後,自然會明白這本書所描述的構思方法是如何讓人感覺「震撼」。在此也不逐章討論技術,讀者看目錄就能選擇自己想讀的內容或模式,而如作者在「前言」所說,『本書使用記敘體,讀者可以從頭到尾閱讀,也可以從任意一章的開頭開始閱讀。…但我推薦所有讀者從Part I的引言和第1章開始閱讀。除此之外,本書的核心是第2、3、9和14章…高階讀者可以跳過前兩個部分,重點閱讀Part III和Part IV。』(page xii)

***

但我要來記錄幾頁我特別喜歡的「小故事」,還有幾章我特別推薦的內容。這本書我尤其喜歡作者講述小故事作為隱喻引導的段落,用「類比的方式」帶領讀者逐步深入他要討論的技術核心,這樣的「教學方式」連我這種非技術人員看完之後都能略懂(裝懂),還能拿來「現學現賣」跟工程師老公「煞有其事地講解」,哈哈哈哈~XDDD

PART I P.4 :我很喜歡「鏡頭的核心作用(the heart of the scene)」這個雙關的形容(領域核心VS.鏡頭核心),因為很喜歡所以選了這頁當作網路書店試讀頁的其中一頁。

CH5 P.87-91:在這一小節,作者講了一個他被房東誣賴、誣告然後好不容易才洗刷冤屈的小故事(哭哭)。由這個誤會做引子,來講述「標識(identity)」的概念,連「我跟我五歲是同一個人嗎?」這種非常哲學的問題都出現了,我的老天鵝!

CH5 P.95-98:這裡還是在繼續講解「標識(identity)」的概念,至於「地址」到底算不算是VALUE OBJECT呢?還是ENTITY呢?還是要看情況而定?我看完還是霧煞煞啊~

CH6 P.128-133:這個「採購訂單」的範例大概是整本書裡面最淺顯易懂的了(我不會承認我是直到看到了這個範例才恍然大悟「固定規則」是怎麼一回事,它又有多麼重要!)

CH8全部:一則關於突破的故事,整章都很激勵人心,有勇氣和遠見的專案經理難尋啊!

CH9 P.219:連天文學家伽利略都來客串一下,作者上知天文下知地理!喔,CH3還有星盤照片和解說哩(page 45)!

CH10全部:「柔性設計」應該是本書最長的章節吧,程式碼的排版、內文理解等等也頗困難,算是我印象最深且花費最多心思的一章。話說本章連『兩個實數相乘,結果仍為實數』這樣的比喻都出現了(page 272),最討厭數學的我看到簡直傻眼,哈哈!

CH13全部:我自己是覺得這個章節的內容套用在職場上的「任何專案管理」都很有助益!(而且本章頁數最少,又沒有圖片需要校對~耶~)

CH14 P.385-389:大家小時候應該都有讀過「盲人摸象」這個有趣的寓言故事吧。用「大象模型的統一」來比喻模型整合,簡單易懂。

結束語 全部:講述了作者經歷過的五個真實專案的「現況」和「結局」。(這些專案也被改編成書中提及的各種範例,像是貸款軟體、航運/運輸系統以及庫存管理系統等等…)

Appendix A 全部:車子保養的心得、房子內各個房間的用途…用這兩個比喻來類比「領域」、「模式」、「模型」、「設計」等等,也算是神來一筆。

Domain-Driven Design的名人讚譽 全部:因為簡體稿沒有翻譯全部的Praise,只節錄了一部分放在封底。所以呢,只要是簡體書封底沒有出現的推薦語,都是我(粗略)的翻譯。我真的盡力了~(跪~




***

好,八卦講完了內文,最後,來講一下封面選圖。(再喝口茶)



左下角是原文書的小書封,但原文書出版社沒有授權封面的使用,於是封面就必須要自己想啦,可惜原文書的封面設計那麼經典啊!不過我們倒是有請美編使用了原文書封面的顏色來上色DDD三個字,也就是紫色藍色綠色

而由於「名家名著」系列的風格就是有隱喻的風景照片,所以一開始我可是傷透腦筋。本來想要用「橋」來代表「架構」(金門大橋、布魯克林大橋等等),但別本書已經用過了類似的概念了。

我也考慮過使用作者在書中用過的物件照片,像是CH6的「葡萄」、結束語的「橄欖林」等等,但圖庫裡的照片無論如何變換搜尋關鍵字,就是不順眼。

這時候讓我在滑臉書時,偶然在Discovery的臉書專頁上看到這張紐西蘭Wanaka Tree的美景(點此),最後拿著這張照片詢問了同事的意見,並提到了我想呈現「類似這張」平靜湖面/海面/水面上的「架構」以及「領域」的概念。在此真要感謝他的靈光一閃,他建議我可以試試看日本神社的「鳥居」。而我一搜尋「torii sea」,就對封面這張照片的意境一見鍾情,尤其是夕陽餘暉/旭日東昇的那種曖昧氛圍…後來,我才知道這就是大名鼎鼎的的Itsukushima Shrine…(註1

以前在UC Davis時選修日本文學和日本歷史的課程,教授們都有提過,穿越了鳥居,就是神靈的領域,這個概念也出現在許多文學書寫或影視作品之中。若說原文書封面的設計理念表現了「在混亂複雜之中找到秩序;建立抽象化的語言;實作這些抽象(化)」(註2),那麼繁體的封面設計就是帶領讀者在翻開書本的那一刻,亦同時踏進了「領域」(domain)的聖殿。

我很少會去留意或發自內心地讚嘆一本英文書的學術價值,多數的教科書或工具書不是枯燥乏味就是平舖直述,讀完之後,過了一段時間就會慢慢從記憶裡淡去。但這本書不一樣,這本書有許多有趣的地方,散落並埋伏在各個章節裡面,時不時跳出來讓人會心一笑,這也是我把這篇心得歸類為「閱讀心得」而非「編輯心得」的原因。花時間寫這篇「讀後感」,以一位喜愛閱讀的讀者身分,誠心推薦本書給所有對程式設計、軟體開發以及專案管理有興趣的讀者!


國鳳
2019年5月12日

註1
嚴島神社(Itsukushima Shrine)的簡介,請見這篇介紹:
人與神共生的島嶼:世界文化遺產 嚴島神社
https://pantravel.life/archives/6222

註2 
(粗略地)譯自DDDCommunity→About the cover→Why this cover
http://dddcommunity.org/uncategorized/about_the_cover/

勘誤:
442頁「模式:ABSTRACT CORE」的圖片,在看樣時沒有問題,豈料在拿到實體書後才發現太淡了,線條過細,幾乎看不清楚圖片(窘)。想看清楚圖片的讀者可參考出版社官網的勘誤資料下載:請至底下這個書籍介紹的網址,拉到網頁最下方,下載壓縮檔解壓縮之後,會看到一張一模一樣的頁面(.jpg),但圖片修正後,更清楚明顯了,希望對讀者有幫助:
http://www.drmaster.com.tw/bookinfo.asp?BookID=MP11702




沒有留言:

張貼留言

歡迎留言。廣告一律刪除。