如何成為軟件架構師 ---《軟件架構基礎》書摘

最近剛到的一本書Fundamentals of Software Architecture,中譯《軟件架構基礎》(東南大學出版社)。在豆瓣上被稱為和DDIA(Designing Data-Intensive Applications)等同級別的書籍,作為修煉內功的經典書目。

初讀之下,邏輯流暢、論述充分,非常好讀。被追捧為經典的技術書籍一般會對每個概念都介紹的很清楚,即便碰到陌生的概念總有一張恰到好處的圖,并配有詳細解釋文字出現。只要能耐下心子讀,一定能讀懂(有內味兒了)。

關于作者

作者是Mark Richard和Neal Ford,資料不是很多。Mark Ricards據介紹在應用開發(fā)、集成、企業(yè)級架構有35年的經歷,Neal Ford是IT咨詢師在Thoughtworks教軟件架構的的課程。

Mark Richards有開辦專門引導程序開發(fā)人員向架構師轉變的網站。里面有很多書籍和課程的可以作為軟件架構師的材料參考。

developertoarchitect.com 網站首頁

軟件架構(Software Architecture)

作為一個本科和研究生均為軟件工程專業(yè)的畢業(yè)生,初學軟件架構非常吃力,光是里面的概念、術語就很難理解。什么是SOA?《Software Architecture in Practice 》里為什么要介紹性能、可擴展性、可測試性等各類屬性?

除了概念、術語外,最為重要的還是思維的轉換,學生時代的思維總是努力去尋找一個標準答案,比如什么軟件就是什么架構,如果出現架構上的變化就會很困惑,甚至是非常抵觸的情緒。非常贊同作者關于軟件架構的第一定律:

There are not right or wrong answers in architecture - only trade-offs.

做工程的往往沒有理想當中完美的環(huán)境,很多時候都是各類因素的權衡,軟件架構師是一個需要根據實際情況得出決策的角色。

回想起來可能在學生階段初學軟件架構需要具備:

1、良好的計算機知識,網絡、操作系統(tǒng)、數據庫等等,比如不理解數據庫中事務的概念就很難將其推廣到分布式系統(tǒng)事務中,從而很難理解分布式系統(tǒng)實現中引入的一些設計。

2、學習軟件工程,了解軟件工程過程和各個方面,軟件架構往往會在軟件過程中不斷演進(evlove)。

3、掌握軟件設計的基礎,比如面向對象編程OOP、UML圖、設計模式,這些都是和其他人員溝通架構設計的工具。

4、大量的軟件實現分析,當然這種理解實現分析不是深入到模塊的具體實現,而是了解軟件包含哪些部分,相互之間是通過什么方式交互的。學生階段和初級開發(fā)者更聚焦的是具體業(yè)務功能、算法的實現,往往忽視了模塊、組件、系統(tǒng)層次的實現。

進入工作階段,結合實踐再回到知識體系才對軟件架構有一定的理解。目前切身感受到軟件架構相關的工作需要經驗的積累、接觸過不同類型的產品、項目和系統(tǒng),基礎的理論知識往往是不夠的。正如書中所述:

Practice is the proven way to build skills and become better at anything in life... including architecture.

當然書里面的第三部分會介紹更多,這里就不再贅述了。

書的概要

粗略翻了下主要介紹了3塊內容,上腦圖:


《軟件架構基礎》目錄結構

目前只閱讀了幾節(jié)內容,后續(xù)會深入到前兩塊的細節(jié)中?,F摘一些關于如何成為軟件架構師的建議(Techniques and Soft Skills),以饗讀者。

如何成為軟件架構師?

書的第三部分是對想要從事軟件架構師方向職業(yè)發(fā)展的一些建議。成為軟件架構師需要在整個職業(yè)生涯持續(xù)學習,軟件架構師廣度比相應的深度更為重要。

Technology breadth is more important to architects than depth.

1、20分鐘規(guī)則

利用每天20分鐘的時間去學習、了解層出不窮的新的技術和業(yè)界潮流,瀏覽相關網站、視頻、膠片等等。

建議最好作為早上的第一件事開始做,并持這一習慣。因為中午會影響休息,而晚上需要陪伴家人(??老外確實不努力,我們996的堅決反對!)。

軟件架構師需要在這個過程中不斷收集業(yè)界資訊、積累各類素材、深入研究某一方面的內容。

The point of this technique is to be able to carve out some time for developing a career as an architect and continuously gaining technical breath.

2、技能雷達

軟件架構師需要向金融行業(yè)管理投資組合一樣管理自身的技能組合。

Architects should treat their technolgy portfolio like a financial portfolio: in many ways, they are the same thing.

技能雷達源自Thoughworks,是從圓中心向四周發(fā)散的圖形可視化工具。由內而外,依次是

- 使用(Adopt)已經掌握可以用來解決具體的問題。

- 嘗試(Trial)可以現在就嘗試的、可以繼續(xù)深化研究的技術。

- 評估(Assess)相當有前景的領域,后續(xù)可以嘗試研究。

- 暫緩(Hold)暫時不需要投入精力研究的,優(yōu)先級最低。


技術雷達圓形四分之一示意

具體雷達可以參考ThoughtWorks的技術雷達網頁。

圖形分為四個象限。每個象限具體代表軟件架構師需要掌握的一種能力:

- 工具(Tools)軟件開發(fā)正在使用的各類工具,比如IDE、比如部署工具、BUG管理工具、比如DevOps的各類套件。

- 語言和框架(Languages and frameworks)軟件開發(fā)使用的語言、相關的工具庫、框架等等。

- 技巧(Techniques)如何讓工程更為高效的工程實踐,如流程、具體活動、建議等。

- 平臺(Platforms)比如數據庫平臺、各類云平臺、操作系統(tǒng)平臺、硬件平臺。

軟件架構師需要構建自己的技術雷達、不斷地更新,擴展自己的技術體系。

3、利用社交媒體

軟件架構師通過社交媒體擴大自身信息的收集范圍,緊跟行業(yè)發(fā)展的潮流。

寫在最后

正如本書的名字含了fundamentals,的確是一本教授軟件架構基礎的書,本書為想成為軟件架構師的讀者提供了很好的知識體系框架和建議。但是,成為軟件架構師需要持續(xù)在架構方面的投入和實踐。這本書是否經典,也同樣需要通過時間和實踐的證明。最后引用書末給想成為軟件架構師的人一句話:

always learn, always practice,and go some architecture!

PS:書從淘寶東南大學出版社買的,包裝裹了3層。書的質量很不錯(我的DDIA不小心封皮都翻掉了),打開之后印刷質量相當好。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容