2. 架構師是一個純粹的技術工作
某方面講這是對的,但又不全對,因為技術工作只是架構師工作做的一個核心關注點而已。一個nb程序員可能在技術方面是nb的,但是在很多方面確實欠缺的,并不適合做架構師。
做企業應用的,牽涉的面太廣,加上行業生存環境又不是很好,企業管理普遍也不規范,所以很難象某些領域,架構師就是一個純粹的技術工作。
首先,如何獲取項目經理和管理層對你的信任和支持, 是你開始工作的起點, 這一塊和技術并沒有直接的關系,取決于你的表達能力和主動性,你如何展現你的實力,你做事是否足夠主動,是否有意識和能力去推動項目。不能讓老板感覺你就是一個greek,這一條是很多不錯的技術人員難以做到的。而實際工作中,你也絕不能把所有時間都花在技術上,你至少要拿出4分之一的時間去和pm,和老板溝通,協商問題, 才能得到你的生存空間。
其次,如何獲得團隊成員對你的信任和支持,是你展開工作的基礎,如果你不夠傳奇,就需要你做一個牧師或者善于聆聽的人, 通過熟悉自己的團隊成員的構成和技術特點,才能充分發揮他們的所長,贏得他們的信任和支持,看起來這好像是pm的工作,但是不盡然,如1所訴,架構設計并非是一個個體脫離團隊的行為。和團隊成員打交道,多半又要花掉你4分之一以上的時間。
好吧,你還要明白,為啥要叫架構師而不是高級工程師(這個已經out了), 是因為你還需要承擔售前售后任務, 如何簡單清晰的向不懂技術或者半懂技術的客戶講清楚技術問題,這是個學問,要做到這點,按我以前的老板說法,你必須有常識, 常識要多道可以用一些簡單的故事例子把東西講出來,所以有空要多看看電視,多和銷售學學,順便還得學點基本禮儀,上次我差點把某公司來給我們推銷產品的工程師給踢出去了,在我提了意見以后,丫居然堅持跟我說他們東西是最好用的,你敬業沒錯,但是好歹我才是用戶吧。
如果你的公司是做項目為主的,恭喜你,你還要學會如何和客戶周旋,如何回避到客戶內部以及客戶和其他供應商之間的矛盾里去。因為某方面,作為架構師,你就代表了技術上的權威,你要明白一點,管理上出了問題,從來都是往技術上推是最簡單的。項目之外的話,說起來一定要謹慎,再謹慎。比如如果有客戶不愿意購買設備和軟件實現負載均衡,找你咨詢,你隨口一說,啥啥免費軟件可以做,好吧,你完蛋了,你要么就是得罪了某供應商(搞不好還就是你們公司賣的),要么,就是等著將來客戶給你套口子吧。
而且,作為一個企業應用的架構師,你不可避免的要和各類廠商打交道,這里面也是大堆的學問,虛虛實實的東西大把,偶爾你甚至會受到美色或者銀彈的攻擊(記住,只是偶爾,人家一般不樂意在你這個級別上下血本)你要一不小心分不出真假,很可能就做了大堆錢公司的小白鼠,搞的在客戶和公司間里外不是人。
還有,架構設計往往還需要考慮到技術的生命周期問題, 那么你對客戶公司,對開發公司的狀況的了解,對整個行業的發展趨勢的了解,也會影響到你設計的決策,這種東西往往跟市場有關,并不取決于技術,這考核的就是你的視野和對問題的敏感程度。 打個比方,你開發了一個很好的系統,但是到了你離職的時候,客戶卻發現你選擇的這種技術已經淘汰了,現在很難再找到合適的人員進行維護了,這樣的架構師,算合格么?
說完了外面的東西,再說里面的。
一個成熟的企業應用的架構師,除了對行業技術應用有準確的把握和經驗積累之外至少還需要有豐富的業務知識。
一般來說,架構設計由幾個面構成,其中一個面是技術架構,還有一個面是業務架構, 技術架構必須通過后者的驗證。積累一個行業的業務知識,少則一年半載,多則3年5年,這都不是單純看書閱讀資料可以獲得的。客戶可不會只因為你的技術如何先進,nb 就驗收項目的。
再有, 再好的架構,也需要向程序員溝通和推廣, 那么你至少也要是個合格的技術講師吧? 兄弟們管你叫那個師,你總還得有能力教人家一點東西吧?
某些項目,技術甚至可能根本就不是關注點,我曾經參與的一個項目,在我加人的時候架構設計和開發工作都已經完成,而且是基本構建在相對錯誤的道路上,基于項目進度的壓力,我已經沒有可能重新推到再來,所以我把工作的重心轉移到如何培養提高團隊成員的技術能力,降低不成熟架構對他們工作的干擾,換句話說,我干的工作就是打補丁。這些看實不夠nb的工作大部分都和技術無關,和流程圖,模式無關,但是有效的彌補了架構的缺陷,保證了項目的順利進行。
既然不能選擇離開,那么菜刀也是刀,對吧。
最最后,你還要有點人脈,有在天涯海角到處混的兄弟,這樣你搞不定問題的時候,卡住的時候,或者他們一個小小的提示就可以救你于水火之中。不會不是你的錯, 解決不了問題才是你的錯。
在我看來架構師的工作,是一個混合了各種知識和經驗的工作,架構師更象酒店里的行政大廚,只會炒菜那是絕對不行的,很難單純的定義為技術工作。當然,動不動就把架構師抬舉為藝術家,開口閉口XX的藝術,哪還是過了,你以為畫畫的都是藝術家么? 我家狗仔還能用噓噓畫地圖來著。
指望多讀書,多寫代碼,一個人對著電腦就能迅速成長為架構師,嗯, 我覺得可能性不是很大。