踏上架構旅途 思考從未止步

在我心裏,程序員可以分爲三個層次:普通程序員、工程師和架構師。

普通程序員是編寫代碼的人。編寫代碼的方式有很多,只要能讓程序跑起來,能正確地處理業務流程和對數據進行計算,就可以說“會編寫代碼”。程序員需要熟悉整個程序的邏輯及處理過程,需要熟悉程序語言的特性,還需要熟悉一些計算機操作系統的交互調用方式,才能寫出從用戶側交互,到數據和業務邏輯處理,再到與計算機系統交互的代碼,有效地把用戶信息、數據、業務和計算機串聯和拼裝出來。

插畫來自《架構整潔之道》

然而,其中一些程序員發現,只讓代碼跑起來是不夠的,因爲這個世界是不斷變化的,他們發現自己需要花更多的時間來維護代碼:增加新的需求,擴展原有的流程,修改已有的功能,優化性能……一個人完全維護不過來,還需要更多的人,於是代碼還需要在不同人之間輪轉;他們發現代碼除了需要跑起來,還需要易讀、易擴展、易維護,甚至可以直接重用。於是,這些人使用各種各樣的手段和技術不斷提高代碼的易讀性、可擴展性、可維護性和重用性。我們把這些有“潔癖”、有工匠精精、有修養的程序員叫作工程師,工程師不僅僅是在編寫代碼,他們會用工程的方法來編寫代碼,以便讓編程開發更爲高效和快速。他們把編程當成一種設計,一種工業設計,把代碼模塊化,讓這些模塊可以更容易地交互拼裝和組織,讓代碼排列整齊——閱讀和維護這些代碼就像看閱兵式一樣舒心暢快。

但是故事還沒完,這些擁有工匠精神的工程師們還是難以解決某些問題,這些人漸漸地發現,這個世界上有很多問題就像翹翹板一樣,只能要一邊,這一邊上去了,另一邊就下來了。就像要麼用空間換時間,要麼用時間換空間一樣,你很難找到同時滿足空間和時間要求的“雙利解”;就像 CAP 的三選二的理論一樣,這個世界不存在完美的解決方案,無論什麼方案都有好的一面和不好的一面。而且,這些工程師還漸漸發現,每當引入一個新的技術來解決一個已有的問題時,這個新的技術就會帶來更多的問題,問題就像有一個生命體一樣,它們會不斷地繁殖和進化。漸漸地,他們發現,問題的多少和系統的複雜度呈正比,而且不僅是線性正比,還可能呈級數正比,此時就越來越難做技術決定。但是有一些資深的工程師開始站出來挑戰這些問題,有的基於業務分析給出平衡的方案,有的開始嘗試設計更高級的技術,有的開始設計更靈活的系統,有的則開始簡化和輕量化整個系統……這些高智商、經驗足、不怕難的工程師們引領着整個行業前行。他們就是架構師!

感覺 Bob 大叔的系列著作好像也在走這個過程,Clean Code 教你寫出易讀、可擴展、可維護、可重用的代碼,Clean Coder 教你怎樣變成一個有修養的程序員,而Clean Architecture(《架構整潔之道》)基本上是在描述軟件設計的一些核心理論與觀念。《架構整潔之道》大體分成三個部分:編程範式(結構化編程、面向對象編程和函數式編程),設計原則(主要是 SOLID),以及軟件架構(其中講了很多高屋建翎的內容)。總體來說,這本書中的內容可以讓你從微觀(代碼層面)和宏觀(架構層面)兩個層面對整個軟件設計有一個全面的瞭解。

插畫來自《架構整潔之道》

但是,如果你想從這本書裏找到一些可以立馬解決具體問題的工程架構和技術,恐怕你會感到失望。這本書中更多的是一些基礎的理論知識,看完後你可能會比較“無感”,因爲這些基礎知識對於生活在這個高速發展的喜歡快餐文化的社會中的人來說,可能很難理解其中的價值——大多數人的目標不是設計出一個優質的軟件或架構,而是快速地解決一個具體的問題,完成自己的工作。然而,可能只有你碰過足夠多的壁,掉過足夠多的坑,經歷過足夠多的痛苦後,再來讀這本書時,你纔會發現本書中的這些“陳舊的知識”是多麼充滿智慧。而且,如果有一天,你像我這個老傢伙一樣,看到今天很多很多公司和年輕的程序員還在不斷地掉坑和掙扎,你就會明白這些知識的重要性了。

我個人覺得,這本書可視作架構方面的啓蒙讀物,但經驗不足的讀者一時間不會產生最多的共鳴。有 3~5 年編程經驗、需要入門軟件設計和架構的工程師或程序員,則完全會有不同的感受。

插畫來自《架構整潔之道》

最後,我想留下一個觀點和一組問題。

觀點:無論是微觀世界的代碼,還是宏觀層面的架構,無論是三種編程範式還是微服務架構,它們都在解決一個問題——分離控制和邏輯。所謂控制就是對程序流轉的與業務邏輯無關的代碼或系統的控制(如多線程、異步、服務發現、部署、彈性伸縮等),所謂邏輯則是實實在在的業務邏輯,是解決用戶問題的邏輯。控制和邏輯構成了整體的軟件複雜度,有效地分離控制和邏輯會讓你的系統得到最大的簡化。

問題:如果你要成爲一名架構師,你需要明確地區分幾組詞語(如何區分它們正是留給你的問題),否則你不可能成爲一名合格的工程師或架構師。這幾組詞語是簡單 vs.簡陋、平衡 vs.妥協、迭代 vs.半成品。如果你不能很清楚地定義出其中的區別,那麼你將很難做出正確的決定,也就不可有成爲一名優秀的工程師或架構師。

我相信這個觀點和這組問題將有助於你更好地閱讀並理解這本書,也會讓你進行更多的思考,帶着思考讀這本書,會讓你學到更多!

————

本文爲大神陳皓爲《架構整潔之道》一書作的序,有觀點有情懷,有洞察有思辨,拋開品評初衷,自是一篇技術從業者讀來酣暢淋漓、大有裨益的絕好文章。不敢懷璧專美,提前分享出來,讓大家一睹爲快。此外,下方二維碼可直達另一篇餘晟老師的序文《久遠的教誨,古老的智慧》,同樣立論新穎、辨析深邃,讀之有味,回甘無窮。若心生慼慼,不妨叩開閱讀原文,追溯靈感之源!

內容簡介:《架構整潔之道》是創造“Clean神話”的Bob大叔在架構領域的登峯之作,圍繞“架構整潔”這一重要導向,系統地剖析其緣起、內涵及應用場景,涵蓋軟件研發完整過程及所有核心架構模式。本書分爲6部分,第1部分綱領性地提出軟件架構設計的終極目標,描述軟件架構設計的重點與模式;第2~4部分從軟件開發中三個基礎編程範式的定義和特徵出發,進一步描述函數、組件、服務設計與實現的定律,以及它們是如何有效構建軟件系統的整體架構的;第5部分從整潔架構的定義開始,詳細闡述軟件架構設計過程中涉及的方方面面,包括劃分內部組件邊界、應用常見設計模式、避開錯誤、降低成本、處理特殊情況等,並以實戰案例將內容有機整合起來;第6部分講述具體實現細節;附錄則透過作者數十年的軟件從業經歷再次印證本書的觀點。對於每一位軟件研發從業人員——無論從事的是具體編碼實現、架構設計,還是軟件研發管理,本書都是不可或缺的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章