關於架構師的成長之路,還存在著一個誤區,就是把架構師預設為軟體架構師。因為今天我們所遇到的架構師,大多數都是圍繞著軟體研發。事實上這個認識有一定的片面性。誠然,現今我們所構建的系統都是軟體系統,但是在實際的工作過程中,隨著信息技術在深度和廣度上的快速發展,除了軟體研發以外,測試、網路、安全、配置、系... ...
2016年11月18-20日SDCC 2016中國軟體開發者大會,易寶支付CTO陳斌給我們帶來了“架構師的成長之路”的演講。主要談及了架構師的必備素質和成長途徑及給準架構師的建議。
它山之石可以攻玉,儘管每個架構師都有自己的成長路徑,但是瞭解其他架構師的成長之路,對未來想成為架構師的人有一定的借鑒價值。首先以我自己的成長過程為例,描述一下我的架構師之路。
圖1 我的架構師之路
1989年研究生畢業後進入政府機構工作了三年,隨後加入新加坡國際航空公司,從事IBM主機系統的彙編語言研發。順應互聯網技術的發展,航空公司開始把訂票業務從傳統的主機終端轉向現代化的彩色PC客戶端。為此需要在IBM主機系統和UNIX/Oracle資料庫之間來回傳輸數據,所以我就開始研究Unix/Oracle,取得了Sun、HP和Oracle的認證,並由此進入了互聯網技術領域。2000年以前,很多系統都是採用兩位數字來標識年份,比如02代表1902,一個客戶的出生年份是1902,系統會把他的年齡當成是兩歲,這就是所謂的世紀之蟲。很多醫院、鐵路、銀行、政府機構都面臨著這個問題,採用新的基於Unix/Oracle和互聯網技術的新系統成為一個有效的解決方案。美國在這個方面有大量的需求,因此我就去了美國,專門做主機系統和Unix/Oracle以及互聯網上的信息交互,這讓我有機會接觸大量不同的架構和系統,從而積累了豐富的經驗,為後期的架構師之路奠定了堅實的基礎。
日本工程師的特點是專、深、細,但是缺乏把所有的要素整合到一起解決一個問題的系統集成能力,所以我就成為負責系統集成的總體架構師,大量的系統集成業務為我提供了豐富的鍛煉機會,把業務需求轉換成技術解決方案,併進一步設計成各種系統,這些工作為我積累了豐富的架構經驗。2004年,加入Abacus任首席架構師,開始協調其他的架構師一起做航空訂票方面的互聯網技術架構工作。2008年開始在eBay和PayPal任移動應用的高級架構師,從互聯網時代進入移動互聯時代。
縱觀自己的架構師成長之路,我認為必須要踏踏實實地做好當下的事情,保持好奇心,不斷地學習新技術、積累新經驗和掌握新技能。緊跟時代的發展和技術的進步,不斷地擴大自己的業務和技術領域,那麼成長成為架構師就是水到渠成的事情。
建築設計與軟體架構
圖2 古瑪雅金字塔建築設計之美
要瞭解架構師的成長之路,就要先清楚什麼是架構。架構一詞不是軟體行業的專有名詞,而是從古老的建築行業借來的。在墨西哥有個很出名的古代瑪雅金字塔,叫ChiChen Itza。塔的四個面分別代表春夏秋冬四個季節,每個面上有91級臺階,代表每個季節91天,4X91=364,再加上塔頂共365,代表一年有三百六十五天。在每年的冬至和夏至,塔身因為陽光照射會出現神奇的蛇影,準確地預測季節變化。古瑪雅人的架構設計形神兼具,甚為奇妙,充分體現了架構之美。我們今天的軟體系統架構設計與之相比,相形見絀。
圖3 建築師如何做架構設計
在日常工作中,架構師在設計系統的時候會畫一張圖,HP的伺服器,思科的路由器,Palo Alto的防火牆,Tomcat的應用容器,mySQL的資料庫等,把各種產品拼湊在一起叫架構設計。這是很棒的產品宣傳。如果這是一部電影,可以售賣植入式廣告。每個解決方案的供應商都肯定會對這個架構設計表示由衷的感激。 對建築物,最好的建築師從來不用供應商的名稱來描述桁架、梁和支撐,而是用這些部件的大小、負載能力和組成等。這是因為建築師會基於價格、信譽和質量選擇不同供應商的解決方案。建築師心裡很清楚,用供應商的名字描述的是實施,而通過規範和要求來描述,這才是架構設計。
實施代表著你已經作出了選擇性的決策,這些決策包括成本的考慮、自建與外購、投資回報率、團隊的技能等等。用C++、Java或PHP作為編程語言並不代表你的架構;相反,這些只是為實施架構的組成部分而選擇的工具和材料。選擇微軟資料庫,還是Sybase、MySQL或者Oracle資料庫,這並不是架構,而是實施架構中的資料庫組件。選擇使用開源系統還是由供應商提供的解決方案是另一個實施決策的例子,這與使用微軟的操作系統還是Linux的某個版本同樣是實施決策。
假設現在某個業務需要一個解決方案,架構師負責把業務解決方案轉換成技術解決方案,如果把所有產品羅列起來或許可以解決問題,但是也肯定不會有什麼創新的機會。相反,如果從事情的本源或本質出發,往往有機會創造新工具或新方法,這就是非技術設計的概念。例如,當我們要解決近實時的動態交易量統計的時候,可以利用傳統的資料庫來做累加。也可以寫一套類似Storm的工具,既輕鬆優雅地解決了問題,同時也帶來了創新。做為一個合格的架構師,就要有能力從事情的本源出發去獨立思考問題並做出各種分析和設計,最後拿出一個非常合適的解決方案。
架構師的必備素質
圖4 架構師的八個素質
做為一個合格的架構師必須具備八個重要的素質,包括業務理解、技術廣度、技術深度、豐富經驗、美學素養、動手能力和溝通能力。架構師的業務素質就是指要懂業務,對業務有足夠的敏感度,能夠清楚地知道自己的設計能給公司帶來多大的業務影響。對技術素質最基本的要求是深度和廣度。美學素質是要求架構師有美感和藝術感,所以易寶經常安排技術人員聽音樂會,看藝術表演,因為藝術和設計是相通的。動手能力是指在適當的時候架構師能夠上手實際操作,需要寫代碼的時候動手寫代碼,尤其是底層的關鍵代碼。溝通能力也極為關鍵,因為架構師水平再高,如果溝通能力很差,花半天時間說不清楚自己的方案,那麼再好的方案又有什麼用途?在易寶每個周五的下午請架構師進行內部分享,講講最近都設計了什麼有價值的系統,把自己做的解決方案用一句或幾句話清楚地表達出來。因為能簡潔地表達清楚意味著架構師已經深刻地思考和提煉了自己的設計思想。
在美國工作時,曾經有一位CTO跟我說:我不希望架構師有太多的協作,希望架構師都是孤單的鷹。你什麼時候看見過鷹是一群一群飛的?真正的雄鷹都是飛得很高很孤獨的,架構師也是這樣。這裡並不是說架構師不需要交流,而是在正常的情況下,架構師應該有足夠的智慧和獨立思考能力去做出最優的技術與業務判斷。架構師的位置越高這種孤獨性就越大。假如你是CTO,整個公司的技術問題都要你自己去規劃,並對結果負責,根本沒有人可以商量。要求有鷹飛的高度還有一個原因,就是只有飛到一定的高度才能夠看到全面和整體。另外,除了飛得高,還要求架構師要有鷹一樣敏銳的眼睛,能夠觀察到設計中不為人知而又很重要的細節。架構師還要具備有藝術的品位,設計出的系統足夠優雅,那麼,應該怎麼理解這個品位呢?每個系統研發人員,如果做研發的唯一目的是實現一些代碼,做出某些滿足業務需求的功能,那麼就沒有什麼藝術品位。所謂的品位是指有個人獨特的風格。做出的解決方案,具有不同於常人的地方,是經過架構師充分的獨立思考提出來的。我們非常看重有獨立思考和個人風格的藝術品味。
圖5 架構師的三商
架構師要怎麼做才能具備鷹飛的高度、鷹眼的敏銳和藝術的品味呢?首先架構師要有較高的智商,其次,架構師要有一定的的情商,做為一個高級的技術人員,擁有開放的心態、謙虛的態度、幽默的氣質會幫助他傳播自己的設計理念,形成自己的設計風格,贏得廣泛的影響力。再次,還有另外一個不常為人知的悟商亦至關重要。這是百悟科技的負責人張總從老子《道德經》里領悟出來的,我有幸為該書作序。所謂的悟商是指足夠快速感應並適應周邊環境變化的學習能力。做為一個架構師,要能跟隨技術發展的腳步,該做主機系統的時候學習主機系統,該做分步式計算的時候能適應分散式處理,該做移動應用時能設計移動服務。技術在不斷地演進,業務在不斷地變化,在這個世界上唯有變化是永恆的,特別是互聯網技術領域,架構師的悟商有多高,學習和適應能力有多強,基本上決定了這個人能在架構師之路上能夠走多遠。
架構師成長途徑
關於架構師的成長之路,還存在著一個誤區,就是把架構師預設為軟體架構師。因為今天我們所遇到的架構師,大多數都是圍繞著軟體研發。事實上這個認識有一定的片面性。誠然,現今我們所構建的系統都是軟體系統,但是在實際的工作過程中,隨著信息技術在深度和廣度上的快速發展,除了軟體研發以外,測試、網路、安全、配置、系統和數據都已經形成了具有自己獨特專業知識和經驗的領域,也都需要各個領域的架構師。比如信息安全是一個非常專業的領域,要軟體架構師無法完全理解和駕馭信息安全是勉為其難。網路架構師日常研究的各種網路問題,軟體架構師也難以置喙,因為這是完全不同的兩個領域。數據方面亦如此,能夠把整個公司業務數據之間的關聯性瞭然於胸的人,一個公司或許能有一兩個,這種人就是數據架構師。現實的情況是,軟體架構師占據主導地位,基本上掩蓋了其他領域架構師的光芒。當然出現今天這種情況的主要原因也是因為大部分的技術領導者也都是來源於研發領域。這種狀態要儘快改變,否則在運維、安全、數據、測試等其他領域工程師很難有自己的成長空間。
圖6 架構師的種類與成長歷程
架構師的成長基本上可以分為初級、中級、高級、架構四個階段。初級階段是指大學畢業後的兩年時間。這兩年主要就是學習,目前大學的教材和講義往往比現在企業正在使用或者發展的技術有一個時間差。學校教授的東西可能是幾年前的技術,不是當下正需要的,所以畢業進入企業後要通過不斷的學習趕上新技術發展的步伐。中級階段是指兩年到四年這段時間,主要是積累知識和技能,比如,怎麼思考業務問題、怎麼解決問題的技能,在這一階段的人會在自己的工作小組內暫露頭角,小有影響力。高級階段是指四到七年這段時間,在這一階段主要是積累經驗,就是說以前類似的業務問題是怎樣轉換成技術解決方案的,這次應該怎麼解決,方案的優點是什麼,缺點在哪兒,未來怎麼改進等等,這個階段的人會逐步在自己的部門內有一定的影響力,開始帶團隊。架構階段是指至少具備七年以上的經驗,在美國,其實架構師不少都是鬢染白髮的技術領導者,我在eBay工作的時候屬於比較年輕的架構師。到了架構師這一階段,企業期望架構師具有能夠把各種經驗和知識綜合發揮的智慧,這裡強調的是智慧,而不僅僅是經驗,而且要求他們具有跨部門的影響力,也就是架構師的設計方案能夠影響到公司副總裁一級的決策。
給準架構師的建議
總而言之,對普通技術人員成長為架構師,我有五個建議:第一要有高度,培養自己的思維高度,從而對技術和業務有整體的視野。第二要有深度,培養自己獨立思考問題,看清問題本質的能力。第三要有廣度,拓寬自己的技術和業務範圍,從而確保自己不成為井底之蛙。第四要有新度,培養自己的好奇心,對任何相關的東西都感興趣,並想去瞭解,不斷地學習新技術掌握新技能。第五要有溝通力,培養講清楚方案的能力,特別是用一句話把事情講清楚的能力。今天,互聯網技術飛速發展,已經成為社會和生產的重要推動力,架構師的作用由此變得愈來愈重要,成為很多技術人員的職業目標。從普通技術人員成長為架構師是一條艱苦漫長而且佈滿荊棘的路,如何對準目標、設計路徑、培養素質、積累經驗是每個想成為架構師的技術人員都必須要認真思考的問題。
作者丨從心所願本文來自博客園,作者:古道輕風,轉載請註明原文鏈接:https://www.cnblogs.com/88223100/p/Essential-quality-and-growth-path-of-architect.html