2014年2月17日 星期一

塗溥鈞(嘉實資訊副總)

受訪對象:塗溥鈞學長
對象經歷:台大資工第七屆系友 NYU碩士畢業 現任嘉實資訊副總
訪問學生:陳頤洵、黃孝天

Q:學長在高中時期會寫程式嗎?
不會。因為當年是聯考,所以其實是因為分數而上了台大資工,你們現在應該比較好,是自主性選到這裡。而且那時電腦其實非常不普及,那時候有一些PC,不過真的很貴。我當時甚至完全不知道什麼是程式設計,不過後來很幸運發現自己對這個有興趣。

Q:請問學長大學畢業是先進職場還是先念碩士?
我大學畢業之後,因為我不用當兵,所以先在計算機中心實習一年,然後一邊準備出國念書,接著就是出國,那我是到NYU去,念完了碩士之後呢,自己覺得不是一個念博士的料,所以我就決定去工作,那我工作之後就一直到現在,20年了,都在做軟體開發上面的事情,那在我們同班同學裡面,算是比較少數的。應該畢了業之後,有些同學去教書,就往學術方面做發展,有的是去美國就業,有的後來開公司,那開公司的人他們很多工作是比較偏管理方面的,那我和一些同學是少數一直都在工程方面做的。

Q:請問學長在工作後有遇到什麼問題?
在工程方面其實遇到了很多的問題,就是第一個其實是,在外面寫的軟體其實跟學校裡面寫的差異度很大,幾乎是完全是不同的東西,所以後來我也常常跟我在教書同班同學提到這方面的問題,所以他也一直很希望能夠讓他的學生可以跟外面的工作接軌,所以我們有做了一些動作例如說讓學生來實習,讓產學兩邊的技術可以比較接近,那現在很多大學部或是研究所的同學他出來會寫論文,但有些時候他們所做的論文,對於他們所要做的事情一點幫助也沒有。我舉個例子好了,你們現在在讀的作業系統的書,跟現在在外面的作業系統是有很大的差異的,像你們現在學的linux,其實只是外面用的基本的東西,我們會在linux上在加東西,比如說hadoop。學校講的東西很單純,但外面所要用的要考慮到很多不完美的情況,很容易就會讓程式當掉,所以必須用很多的方式去解決問題,而這些東西要有些理論的基礎,但很大一部份是要實作的經驗,這個其實是在學校裡面跟在外面工作領域的需求上比較大的一個gap,那我一直覺得學生在大學的時候、在研究所的時候,要大量的寫程式,如果是對軟體開發有興趣的話,然後要看很多的open sourse,因為現在有internetopen sourse的關係,現在你可以看到很多人寫的程式。就是學校的學生有些比較早對軟體開發有興趣,大學時有較多實作經驗,其實之後出來工作在銜接上會比較順利,這個其實是我多年來比較大的感觸。以台灣來說好了,其實台灣的軟體產業不是太蓬勃,因為市場小,投入的人也少,政府在做的其實也少,他們投了很多錢在做網路的東西,但底層的人其實很少,舉例好了,在美國有amazon,那你就可以在上面開發你的app,所以只要幾個人的創意,就可以很快變成家公司。但其實amazon這個是個很複雜的fundation,比如說google,可以直接在google上開發你的程式,可是在台灣,我們就只會把別人的OS拿來架,我們沒辦法在上面再架,例如說一些framework,比較可以讓有創意的人可以在上面開發程式的底層,聽到他們都是直接去買很多,比如說open stack來把他架起來之後,然後作硬碟給大家用,可是他沒有辦法在上面,例如說,有沒有能寫出像amazon那樣的東西,答案是不知道是甚麼,做不出來。可是這個其實是很需要CS底子很深的人來做的,但他是個很枯燥的事情,因為他是做fundation,可是台灣是很少這樣子的,那所以台灣可以發展一些遊戲產業,或者是一些app的產業,但這些都不夠深,所以競爭力會相對比較少。我是覺得這部分可以做得更好。這是我工作這麼久的一些感覺。

Q:那學長有什麼建議可以在大學打好這方面的底子?
其實大部分程式的複雜度阿,通常都不大會是一個半年之內,因為你在半年的,要讀書要寫報告,其實很難在半年內拼出那種東西,不是說不行,而是你要花很大的力氣在coding,你才有辦法co出這種比較複雜的程式,這個其實很麻煩。我看過stanfordtutorial,是一個開給研一的課,一個學期12堂課,每一堂課都有作業,而每個作業都是一個完整的程式。但在最後第十二堂的時候,是要自己設計出一個產品,可是這個產品出來之前還要跟助教討論過,究竟這可不可行,就是你要先寫purposal,給助教,讓助教覺得這個東西不是來混的。像他們這門課其實只是跟你講concept而已,你自己去想辦法學習,怎麼寫C,怎麼寫某個語言,那這樣子的教學方式其實才能刺激學生自主學習,而不是被動的吸收。那我其實現在不太知道學校怎麼教,不過我自己是覺得,大學的時候其實吸收力很好,應該要多學習,像是我大學時有修compiler,研究所時學compiler,那我在工作後用到時,才發現當時學的不夠好,可是現在在做compiler的方式跟書裡面不一樣,不過其實有很多基本的理論還是很有用的,那個時候就會覺得說,其實念書的東西是會有聯結的,只是不知道是什麼時候。如果不是當時公司用到,搞不好我這輩子也用不到,其實有時候知識就是這樣,也不知道是什麼時候需要。

Q:學長為甚麼會想要出國念碩士?
我自己會想出國其實單純只是想出去看看,到不是從想要讀更多書的角度而去。可是出國我覺得對我很重要,因為要獨立生活,而且最好不要太有錢。因為學費很貴、生活費很貴,所以我們都很省,那因為很省,學了很多事情,那些對我未來其實很重要。那時我們很多同學去,大家都很拚,因為學費很貴,想要趕快把碩士念完找工作脫離窮苦的生活。可是你在台灣就不會有這種壓力。所以我覺得如果有機會,建議出國去看看,未必國外教授會講得比較好,畢竟用英文你的吸收不一定比中文吸收的多,但我認為這對於一個人來說,是很棒的學習。

Q:那學長之後的工作經歷呢?
我在美國做了三年才回來,我們那個公司,他們有一個language,是專門用來測試程式用的,那當時就是在做這個系統,所以包含那個語言的compiler等等的東西,後來才回台灣。回來之後,就去「友立資訊」,那家是當時很有名,做影像處理的公司,後來友立資訊被美國公司給收併了,然後最近那家美國公司也收掉了。在友立做了一段時間之後,因為有同學在做金融股市的軟體,那覺得這方面的比較好玩,所以跑來做,做一做又回去友立做了兩年,那時其實internet快起來了,所以我那時在友立的時候,有在做可以讓使用者上傳圖片的網路上的東西,有點像flicker那樣,那個時候的flicker拉,不是很成熟就對了拉,後來就來到現在這裡,已經待了十五年了。

Q:那學長在工作轉換時,會不會因為工作不一樣,所以需要多學什麼東西?
會,每個domain都不一樣,每個地方都很吃domain,可是其實像我去做影像軟體的時候,我根本不知道什麼叫rgb拉,他們interview的時候問我說,你知道什麼叫rgb嗎?我說像電視上射出來的那個顏色嗎?他其實是要問我說,一個在memory layout上,怎樣擺那個rgb的位置,他只是要問我這個啦。他問我很多影像的演算法,我也幾乎都不知道。公司裡面其實分兩種人,一種人是大學時就在做影像的人了,所以他們是演算法工程師,所以他們的工作在做特效,可是有另一種人是比較做軟體取向的,就我們看懂那個東西後,怎麼去做application,就是應用他們的library去做application。後來我才發現是錯誤的,因為我去用了很多adobe的東西,以前友立的競爭對手他們認為是adobe拉,可那時候我們都看不懂adobe的東西為甚麼是這樣設計,一直到後來我自己有去照相,去處理照片,才知道原來他們是由使用者角度出發。那是因為我們當時做出這東西的人不是使用者,那很難,因為你要找規格,在台灣,要找使用者寫規格是件很難的事情,所以在公司裡都是由技術工程師在寫規格,所以我們規格都寫很炫,但做出來的東西其實都只有皮毛,沒有真正從使用者角度寫出。那這個我覺得會是軟體工程師要注意很重要的東西。後來我們做現在這行,因為我們是提供金融服務的,客戶是要求我們資料是不可以斷的,那你要怎麼做出穩定的系統,其實很多事情並不是user端的程式,而是你後面如何監控,當初了問題該怎麼備援怎麼切換,那個SOP其實是依照公司的生態,他的行業特質而去設計,所以每個東西他的domain都很重要。

Q:那學長覺得除了資訊能力外,會不會需要第二專長?

基本上資訊能力很重要,但他不是主要決定你未來發展的東西。很重要的是你的personality。在一家公司,有些人是工程師,也些人是PM,有些人是做產品設計,他們可能都有CS background,可是他們做什麼是其實是因為他們的特質而決定,所以你最重要的專長是對人和對事的處理能力。你在外面的工作其實是個小小的社會,而這是需要用心學習的,當你的興趣越廣泛你可以看到更多東西,他事實上會塑造你的人格,讓你在團體的表現會更好。這不是技術的問題,而是人在社會的skill。對了,還有一個重要的能力就是文書處理,你要怎麼整理你的資料其實很重要,這點其實在念碩士寫論文時就可以培養了。