到底架構要解決什麼問題?
許多軟體開發提到「架構」,也很多相關如「架構師」這樣的職務,究竟架構是要解決什麼問題?架構很常是由某個人或某些團隊負責設計程式寫作方式,透過 Code Review 或Linter 進行檢查,讓團隊與產品符合特定規範運作。
架構有什麼好處?
通常架構設計是建立於經驗值上的規劃,有效去繞過一些未來藏匿的風險,但不需要全部人去關注這些風險,透過規範去告訴所有人「請你這麼做」。好處很明顯是,繞過風險只需要規範,不需要對每一個人交代完整的情境。如果是團隊巨大或是成員能力和經驗不足情況,架構設計能帶來的價值更尤為明顯。
架構設計最常去處理的就是專案變大後帶來的維護心智負擔,常常找一個功能或模組會找的半死不活。雖然可以透過切分拆解去分類功能,提高維護性和閱讀性,卻也產生更多問題,這是就需要一套架構去解決。
架構設計根本想解決的是一些商業上更困難的東西,考量安全、效能、維護性、穩定性各個方方面面,如果每個細節都需要開發者照顧到肯定很容易漏掉或沒注意到。最糟糕是每個細節都需要新進開發者注意,那就很吃重開發人員的都基礎實力,但好的維護產品應該是能夠任用更多初階人才協助維護,不需要那麼多高階人才,更容易找人填補運作缺口。而且好的設計對於後續接手架構設計的人也有足夠的時間去熟悉和準備。
但不得不說架構設計最終面臨的就是高階人才的吃重,越是複雜技術越需要更強大的人才,如果在架構面的人員迭代會是一件頗困難的事。對公司來說,我的人員要壓箱在少數人手上勢必是一件非常可怕的事,這其實就是單純的管理難題了。
管理問題就不在這個文章贅述了。