Welcome! 登入 註冊
美寶首頁 美寶百科 美寶論壇 美寶落格 美寶地圖

Advanced

[轉錄] 一位高工時HTC工程師的訪談記錄 (2011)

Posted by HP 
本訪談依其內容判斷應為一位軟體工程師對 HTC 開發 android 相關系統及工作上的看法。內容除提及工作及公司現況外,也對資工系大學生對課程的學習及重要性提出看法。(本文受訪者職稱為資深工程師,在 HTC 工作時間約二年)

原文出自:http://csiecomm.blogspot.com/2011/07/b92htc.html (但目前文章已移除)
本文文字轉錄自 http://csiecomm.blogspot.com/2011/07/b92htc.html



受訪對象:高工時工程師(不具名)

訪問時間:2011年6月12日

訪問人員:吳文傑、李卿澄

外傳HTC公司在美歐之產品與台灣有很大的差異,請問就你所知是事實嗎?理由是什麼呢?

這問題也太針對我們公司了吧。

台灣消費者對於手機的購買習慣與國外差很多。先回答理由。我們對於買手機,與歐美市場、甚至日本有很大的差別。像我們在台灣買手機大部分習慣是跟手機零售業者、通訊行買;在國外這種事情很少,國外通常是跟電信商買,手機綁電信商。我們出給國外的手機是出給電信商而不是自己當零售業者開店來賣,每個電信商都有不同需求。規模大的電信商,要求可以比較多,如果這個電信商願意出比較多的錢,來提供某些規格的手機,我當然就可以給他比較好一點的規格,所以,這個問題,我們來看的話覺得不是事實。

對公司來講,應該說,出給每一家電信商的手機都不一樣。不應以國內外來看,而應該以不同營運商來看。事實上我們每一個計畫跑得時候,電信商的要求是公司最大的考量,因為我們公司...不能算代工啦,我想講代工可能比較好一點,我們不做OEM,我們做ODM,所以我們跟電信商一直有密切的合作關係,也因為這種市場特性,不會去得罪電信商,大部分時候都是迎合電信商要求,以前常常可以看到電信商客製化的手機,這方面我們花了蠻多的心力。如果向三星這種做比較大的,就比較不像我們可以給電信商這種要求,我們現在規模也變大了,但是我們跟電信商的合作模式還是如此,但是我們可以看出來這幾年狀況好很多,我們可以比較以我們想要的規格來跟電信商談,也是因為規模做大了。

HTC公司的設計與品管流程是如何互動與配合?

品管這件事情,你如果說是軟體喔,這...太痛苦了。我們公司的軟體規格到出貨前都有可能改。公司一直在宣揚的公司核心價值dynamic ,如果是我自己說的話-毫無原則、毫無紀律可言。比如說,一個郵件程式的規格定出來之後,三天兩頭就改,那,工程師這邊也是三天兩頭跟著改,你們覺得這東西真的有品管可言嗎?

問:規格一直改,也沒有時間Debug?

我們當然有跑壓力測試呀有的沒有的,但規格一直在改,有時後到出貨時都還有bug,我自己覺得我們公司... 有啦有啦有品管可言,但是規格常常在改,這方面我覺得做的不是很好。我覺得我們在軟體上的設計比同樣是做智慧手機的廠商好很多,我們真的花了很多心思去了解使用者。 有些公司反而專注再外型、規格之上。

問:如果規格一直改,那code會不會很糟糕?

如果有在追我們的產品,我們有一個人機介面,更新速度很快,其實還有很多bug,不過最近幾個月有正視這些問題,有發了一些嚴格的規定在控制。

有帥哥/美女工程師在裡面嗎?(工作環境的男女比例?)

看樓層啦,我自己部門19個人一個女的,可是品管就反過來。

問:男女比例會與專業能力有關嗎?外界可能會有一些刻板印象?

我覺得專業能力跟性別沒有關係。我覺得可能是因為工時啦,所以研發人員女生比較不願意做。

工程師一定要爆肝嗎?

可以分成工作時間長和工作時間晚兩個部份來討論。

工作晚的話,這件事情我覺得是惡性循環。其實大家集中密集來公司大概是早上可是問題是老闆比你更晚來,沒有人管你幾點來,只會在意你幾點走。有些主管不會在意這些,但大環境如此,晚上打電話找不到你會覺得你不認真,星期天晚上兩點打電話找你都會覺得理所當然。

工程師一定要爆肝嗎?看公司。

有一個部份要替公司辯解一下。有些人會需要半夜在公司是因為客戶在國外,要跟客戶聯絡什麼的,所以他們早上可以不用來。

工時長的話,我覺得,因為台灣的大老闆沒有人力也是一種成本的觀念。對他們來講,勞工工作八小時和十八小時的成本是一樣的,沒有加班費呀,他們一句責任制就壓死你啦。

工作內容?會不會很單調?還是充滿挑戰?

看部門。如果是一些比較不會有新東西的部門,我們有些部門...例如說他在寫一個計算機,就是版本更新時,換幾個圖而已,他們這種部門就比較輕鬆,相對也比較單調。

像我自己這邊的話,每天睜開眼睛又是新的挑戰。

問:像是Spec又改了?

我的部門不管spec,比較屬於優化的部份,永遠都會有新的挑戰。

常常碰到一些應用程式,想都想不到怎麼會寫出這種鬼東西,要跳下去跟別人一起解決問題。每天都是新的挑戰。像android的版本一直更新,每次來...這個就很痛苦。

問:要在Android上面做一些更動?

我們更動很多,所以每次有新版本來就會很痛苦,我看到市面上對Android phone改最多的應該就是我們公司。

問:都快要可以寫自己的Android了?

我們不是沒想過要發展自己的作業系統喔,不過後來被取消了,後來發現沒有意義,如果量不夠大,平台最後還是會死掉。所以說會不會很單調或是充滿挑戰?要看部門。

面對這樣長的工作時數,是什麼樣的理由讓你願意持續努力?

我們公司內部真的有很多人是充滿理想、熱血,真的有,但這些人的熱情在現實中很快會被消磨殆盡,但我不會認為這是產業的普遍現象啦。進來之後你會發現很多公司跟理想中的不一樣,我是以我們這邊研發部門來說啦,你們應該也知道台灣很多RD不是真的在研發,而只是在coding。

問:兩者之間的差別?是理論和實務的不同嗎?

人家開spec出來,你把他coding出來,我不知道哪裡有研發。不過我們公司真的有研發,像Magic Lab,他們那邊的工作性質和我們差很多,我這邊有很多充滿熱情的人進來很快就被磨掉,通常最快離職的也是他們。

我們公司流動率很高,當我09年進公司,04年進來的人已經資深到跟主管差不多,不過這一年來因為股價狂飆,走的人有明顯變少。若以進來年份排順序好了,我進來兩年,我已經差不多排到50%了,所以你可以知道我們的流動率是非常高的,很多人是充滿著理想,覺得這是一家做出很棒產品的公司。我們自己也覺得公司產品很棒,但是內部的環境會讓很多人無法達成理想。

問:流動率高是業界普遍現象嗎?

在我們公司比較嚴重,這也是一些bug一直de不出來的原因。人都走了,有些code還不如砍掉重練,有一些應用程式,過去有很嚴重的memory leak,後來人走了,來一個新人,他不去修,後來就砍掉重練,流動性高就會變成這樣子呀。

工時很長?是,但是還是要看部門。也有很爽的單位,每天大概下午七點多就可以下班,而且錢很多。

工時很長,看部門。不要提那種特例,主要有產出的部門的工時都很長。我們從農曆年就告訴我們六日加班要一直到五月,一不小心就到六月。

問:工作時數不會影響效率嗎?

會呀,可是有些公司就是希望人一直在這邊呀,我們有過一週工作時數約是九十幾到一百小時,不過那是最忙得時候。有產出的部門工時都很長,而且這件事情我們認為短時間內不會變好。

問:如何面對長工時?用笑容來面對?

如何面對長工時呢?我是例外啦,就只能哀怨的倒數了。

什麼理由願意持續努力?扣掉有理想的大家一定是為了錢才進來的,只要不像是我們這種一畢業就進來的,在業界有待過的都知道這家公司對員工的操勞的相關風評不是很好。用什麼態度面對?大概還是為了錢。可是為什麼流動性還是這麼高喔?最後大家會發現其實根本沒什麼錢。

問:有理想的人會被消磨掉理想,那有理想的人應該如何發展?

一個有理想的人要慎選部門。他們會提出一些很有創意的想法,然後會跟大家說一起來做吧,雖然不是每個意見都會成功或實行,但是這很合理,本來就不是所有的概念都可行,有一些可行的,如果是有理想的人應該會為此感到滿足。所以如果你是有理想的人,不要來有出貨案子壓力的實戰部門,他就是一直拿著時程一直壓你,然後spec一直改。

在求學階段時所想像未來的工作是什麼樣子?與現在的工作內容相符嗎?

我們曾經以為會跟大三、大四和研究所待在實驗室差不多,實際上是有一些差異的。

大家在唸書的時候就是被Deadline追著跑的,可是在像這種公司工作,一天可能會有好幾個Deadline,每一天都被Deadline追著跑。我相信除了大三下以外,大學部大部分被Deadline追著跑都是特定的時候,以我自己來講,會被Deadline追著跑是因為我平常都不寫作業,應該說在唸書的時候,沒有辦法體會每天都被人家追著跑。

你要想想看,每天都是期末考,每一天,而且不是早上考一科,下午考一科,是每個小時都在考一科,每個小時都在考,每天都在考,一個禮拜七天,我們是算日曆天不是工作天,我們一星期是七天。所以如果你們要想像未來的工作是什麼,這個部份不只是我們公司。像有些同學在晨星、聯發科等,如果要進這種公司要想像的就是像剛剛講得那樣,每天都是期末考週,每個小時都在考試。

問:最實際的狀況是像說,我一小時候有一個案子要交出去嗎?

做一個東西可能同時可以提供給兩三個案子用,問題是,寫程式一定會有bug,軟體品管那邊的人就追,會一直要修,同時要修問題,spec也會改,又有新的要求,你也會有一些問題,這些都在追著你。

但是這間公司的流程管理很差,每一件事情沒有優先順序觀念,只要有事情就是ASAP,事情多但是所有的事情都是ASAP。像我這星期四請假,當晚收信有兩百八十幾封信。我只是一個資深工程師,可以想像主任工程師、主管他們一天是什麼樣子狀況。

我覺得這個問題,我們那時候想像大概就是一星期一個Deadline,現在大三應該是待在202吧,可能會就是星期一個Deadline,或是有時候沒有Deadline。如果有人要知道未來工作是什麼樣子,我提供的資訊就是就每天都是期末考,一天八科以上,一星期七天這樣。這樣就可以想像未來的工作。

唸書的時候,project搞砸了、作業搞砸了、考試搞砸了這些都是自己的分數,可是出來工作,東西搞砸了,那個壓力和對自己的成績負責是另外一回事,會承受的壓力絕對遠大於...也不能說做爛了,扣一點分就不做,當然可以擺爛,你不爽可以把我開除呀,如果是這種心態我當然沒話說,可是如果不是,當然不要有這種心態。這種Deadline的壓力和作業期末考的壓力完全是兩回事。而且出來工作有太多政治上的考量、問題。

問:團隊內會分黨派?

不是,所謂的政治問題不是這個意思。像是一個問題過來了,唸書的時候,我就是做出來,跑完測資可以過ok就好了。工作不是這樣,我們常常在蒐集證據,每個人都over loading,工作量爆掉,我們要收集證據說,哪個部門常常出包害我們也連帶出什麼問題,然後要發信給大老闆們說以後有我們的問題他們要先看,我這只是一個例子,還有很多很多的狀況,你還花很多心力在這種事情上面。這些都不是在學校時我曾經有想像過的。

問:這樣會不會造成沒有自己的生活?

對呀,沒有自己的生活呀。我維持了有三、四個月就是家裡、公司。一直到四月還五月初才跟同屆的同學約吃飯,這是大概是四個多月來第一次離開家裡公司這條路。並不是說我的個性如此,而是沒有時間。有時間難得可以休息都回家睡覺了。不會有自己的生活。沒有自己的生活,薪水又不高,工作內容又不符合預期,那為什麼還要在這裡呢?

問:所謂薪水不高是?有到十萬以上嗎?

跟工作付出的心力不成比例。年所得平均有。

問:國外會不會比較好?

國外好很多,國外對於勞工工時概念與台灣完全不同,差很多。

在公司工作和在求學階段比較,最不能適應的一件事是什麼呢?

不是說不能適應,是沒有想到。大家都可以念到台大資工系畢業。能力都不是問題。我甚至覺得計能力而言,以大部分業界的需求,甚至不需要台大資工系這種這麼操的訓練方式出來的學生,跟業界比起來實務跟學校的操法也完全不一樣啦。不能適應的是搞政治那一套,人與人之間的問題比程式還要複雜,不過我相信工作都是這樣啦,這應該是學校與出了學校之後的差別。

舉一個簡單的例子,有一隻手機,玩某一個應用程式會導致系統重啟,大家就開始釐清,為什麼只有這個應用程式會出事,到底是誰的問題,系統就怪應用程式,應用程式就怪系統。像我的部門有另外一個責任,就是剛剛講負責穩定度嘛,這時候就要跳下來釐清到底是誰得問題,這個就是吵翻天呀。

問:會有很多的時間在開會上面嗎?

看開會的人主持會議的能力。有的主管會讓大家都站著,大家都站著大家都淚就會趕快把會開完。

問:大家太急會不會造成效益...?

開會之前很多東西就要準備好呀。

工作上所需要、面對的問題,與大學時候所學習到的知識的相關程度?

還是看部門。以我自己部門為例,因為我不是邏輯、硬體有關的部門,我可能只有數位系統設計跟數位電子學跟我沒有關係。如果是邏輯部門這兩個當然很重要。對我而言,系上的課程沒有一門不會不需要。

你以為我們真的在coding的工程師,線性代數沒有用嗎?線性代數用來分析一些記憶體問題這些都是有用的,有一些程式背後邏輯要設計時,這些都是很有用的,機率,當然也很有用呀。

問:如果剛剛有兩門課是因為工作類型而比較不需要,剩下的課程其實都需要?

對,真的都需要。從大一開始舉例,c/c++,java一定都需要,UML很重要,UML這門課真的不應該放在大一,應該放在高年級,真的要對系統概念比較熟悉才知道那些東西在幹麼,實際上在做部門間的分工、整個程式設計的流程以及模型都很重要,這真的是很重要的一門課,我很後悔大一那時候沒學好。

問:我想大家都有機會後悔。那業界真的會用UML來做溝通?

會,而且真的很重要,會很嚴謹。就不會再有解釋,就是flow畫出來,就是這麼回事。你們現在還沒大四,大四除了資料庫就是專題。資料庫真的是很重要的一門課。一個sql下去,會寫跟不會寫的效率真的差很多。

系上的課,我回想起來我不覺得有什麼不重要的。很多人會懷疑compiler到底有沒有用,compiler好重要,對於coding出來東西的效能有很大的影響,要實際知道這一行真的編譯下去會變成什麼樣子,才有辦法想像要怎麼改善效能。

在大學的時候很少有課會要求效能,大部分是要求正確性。出來業界的體悟就是,實際上一個產品,正確性是不夠的,RAM用越少越好,不是有個標準,而是大家會一直問你,真的不能再少嗎?快,還要更快。這很多東西跟以前在學校不一樣。我自己覺得,在學校時對效能和記憶體的要求都比較少。

相關程度?我覺得高度相關,但是學校還少教了很多東西。應該也不是少教,都有教啦,只是沒有要求。沒有要求的部份大家就自然只是知道而已。

問:有些人說課本上的知識在業界派不上用場?

像Android是一個全新的東西,他裡面很多架構都自己來,像他底層是用Linux kernel,像以前學的系統程式、作業系統這些都會用到,但google又自己疊床架屋,加了很多東西上去,如IPC,google又自己加了一套自己的IPC,在學校學到的觀念拿出來用一切都說得通,但是細節都會不一樣所以剛開始看到會覺得很奇怪為什麼這樣搞,還有很多例子都是這樣,但大觀念沒什麼變,所以我覺得學校很多課程不要覺得他不重要,以後會遇到什麼都不知道。

對於大家都在Android 3.0,為何HTC推出的新平板仍僅採用2.3?

這個問題非常非常簡單,因為google不給我們code呀。

因為當我們想要做平板的時候,那時候其實是2.2,我們有很多東西都是守口如瓶,其實我們平板做很久了,其實從Android 1.x 的時候就開始做,那時候其實很不適合平板就放棄了。一直到2.1~2.2在做就確定是要出了。會做這麼久的原因是因為公司想要跟其他家平板不一樣,公司花蠻多心力在想,要如何跟其他家有差異,如果是一個有理想得人作到這個部份,他應該會很開心,因為我們在這個地方真的花蠻多力氣的。

剛剛講了很多負面的東西,是因為我們是實際上要負責一個東西實作成敗壓力,有些像做概念性、市場研究、使用者經驗研究的那種,公司花蠻多心力研究的。

問:Google為何不給code?

大家都以為我們跟google的關係很好,其實我們從2.2開始我們都是等Open source。2.2比Open source早一個星期拿到,以前2.1是只要Google有新code就拿到,從2.3開始是等Open source。

我們自己內部工程師的想法是,因為我們發現Android很多問題都沒有回報給google, 所以google就不高興,而且我們對android介面改太多,幾乎不認得那是一隻android phone,我們公司要讓使用者覺得這是一隻htc手機,而不是這是一隻windows phone或android phone,讓使用者有相同的使用者經驗。應該google為此不太爽。像有同學學長在其它公司工作,他們都知道sony、motorola、三星早早就拿到,我們都比較晚拿到。

想要進入職場要有些什麼準備?

一定要忘記自己是台大畢業的。我想信很多人會一直把這件事情放在心上,不管是有意或無意,總是會有一些這種想法,不管是覺得優越還是榮耀,但是一畢業出了校門就請把他忘了。

我覺得這件事情要忘掉,因為真的不重要,當然你會碰到有些人說你台大畢業耶怎樣怎樣,人家會對你有一些期待,但是聽聽就算了,重點是一定要忘記這件事情。然後說實在台大畢業他是有什麼了不起?第一個是這件事情一定要調整好,出去外面大家就是看績效、表現。從你報到的第一天開始你是哪裡畢業的就不重要了。然後要嚴正駁斥校長說的不要在意薪水。我自己把他這句話詮釋為如果有個工作是你充滿熱誠、是夢想的話那不要在意薪水。但工作是為了賺錢,怎麼可以不在意薪水?

如果對一些技術性層面的東西你有非常高的期許的話,這邊真的在軟體方面的技術,至少在android team這邊,我覺得我們在很多方面甚至走在google前面,很多時候是我們發現問題,然後我們自己解決掉。對於很想磨練技術的人進來,可以學到很多東西。

問:目前為止,業界的主管都是直接用有那種管理背景的嗎?

沒有,有很多是研發人員升上去,不過不會有這家公司從基層幹上去。職位升遷最快的方法是跳出來,不是在這邊待的久。在這邊待久,這個會累積快沒錯,但是用跳的會累積的更快,包含職位。

問:沒有專業背景怎麼領導?

我們公司什麼東西都叫你ASAP,理由之一就是有很多專案經理,他們不懂什麼事情是重要的,如果你要當PM,最好還是有幾年工程師的背景。學校出來就做這個,我覺得還是會被唬得一愣一愣的。

沒有專業能力,就無法分辨什麼是重要什麼不重要。例如手機自己會重開這個問題,可能的原因有千百種,如果品管報了一個手機重開,那他到底原因是什麼?到底嚴不嚴重?這些都要有能力分辨,才要來追這個問題到底要不要趕快修。如果原因是硬體問題,你要叫軟體的人去解嗎?我們公司有時候會有工廠有問題,要軟體的人去看。

問:這種負責管理的人不具專業能力的問題為什麼沒有解決?

因為上面沒有發現這種問題呀。因為產品還是照樣出來呀。像那種半夜兩點會打電話給你的都是那些專案經理,說有東西好急喔,他們是有多急?專案經理其實很累,因為不會做事情才會累,他們又不是真的下去coding,事情真的有這麼多嗎?都在打電話。

我看過最好笑的事情,上星期端午連假,有個東西我星期天晚上就已經處理完了。隔天過了24小時,專案經理卻發信,說那個誰趕快把這些問題釐清,後面還加ASAP,我就回信說我24小時前就已經回了。他就不敢講話了,他連自己的事情都沒有做好,那每天都工作到這麼晚,難道是我的錯嗎?

專案經理不是主管,他可能職稱是工程師。他的身份可能跟我一樣大,甚至比我小,也不是他可以管我,是他要統籌整個案子事情,成敗他們要負責。

問:主管會有專業背景嗎 ?

會呀,研發人員的主管一定都是專業人才,這個倒是沒有問題。專案經理沒有專業能力是一件很糟糕的事情。

工程師會不善交際嗎?

其實是否不善交際還是個性的問題,可能只能說工程師不會將交際能力做為一個門檻,雖然有些部門會有這樣的需求,比如說比較偏管理的工作,但大部分的狀況下交際的能力是不會影響到工程師這份工作。

對於未來工作的重要能力及大學課程?

review code是一個蠻重要的能力,全部從頭寫幾乎可以說是不可能,而在review code的時候學習用一些tool也是很重要的,除了像gdb一類的debugger之外,學會使用看performance的工具也是很重要的,現今系上的課比較偏向準確度的訓練,在performance的部分就相對比較少(此處是指尚未做課程改革的時候),還有一件事情是大家都會很習慣助教給的測資,要養成習慣測試,自己去想自己去生,各種可能的情況,可能讓你的程式爆掉,這種應該要從大一就要有習慣。