軟件架構(gòu)師不等同于資深程序員
外刊IT評論網(wǎng) 發(fā)表于:13年01月28日 13:40 [轉(zhuǎn)載] DOIT.com.cn
如今很多的公司的IT部門仍然認為招聘一個資深的程序員,他同樣也能承擔軟件架構(gòu)師的角色。
資深程序員對整個軟件生命周期很了解,他們可以經(jīng)過培訓成為架構(gòu)師,但他們不等同于架構(gòu)師。一個軟件架構(gòu)師首要的和最重要的是他的遠見。如果一個架構(gòu)師擁有一些軟件開發(fā)經(jīng)驗,那會更好,但大多時候,他們面對的是一個多語言的復雜環(huán)境。在第一行代碼開始編寫之前,架構(gòu)師需要制定出業(yè)務需求如何轉(zhuǎn)變成解決方案。這不僅僅需要業(yè)務環(huán)境的相關知識,從業(yè)務操作到客戶環(huán)境,他還需要向公司上級勾畫出一個令人信服的系統(tǒng)。如果有些問題不事先考慮,如擴展性,訪問延遲問題,安全問題,系統(tǒng)開始開發(fā)時就會忽略這些。而資深程序員了解自己的團隊,了解他們的能力。資深程序員知道如何管理工作進度,確保開發(fā)中的軟件如何實現(xiàn)架構(gòu)設計的目標。
架構(gòu)師能決定的是需求應該如何開發(fā)才能滿足業(yè)務需要,例如:
這個業(yè)務分布全球,業(yè)務在需求上需要網(wǎng)站響應延遲不超過3秒——不管用戶在什么地方,網(wǎng)站最少要能承受10萬以上的用戶訪問量。
上面的需求涉及的是系統(tǒng)的架構(gòu),而不是形如我們?nèi)绾斡肙racle數(shù)據(jù)庫來對用戶安全認證的問題。
有很重要的一點需要注意,很多的軟件架構(gòu)師在之前都是資深程序員(比如我自己),盡管如此,很多的資深程序員對架構(gòu)設計并不感興趣。決定一個系統(tǒng)是該使用Tomcat還是Glassfish,是否要用Apache Webserver做負載均衡,這屬于架構(gòu)事務。做代碼審查,確保設計模式被正確的應用,這是資深程序員的事務。資深程序員可以決定開發(fā)方法,比如使用敏捷開發(fā)方法,但需要項目經(jīng)理的認可。架構(gòu)師要參加項目各方一起的會議:用戶,經(jīng)營方,基礎設施提供方,開發(fā),測試人員。當用戶詢問為什么系統(tǒng)緩慢時,他們會找架構(gòu)師,架構(gòu)師則會找資深開發(fā)負責人研究目前的開發(fā)是否達到了架構(gòu)設計目標,或看看架構(gòu)設計上是否有缺陷。
我是一名軟件架構(gòu)師,我可以輕松的把我的見解表達給開發(fā)團隊,但同時我也是一名資深程序員,我仍然熱愛編程。我在一個軟件架構(gòu)協(xié)會工作,經(jīng)常會遇到一些沒有開發(fā)經(jīng)驗的架構(gòu)師,我不認同他們的這種出身。軟件架構(gòu)師應該了解各種語言的特點,而不是只偏愛自己喜歡的那種。
我希望有更多的軟件公司能認識到在軟件項目中架構(gòu)師的價值——不論項目有多大有多小。