這個問題的由來,是我說了一句有爭議的話(食物可以亂吃,話不能隨便講):「作為系統架構師,分析和溝通的能力遠比coding重要」。
軟體專家聽了,可能不以為然 :) Raymond Lai就關切了一下,他說十幾年前矽谷就下定論了:master coder一定是architect,會講不會code的architect在軟體公司是不會那麼受尊敬的。
不要誤會,我說「系統架構師」指的是system architect,不是專做software的architect。我特別舉system architect出來,其實是希望台灣的軟體人才,除了能在軟體領域專精之外,能夠有企圖心去進到系統領域,俯視與掌握全局。
台灣現在缺system architects缺得很嚴重,在大部分的老闆眼中,系統公司裡面功績彪炳的戰將,是硬體工程師,所以在缺系統架構師的情況,只有硬體工程師暫代。這很正常,因為過去的產品的軟體層次不高,軟體工程師所負責的多半是支援的工作,例如寫drivers。我會希望軟體人才,在台灣現在和未來勢必要提昇產品的層次的時候,跳脫自身軟體背景的格局,多從應用面、系統面去看,有機會出來作為領導者。
然而,什麼是系統呢?系統可大可小,舉例來說,一個system可以是:
1. operating system - 以軟體為主
2. embedded system - 低階系統往往是以硬體設計為主,軟體為輔
3. computer - 傳統是以CPU為主,其他的東西叫做「周邊」
4. enterprise server system - 建構商用系統上複雜的軟體層,這是IBM所謂的system architect
5. distributed system - 重點在軟體和網路協定
6. data center - 對於以上東西的組合和整體規劃,應該要對上述的東西有深入的了解
7. system-on-chip (SoC) - 應該是由應用去推動軟硬體協同設計的工作,不過國內多由硬體人士主導
我常常談的系統,講的是最後那兩項,那也是台灣公司一直談說要做的東西。問題是,談的人多,真正能做的人少。
台灣的分析師(Analyst)一大堆,但就像Wikipedia (http://en.wikipedia.org/wiki/Systems_analyst) 開宗明義講的: "they do not normally involve themselves in the actual hardware or software development" --多半不是真正有參與實際研發工作的人。當然,有很多分析師找出來的結果很重要,但是要有人來擬定和指揮產品開發計畫。擬定和指揮產品開發計畫的人可稱之為architect。
Architect這個字,是從工程領域借來的。An architect is a person trained and licensed to plan, design, and oversee the construction of buildings. (http://en.wikipedia.org/wiki/Architect) (中文版的Wikipedia寫得不好)把這句話的buildings換成systems,就可以拿來定義system architects。這句話的重點在於:有規劃(plan)、設計(design)、全面監督(oversee)系統建構的能力,不是只出一張嘴做規劃,也不是只聽命把長官要的東西實際設計出來,也不是只在旁邊釘著下屬每天加班把東西搞出來。
朋友們常說業界缺乏戰將,有好的architect來帶領研發團隊,是非常重要的事情。所以我希望能訓練出一些將來能擔當大任的architect。不要誤會了,台灣現在當然有一些architect的人才,但我們還需要更多。一個好的architect要有很強的能力和非常豐富的經驗,所謂十年磨一劍,要有真材實料,不是把名片上的頭銜換一換就行的 :)
業界的需求,當然由市場來決定。十年磨一劍,要怎麼磨?要磨出什麼樣的劍?科技一日千里,這些問題都是大哉問。這也是architect難以量產的原因。在業界裡,需要各種的architects,有的地方,做很大很複雜的計畫,需要一群architects集思廣益,每個architect負責其中一部分的專業領域,但是每個人也得具備跟其他architects溝通的能力,這個團隊合作才會順利。
我希望來找我做系統研究的碩博士班學生,能把劍磨好再出去,不然出去以後跟人家真刀真槍地累積實戰經驗,或許也是個辦法,但不見得人人都有再磨劍的機會。還有啊,有些同學自己不認真磨劍,我在旁邊幫著磨,其實磨得頗辛苦的。最好是你們自己學會磨劍的方法,到業界之後找機會更上層樓。
Architect既然是工程的概念,想朝這方面前進的同學,可以想想該修什麼課程?工程的核心概念之一是trade-offs -- 考慮複雜因素後做規劃和設計、一面做一面評估和改進 。資訊工程的課程中,有幾門課能夠讓學生強化這工程核心概念呢?我想很多課都有 ,只是學的人有沒有注意而已 。"Archi" 這個字根,源自於希臘文,意思是 "chief"。而chief就是領袖的意思。在各種領域,我們都需要有能力讓事情被做好(get the job done well)的領導者。有的地方,做很大很複雜的計畫,需要一群architects集思廣益,每個architect負責其中一部分的專業領域,但是每個人也得具備跟其他architects溝通的能力,這個團隊合作才會順利。
這裡有個問題:有經驗,即使在各部門歷練過各種實務工作的優秀的設計者,並不代表能夠做管理者;能做管理者的,未必能作為一個有眼光的規劃者;能規劃的,未必能動手。就單一項目而言,要成為優秀人才是相對容易些,但是要集上述能力於一身,就難多了。這是「我眼中」architect獨特的地方,坦白說,必須有些天份、機運和有個人的努力,才有辦法達到。
蘇文鈺教授特別指出:「國家需要architects,現在是用商業的運作方式來管國家,學校與醫院。Orz! 」這個我再同意不過了,但是要讓政府轉型並不容易,關鍵在於「人」,如何找到architects來為國為民做事。
國家是一個大系統,我們當然也希望主政者有能力讓事情被做好,而不是被說成是bumbler。很顯然,在多年的內鬥和空轉之下,執政黨竟然找不到賢能者來擔任要職。君不見,國防部長上任沒幾天就換下來了... 這些檯面上的人物,究竟有多少實力?如果我們在看檯面上的人物這些年的績效的時候,不去看他們的頭銜、人脈、收入、談話、論文發表的話,而是認真去評量他們所實際做過的計畫和事業,到底有多少人物是真的賢能者??以我所見所聞,能幹、認真、負責、務實且清廉的人,多半不大願意淌渾水,或者是進到系統後被卡住、被鬥垮、被同化。現在國家,如果要做些事情,好比被圍標、綁標的標案,源頭就不對了,自然不會有好的工程品質。
國家要改革,談何容易,但還是得做,不然我們天天罵也無濟於事。我想,要讓政府轉型並不容易,關鍵在於「人」。
- 談「人」的話,行政機構公務員的人事是最難改動的,光靠換首長是不夠的,所以我不期待行政單位的施政「能量」有大幅改進的空間,與其要求行政單位多做事,不如減少他們的負擔,要他們把基本的工作做好,並且廉潔,這是所謂小而美的廉能政府。很多事情(但不是所有事情),要讓會做事的民間單位去做,才會有效率。
- 立法委員是人民選的,人民願意選出一些會做事的賢能者進入立法院,讓立法院發揮功能,這是人民自己的責任。各政黨和民間團體也需要賢能者作為領導人。當然,推舉誰出來作為團體領導人,也是社群決定的。國家既然是個大系統,各單位之間要能夠有像上述system architects一樣的精神,不只負責個別的專業領域,也得具備跟其他單位溝通的能力,這個團隊合作才會順利。
我看在接下來的世代,當人民厭惡政府的貪腐無能到達極點的時候,自然想法會轉。所以啊,能力強的人千萬不要氣餒和放棄努力,更不要同流合污。風水輪流轉,將來會有發揮的時候。當然,有些人才,沒遇到機會,在那裡默默耕耘。有心、有機會的話,不妨出來試試看。孔子很推崇的管仲,可算是architect的人才,也是需要有機會的。
很好的經驗反思,學到一課了,謝謝洪老師
回覆刪除以台灣現在科技業的生態及水準,無異是緣木求魚
回覆刪除"以我所見所聞,能幹、認真、負責、務實且清廉的人,多半不大願意淌渾水,或者是進到系統後被卡住、被鬥垮、被同化。現在國家,如果要做些事情,好比被圍標、綁標的標案,源頭就不對了,自然不會有好的工程品質。"
回覆刪除-> 這和我在資訊服務業界(即俗稱的SI)看到的是一致的。
"我不期待行政單位的施政「能量」有大幅改進的空間,與其要求行政單位多做事,不如減少他們的負擔,要他們把基本的工作做好,並且廉潔,這是所謂小而美的廉能政府。"
-> 這個想法很務實,的確是比較有機會的方向。