軟件架構師不等同于資深程序員
英文原文:A software architect is not a senior developer
本文的作者 Armel Nene 是 ETAPIX Global 公司的首席架構師,他居住在倫敦,他參與過的開源項目包括 Apache Lucene,,Apache Nutch, Liferay 和 Pentaho 等
如今很多的公司的 IT 部門仍然認為招聘一個資深的程序員,他同樣也能承擔軟件架構師的角色。
資深程序員對整個軟件生命周期很了解,他們可以經過培訓成為架構師,但他們不等同于架構師。一個軟件架構師首要的和最重要的是他的遠見。如果一 個架構師擁有一些軟件開發經驗,那會更好,但大多時候,他們面對的是一個多語言的復雜環境。在第一行代碼開始編寫之前,架構師需要制定出業務需求如何轉變 成解決方案。這不僅僅需要業務環境的相關知識,從業務操作到客戶環境,他還需要向公司上級勾畫出一個令人信服的系統。如果有些問題不事先考慮,如擴展性, 訪問延遲問題,安全問題,系統開始開發時就會忽略這些。而資深程序員了解自己的團隊,了解他們的能力。資深程序員知道如何管理工作進度,確保開發中的軟件 如何實現架構設計的目標。
架構師能決定的是需求應該如何開發才能滿足業務需要,例如:
這個業務分布全球,業務在需求上需要網站響應延遲不超過 3 秒——不管用戶在什么地方,網站最少要能承受 10 萬以上的用戶訪問量。
上面的需求涉及的是系統的架構,而不是形如我們如何用 Oracle 數據庫來對用戶安全認證的問題。
有很重要的一點需要注意,很多的軟件架構師在之前都是資深程序員(比如我自己),盡管如此,很多的資深程序員對架構設計并不感興趣。決定一個系 統是該使用 Tomcat 還是 Glassfish,是否要用 Apache Webserver 做負載均衡,這屬于架構事務。做代碼審查,確保設計模式被正確的應用,這是資深程序員的事務。資深程序員可以決定開發方法,比如使用敏捷開發方法,但需要 項目經理的認可。架構師要參加項目各方一起的會議:用戶,經營方,基礎設施提供方,開發,測試人員。當用戶詢問為什么系統緩慢時,他們會找架構師,架構師 則會找資深開發負責人研究目前的開發是否達到了架構設計目標,或看看架構設計上是否有缺陷。
我是一名軟件架構師,我可以輕松的把我的見解表達給開發團隊,但同時我也是一名資深程序員,我仍然熱愛編程。我在一個軟件架構協會工作,經常會遇到一些沒有開發經驗的架構師,我不認同他們的這種出身。軟件架構師應該了解各種語言的特點,而不是只偏愛自己喜歡的那種。
我希望有更多的軟件公司能認識到在軟件項目中架構師的價值——不論項目有多大有多小。