軟體架構師不等同於資深程式設計師

aqee發表於2013-01-28

  本文的作者Armel Nene是ETAPIX Global公司的首席架構師,他居住在倫敦,他參與過的開源專案包括 Apache Lucene,,Apache Nutch, Liferay 和 Pentaho等

  如今很多的公司的IT部門仍然認為招聘一個資深的程式設計師,他同樣也能承擔軟體架構師的角色。

  資深程式設計師對整個軟體生命週期很瞭解,他們可以經過培訓成為架構師,但他們不等同於架構師。一個軟體架構師首要的和最重要的是他的遠見。如果一個架構師擁有一些軟體開發經驗,那會更好,但大多時候,他們面對的是一個多語言的複雜環境。在第一行程式碼開始編寫之前,架構師需要制定出業務需求如何轉變成解決方案。這不僅僅需要業務環境的相關知識,從業務操作到客戶環境,他還需要向公司上級勾畫出一個令人信服的系統。如果有些問題不事先考慮,如擴充套件性,訪問延遲問題,安全問題,系統開始開發時就會忽略這些。而資深程式設計師瞭解自己的團隊,瞭解他們的能力。資深程式設計師知道如何管理工作進度,確保開發中的軟體如何實現架構設計的目標。

  架構師能決定的是需求應該如何開發才能滿足業務需要,例如:

  這個業務分佈全球,業務在需求上需要網站響應延遲不超過3秒——不管使用者在什麼地方,網站最少要能承受10萬以上的使用者訪問量。

  上面的需求涉及的是系統的架構,而不是形如我們如何用Oracle資料庫來對使用者安全認證的問題。

  有很重要的一點需要注意,很多的軟體架構師在之前都是資深程式設計師(比如我自己),儘管如此,很多的資深程式設計師對架構設計並不感興趣。決定一個系統是該使用Tomcat還是Glassfish,是否要用Apache Webserver做負載均衡,這屬於架構事務。做程式碼審查,確保設計模式被正確的應用,這是資深程式設計師的事務。資深程式設計師可以決定開發方法,比如使用敏捷開發方法,但需要專案經理的認可。架構師要參加專案各方一起的會議:使用者,經營方,基礎設施提供方,開發,測試人員。當使用者詢問為什麼系統緩慢時,他們會找架構師,架構師則會找資深開發負責人研究目前的開發是否達到了架構設計目標,或看看架構設計上是否有缺陷。

  我是一名軟體架構師,我可以輕鬆的把我的見解表達給開發團隊,但同時我也是一名資深程式設計師,我仍然熱愛程式設計。我在一個軟體架構協會工作,經常會遇到一些沒有開發經驗的架構師,我不認同他們的這種出身。軟體架構師應該瞭解各種語言的特點,而不是隻偏愛自己喜歡的那種。

  我希望有更多的軟體公司能認識到在軟體專案中架構師的價值——不論專案有多大有多小。

  英文原文:A software architect is not a senior developer

相關文章