架構師最基本的素質,總結出兩點,1是技術知識廣度,2是業務行業深度。
1 架構師是技術領導。 架構師必須要有技術,而且還是領導。架構師要帶領自己團隊完成自己的任務,完全憑借自己的能力做事情,完全是匹夫之勇,根本不提倡。
2 架構師理解軟件流程。 架構師必須了解軟件流程,否則無法驅動整個團隊前進,如果一個架構師不熟悉開發流程,無法協調產品線相關人員進行高效工作,也無法指導團隊成員完成自己的工作。所以來說架構師一般不是空降兵(除非是全新的部門),因為空降兵一般不會熟悉新公司的開發流程,即使是同一個行業的,各個公司的差別還是很大。所以說聽說某某去某某公司做首席架構師或者首席科學家,一般是高風險的事情,即使他對這個行業很了解。
3 架構師必須熟悉業務領域。 如果一個架構師不熟悉自己的行業,做的架構就是紙上談兵,熟悉業務領域的架構師,才能很好的理解需求,做出合適的方案。互聯網和網絡安全是完全不同的兩個方向,即使你熟悉里面的各種具體技術,但是以互聯網的架構來做網絡安全產品,肯定是100%的失敗。
我做PKI的時候,項目最初的使用.net,使用微軟的crytoAPI,開發的很順利。后來來了一位新的架構師,覺得.net不能跨平臺,決定?用java,做出產品后,發現找不到arm cpu的jdk,使用平臺有限。再次決定使用openssl做,最后這個項目以失敗而告終。后來我想過arm cpu都是嵌入式設備用的,根本沒有任何嵌入式設備提供CA服務。
4 架構師必須要有廣度的知識。 架構師考慮的問題必須全面,必須了解的要廣,具體的細節可以不關注,因為細節變化很快。很多具體技術人員出身的架構師,只關注于具體的細節,某些方面做的很好,整體的性能很差。
下面這個項目的成功可以理解為一個笑話。某公司的兩個部門都做c程序的,A部門做的平臺使用的x86和mips,B部門使用平臺是x86和 arm,后來A部門的一個模塊要給B部門用,最后發現根本不能運行。最后A部門發現arm平臺使用big endian模式,這樣A部門的20多名員工,檢查代碼中所有非零整數,經過數個月苦戰,才修改完畢。其實解決方法很簡單,因B部門的代碼也是首先在 x86做的,做的時候他們考慮了cpu的endian模式。這并不能說B部門架構師很牛,從另一個方面說他的無知。因為板子有跳線,專門切換cpu的是 big endian還是little endian,這樣兩個部門都可以不修改程序。
5 架構師必須是寫程序的高手。
架構師一般都是?發人員出身,一般都是團隊的核心。優秀的架構師應該了解團隊使用各種技術,有了這些知識,才能和開發人軟進行有效溝通。
有一個項目架構使用xml做配置,因為病毒庫很龐大,最后導致xml 達30多兆,服務端的java程序使用dom 進行過濾的時候,30兆xml加載很慢,頻繁出現out of memory。這個項目后來擱淺。根據以前的經驗發現 msxml加載30多M的xml 不過幾秒,而且msxml的xpath速度很快,后來專門為此寫了JNI處理xml的。
6架構師是優秀的溝通人員。 架構師一定要會忽悠,至少要扯淡。架構師不但要指導本部門員工的工作,也要協調其他部門的資源,還要向用戶收集需求,制定規格說明書,重要的把用戶的不合理要求砍掉,合理需求遵循自己的思路