Saturday, May 28, 2016

來日本工作三個月的心得

大概快五年沒有寫blog了,但2016年因緣際會來到日本 LINE Fukuoka工作算是人生當中的一個重要轉折,自己覺得需要紀錄下來

為什麼到LINE

基本上沒有為什麼, 應徵看看就上了...XD.就某天放假在家看到headhunter寄來的職缺裡面寫了一個著名的日本網路公司,不會日文可.當時心裡就想這應該是LINE吧.不需要會日文還蠻吸引人的.就跟headhunter問了一下,是LINE沒錯.想說那就試試看吧.

面試

一開始流程是先有個pre-test,通過的話才會開始第一階段面試.收到pre-test的時候蠻訝異的,基本上沒什麼技術性的問題,都是一些軟體開發的常識(Java偏多),或是一些 Open Question.可能是LINE希望找來的人都是有經驗的,所以才會有這樣的考題.

第一次面試的題目就是兩個程式題,一個小時內寫完,印象中是Fibonacci number但是要解一個數值蠻大的input,用recursive去做一定做不出來,  基本上是一個Dynamic Programming問題.

第二次的題目也是一個小時,但是有13題,範圍涵括了演算法 資料結構 網路安全 Backend架構 android ios等等,範圍相當廣泛,但都算是基本的觀念 老實講不難,但是後來聽headhunter說很多人反應很難,讓我有點意外.寫完之後Engineer manager會一題一題問你為什麼答案是這個,如果只是臨時在google查來的答案,在這個階段基本上就會被問倒了

最後一次面試就是由Engineer head來問一些問題,我印象中就是軟體開發的流程,有沒有跨國合作經驗之類的問題.

因為沒有要求日文能力,所以基本上都是用英文溝通,也因為大家的英語也不算太好 所以在問答上並沒有很順暢 XDD,但彼此還是能知道對方講什麼,這也是一件蠻不容易的事情

最後當然是錄取了,所以現在才會在福岡.哈.
錄取的時候並沒有說進來之後是做什麼,也就是說如果你比較擅長android,進來之後並不一定去開發android.感覺找來的人比較屬於full stack型的,哪個project需要人就去哪個project.像我之前主要是開發android + ios,到LINE之後反而去做backend + 一點web front-end.  這樣的方式我覺得很棒,軟體開發重要的是那些基礎知識,如演算法, 資料結構等等.基礎扎實的programmer不管開發什麼都能得心應手, 在前公司也是看到好幾個這類型的工程師.

原因


當然會應徵LINE主要原因還是因為在前公司與來自世界各地的高手合作之後,覺得自己能力尚且不足. 除了英文不夠好之外, 跟高手合作所獲得的經驗值比自己摸索來的多太多. 以LINE的成功與規模來看,應該也是個臥虎藏龍的地方,這是一個主要吸引我的點
除此之外每年都要來日本滑雪或是看演唱會,已經不知道被日本人賺走多少錢了, 所以有這個機會能來日本工作,總是要想辦法討回來 XD.

工作文化


來日本之前對日本的工作文化都是從漫畫或是日劇裡面獲得,加上很多朋友分享一些日本上班族的文化,像是陪長官喝酒呀,敬語的使用等等,會讓人覺得跟台灣很不一樣,反而比較像是當兵的感覺.

但是實際上來了之後發現LINE不像是印象中的傳統日本公司,感覺比較像美國的風格.舉個例子來說,在這上班不需要穿西裝打領帶,基本上我還沒看到有誰是穿西裝來上班的,甚至還看到有人穿短褲一身輕便的來上班(我自己也穿過一次短褲去上班 XD).
也不需要陪長官應酬,就算是部門聚餐有事不參加也不會有壞印象.同事之間的對話也不像日劇中的那麼上下分明.不過我想應該只有LINE是這種氣氛,其他的日本公司應該還是比較傳統一點.

整體來說工作的氣氛跟在台灣差不了多少,適應上並沒有太大問題,除了日文之外.

上下班的話基本上要打卡,但是開發人員是責任制,所以並沒有要求上下班時間,所以也是有那種很晚來很晚走的人,但是其他的部門不是責任制,所以就有上下班時間的限制

語言學習


雖然面試的時候不要求日文,但是公司還是會希望你日文能有一定的程度.所以對於日文程度很差的人(像我 XD),公司會補助日文課程.所以我是半天上日文課半天上班.對於其他日本同事來說,公司也希望加強大家的英文程度,所以有提供英文課程 (雖然我沒上過),然後每三個月好像還要考一次試.當然對於我來說 這三個月除了日文比之前好一點點之外 英文也進步了一點.可能是因為沒什麼機會講中文 不得不講英文吧 lol

電腦配備


每個工程師配的都是macbook pro 15吋外加一個螢幕,因為日本鍵盤的 layout比較不一樣,所以一開始還可以要求美式鍵盤的macbook pro. 但上面就沒有注音或是倉頡的圖案了. 另外可以選擇要不要滑鼠或觸控板,但是我覺得用不著就沒要求了.

軟體開發流程


我目前是在backend的team, 開發方式也是以git + Github為主,發PR來code review,  這跟很多公司的開發流程沒有什麼不同.但是比較不同是code viewer的方式

Code review


一般來說,現在大部分軟體公司都有做code view,就連我以前待過的h公司也對code view很重視,但以前在h公司(現在有沒有改變不知道) 通常都是由所謂的 RD leader或 RD manager來做code review,但這就有一些盲點.首先 RD manager或是 RD lead本身的技術能力適不適合review就是一個問題,例如開發Android,如果 Manager或 Lead本身只熟悉 C++和 Windows,但是對 Linux和 Java並不是那麼了解的時候,那這樣review就比較沒有太多用處,因為不容易直接點出問題.
在前公司遇到的另外一個情形就是比較資淺的工程師覺得自己能力不夠,不敢或不會去review資深工程師或是其他工程師的程式碼.這樣也少了一些學習的機會.

但是在現在的 team, 我覺得 Code Review就變得很有意義.每個人發 PR也是會指定一個人 review, 但這個人的角色比較像最後負責merge PR的人.
原則上只要發了PR就會有其他的同事幫忙review,但不一定是這個task相關的人等,可能是剛好看到還怎樣,只要是同個team的人看到就會幫忙review, 而且都會給有意義的建議而不只是隨便看看.
譬如我之前改了一些javascript的東西,就有同事留comment問這樣寫會不會有XSS的問題,或者是發現你有寫得不好的地方,也會留 comment說怎麼改會比較好.
這樣的方式對提升code quality我個人認為是相當有幫助的,也真的比較有code review的感覺.
這對新加入的員工來說,更可以有效率的學習整個架構.
像我之前比較少backend跟javascript的開發經驗,但是有了這些 comments,很快的就對整個架構有一個基本的了解,而且也知道應該怎麼修改比較適合,這遠比自己花時間研究還來得有效率.

Schedule


在前公司常常聽到的schedule, schedule, schedule,在我來LINE的三個月內完全沒聽到過,這讓我蠻驚訝的.我還記得一開始被分派去做一個內部的系統時,我問了一下deadline是什麼時候,結果得到的答案是"as soon as possible".這其實是讓人有另外一種無形的壓力,除了不能拖太久而且也沒藉口說時間不夠隨便弄一個版本就丟出來.
不知道其他的project是否也是如此,但是這樣的方式個人認為是好事,除了是一種良性的壓力之外,更不會因為時間緊迫不斷累積的技術債而最後變成一個很難改變的大包袱.

同事互動


對於一個日文不行的外國籍員工來說,溝通確實是一個很大的問題,畢竟在公司裡面能用英文聊天的同事不多,但大部分的人很nice也會試著用英文回答,只是日文不好就沒辦法講一些垃圾話實在有點可惜哩,還好在這邊有認識其他部門的台灣人,還是多少可以用中文講一些垃圾話解放一下 XD

話雖如此 在LINE工作這三個月我覺得以下幾點很棒
  1. 每個人都很自動自發的學習,而且樂於分享,每個星期都有一些分享會.
  2. 如果遇到問題請教別人的時候,大家也很樂意幫忙找solution.不會有那種"這不關我的事情 不要來問我" 或是 "先證明是我的問題再來問我" 的感覺而且也沒感覺有那種"留一手"的人
  3. 出包的時候,不會去討論兇手是誰,反而是討論下次如何改進
  4. 開發室的外籍員工很多,有時候有些內部溝通的日文訊息會有人幫忙翻成英文
  5. 同事還蠻常辦一些活動的,比如櫻花季的時候就會相約去烤肉

日本生活


雖然來了日本差不多20次,但這是第一次在日本待了那麼久,發覺到有一些小地方挺有意思
  1. 在商店用大鈔買東西找錢的時候, 店員會一張一張數給你看再給你剩下的零錢,這樣的做法除了減少找錯錢的次數,零錢也不容易掉.在台灣常常都是零錢放在紙鈔上整個給你,不小心零錢就掉在地上了.
  2. 馬路很少看到東補一塊西補一塊,在台灣開車想到那個路平專案就一肚子大便
  3. 在福岡食物的費用沒想像中的貴.基本上房租水電之類的比台灣貴,台灣的房租水電真的是很便宜.便宜到我覺得一直這樣下去遲早會出問題.至於食物飲料方面比台灣貴一些,但是沒有貴很多.像也是有一個330円的便當,超市的便當也大多500有找,而且不難吃
  4. 汽水之類的飲料跟調酒價格差不多,特價的時候還比汽水便宜...
  5. 在台灣 路邊攤通常比較便宜,但是在福岡, 路邊攤(屋台)跟去餐廳吃飯的價錢差不多, 但是舒適度差很多,完全就是吃氣氛的 XD
  6. 日本的交通費的真的爆炸貴,地下鐵最少200起跳,我住的地方到公司(博多站)單程260元,但是只需要花費8分鐘......去個遠一點地方來回3000円跑不掉...

後記


自己蠻慶幸當初決定離開h公司去不同的工作環境體驗,總是覺得自己不適應大公司的那種工作態度與氣氛 .運氣很好, 遇到很多優秀的同事,也從當中學習到了許多.在現在變化越來越快速的IT產業裡,不接受變化與學習新東西,很容易就會被時代淘汰了.其實有時候不需要考慮太多,做自己想做的就沒錯了.

2016/12/27更新: 沒想到有一些人有留言, 結果我在半年後才發現....如果有想要知道相關的訊息的話可以mail給我, wangyung@gmail.com


11 comments:

Anonymous said...

台灣的房租很便宜?!那個是日本的房租太貴……

Anonymous said...

台灣房租是真的便宜

Chris Chan (moming2k) said...

台灣比其他國家是便宜的了

Anonymous said...

您好~~我現在也在面試同樣的職位。。。
請問可以私信問你工作或面試相關的細節嗎~謝謝你
hatsukiotowa@yahoo.com.tw

Yan H. said...

你好,請問一下 假如有想要到日本工作想法的話,本身的能力與技術是否是要非常的足夠呢
例如,利用java web開發網站,需要熟知spring,struct,hibernate等等 謝謝

Anonymous said...

你好,我現在也在應徵同樣職位,請問可以pm問一下工作、生活和面試相關細節嗎?
m.maoro@gmail.com
謝謝!!

f said...

你好~ 請問技術要求方面, 一定要有java/web/app開發的經驗嗎?
(我只有c#/desktop開發的經驗...)
kfcpri@gmail.com
謝謝~~

Freddie Wang said...

sorry各位, 現在才注意到有留言...

To hatsukiotowa:
可以mail給我 wangyung@gmail.com

To Yan H.
基本上是的, 但是應該還不需要到完全了解spring本身內部的實作方式
大致上了解spring的優缺點與為啥要用spring開發而不是用其他的framework開發應該就足夠了

To maoro:
可以, 你可以mail給我 wangyung@gmail.com

To f:
基本上基礎能力夠的話 有沒有經驗不是那麼重要
但是沒有web/app的經驗, 至少也要知道流行的開發模式或是framework是什麼
重點是能不能很快地學習一門新的技術
我也是沒backend經驗, 一進去就是去做backend相關的東西

Mao said...

我刚发邮件给您了,麻烦查收一下,谢谢

Chung Yiu Lam said...

有像google公司😂 除了IT職位還有其他opening posts嗎

達Ming said...

幸好搜尋到你的blog,我幾個月一直都有留意到line fukuoka在香港請Development enginner,不需要懂日文。
我都很心動,但現在看來可以放棄了,自己是Microsoft系的人,寫C#/ASP.NET, Frondend, 或Data warehouse類, CRM,ecommerce analytics類的人,因為自己都快36,這行頭都做了快15年。

似乎line需要的人應該沒有我的位置t_t