之前被問到這個問題的時候很頭痛,因為一講就要講很久,而且對方如果底子不夠的話,恐怕會像鴨子聽雷。再說我不當工程師很久了,雖然見過各式各樣的架構師,但是總不好意思一直拿十多年前的職場經驗來吹噓,畢竟資訊科技產業進步很快,有些事情已然不同。
欣見這篇文章[1]談「從程序員到架構師」,也可以提供給上述提問者參考,省下我講解的時間。雖然這裡主要講的是建構優化雲端服務的軟體架構師,但是大同小異,尤其在非技術的部分,例如溝通、架構、抽象分析、決策等能力,則多半也適用於其他類別的架構師。有興趣的人理解架構師,或是想朝架構師發展的人可以大致瀏覽一下,以下是我的補充說明。
欣見這篇文章[1]談「從程序員到架構師」,也可以提供給上述提問者參考,省下我講解的時間。雖然這裡主要講的是建構優化雲端服務的軟體架構師,但是大同小異,尤其在非技術的部分,例如溝通、架構、抽象分析、決策等能力,則多半也適用於其他類別的架構師。有興趣的人理解架構師,或是想朝架構師發展的人可以大致瀏覽一下,以下是我的補充說明。
技能樹
有些人看到上述文章,可能會先被兩張「技能樹」圖片所震撼,一張是卓越的程序員(程式師)的技能樹,一張是架構師的技能樹,如作者所言,從程序員到架構師,是一個不斷經驗累積的過程,所以架構師不可能光是懂一堆高深的理論卻不懂得寫程式。然而各位如果比較這兩張技能樹,會發現有大不同,並不是單純靠累積經驗值就能升級的。
化學反應
因為經驗積累到後來,重點不在於「量的增加」而在於「質的躍昇」,所以不是說你學過越多的語言和演算法、用過很多的工具、做過很多的專案、寫程式碼的速度超快,就能蛻變升級成為架構師。過程中必須產生類似化學反應,才能將經驗和能力整合後提升到另一個層次。但這個類似化學反應的蛻變的關鍵和契機因人因領域而異,很難說明清楚,分享文中也沒有多講。我最後會談一下這件事,並且分享一下我的個人經驗給朋友們參考。
重質不重量
為什麼說學了很多東西、專案做得再多,未必能成為好的架構師呢?好比你拿了五個碩士學位,是否可折換一個博士呢? 當然不行,因為真正博士等級的訓練極為注重「質的躍昇」,看看學生是否能在融會貫通知識經驗之後做出優秀的原創作品。同理,發表十篇二流的論文是否等同於一篇一流論文?做了十個「快老二」的研發專案,是否相當於做出一個高技術門檻的原創作品?當然不是。
當事人本身要具備足夠的基礎,其次則是要有適合的環境以及良師益友,否則恐怕學再多也難以濟事。至於「質」要如何來認定呢?通常得透過實際戰果以及其他資深架構師的肯定來孚眾望,否則即使勉強掛上架構師的頭銜也是無用。
視野和典範
重質不重量的概念並不難懂,但實際上與當事人的視野有關。所謂「夏蟲不可語冰」,如果根本沒看過架構師,缺乏典範,那麼要如何評價一位架構師或是學習成為一位架構師呢?有些工程師長年賣力鑽研,成為某項技術項目的達人,但是技術達人並不見得具備架構師的能力。台灣的資訊電子業有不少的技術達人,但是在產業需要轉型提升的時候,需要構思前瞻和總體策略的時候,才會發現架構師的重要性。
架構師的光譜
架構師有許多種,有的偏軟體,有的偏硬體,但是大多數都要軟硬兼備的素養。分享文所談的雲端軟體架構師,比較偏向軟體技術,但是也要懂得系統架構和效能分析優化;台灣比較常見的是嵌入式系統的研發工作,過去的發展受限,往往停留在為硬體產品寫韌體(firmware)的層次,但是到了物聯網時代之後,就開始需要懂軟體的系統架構師來帶領方向。到了數據掛帥的今天,還要再加上AI和資訊安全的素養,又是另外的維度。
基本素養和專業能力
剛進入資訊科技領域的學生,由於從寫程式入門,往往過度熱衷於寫程式(或是完全排拒寫程式)以及沈迷於演算法。其實這些就像英文和數學一樣,是資訊科技人的基本素養,某些公司面試新進員工的時候,考驗程式寫作和演算法的功力,也是理所當然的事情。但是切莫以為基本素養就是專業能力,應聘資深工程師或架構師的時候,除了確認有基本素養之外,更加著重於專業能力。什麼是專業能力呢?請參考一下技能樹。基本上,資訊工程系課程中有不少有助於培養架構師的課程,不要傻傻的覺得會寫程式就行。有些東西在大學和研究所時期不好好打基礎,到了業界就難了,尤其是與系統和硬體相關的技術,需要有環境與良師益友,才會事半功倍。
環境與良師益友
回顧我自己在求學和擔任工程師的過程,感到頗為幸運地找到不錯的環境和良師益友。我高中參加電研社開始奠定寫程式的基礎,大學則是從電子電路、嵌入式系統到大型電腦都碰過,尤其是後來出國念博士班時專注研究大型平行電腦效能優化技術的時候,有機會鑽研最先進的軟硬體,是我個人蛻變的關鍵和契機;之後到矽谷Sun工作的那幾年,有幸在效能工程部門,與處理機設計部門、高階伺服器系統架構部門、網路儲存產品部門、 作業系統核心開發部門、資訊安全研究部門、Web軟體發展部門的資深架構師共同合作,不僅實際驗證我的技能,也透過他們對我的讚許讓我拿到成為架構師一員的門票。
架構師的發展機會
在我選擇回國家教書的時候,有幾位具備架構師資歷的同事也離開公司回到他們的祖國貢獻於科技業。好幾位回去中國發展的同事,獲得政府的挹注,後來發展得很不錯。相形之下,台灣資訊產業轉型提升的步調頗為緩慢,無論是產業或學術,鮮少人了解架構師的重要性,願意長期積累技術經驗成為架構師的人少得可憐,乃至於大多數人連架構師是什麼都不大清楚。但有趣的是,這幾年業界想轉型,三不五時就會有朋友要我推薦架構師 -- 各位可以找一下我之前的貼文就知道。
我分享以上這些個人經驗和看法,不是想往自己臉上貼金,只是想告訴學生們什麼是架構師以及如何把自己培養成架構師的歷程。當然,我不是什麼厲害的架構師,只是當年有幸從多位厲害的架構師身上學到一些皮毛而已,不過我認為我這點皮毛,在這個架構師罕見的學術環境,還是有點價值,也歡迎理解成為架構師的難度後仍想成為架構師的學子們一起來學習。
[1] https://mp.weixin.qq.com/s/CqRruULCJQCa5cbxVk66uA