Saturday, August 27, 2016

來日本工作半年的心得



上次日本工作三個月的心得寫完之後有收到一些不認識的人寫信來詢問一些在LINE工作的事情,有點意外。而在這三個月又發生了一些事情,覺得可以繼續分享給大家。

Document的重要性

做軟體開發的人肯定都聽過寫文件的重要性,但是真的會去做的人我相信不多,說穿了就是因為.......懶(笑),但是如果能養成這個習慣的話肯定會讓開發更順暢,而後續接手的人可以更快的上手。

而Document的格式就看個人喜好了,只要內容可讀性高且方便閱讀的話我認為就可以了

以我最近做的一個功能來說,開發之前有Planner會先把這個功能的規格(Spec)的重點列出來,主要就是wireframe跟簡單的流程,文件格式就是Confluence(wiki)的頁面。所以在看文件的時候腦中大概就有感覺應該如何去設計,可以減少因為個人的解釋不同而造成的誤解,導致花額外的時間去做修正。而且這樣的好處是不論誰來做這功能或是中途接手的時候,發生問題的可能性就大為降低。

除了功能上的說明文件之外,軟體設計上如果也有一些文件輔助的話也是大有幫助。假如今天開發一個功能需要Client, Server同時進行,如果先把API的呼叫方式與Data Model的設計先寫成簡單的文件,這樣就可以兩邊同時進行開發,待功能完成之後再進行整合即可。甚至文件夠完整的話,只要把Unit Tests寫完整,在整合的時候就不會有太大問題發生。

除了這些好處之外,我個人覺得有文件的最大優點就是接手的人可以知道以前的人到底幹了甚麼事,為啥會留了這些大便在這邊(笑)。我相信做軟體開發的人大部分都是接手別人的程式碼比較多,自己從頭做到尾的機會反而少,所以為了別人好,也為了自己好(因為會被後面的人幹譙....哈),養成寫Document的習慣吧。

還是Code Review

在我之前的心得文裡面有提到Code Review的好處跟重要性,之後有跟蠻多朋友聊到,很多台灣的公司其實並沒有注重這方面。當然我是覺得有點不可思議,我以為Code Review應該是作為軟體開發人員所需遵守的一個不成文規定。當然沒有Code Review的主要原因不外幾個

  • 時間不夠 
  • 看不懂別人寫啥 
  • 小組裡面沒有這個習慣 

我相信每個Team有自己的文化與習慣,但是就我在LINE的這半年來,我們Team的Code Review蠻紮實的,我覺得有這些好處
  • 快速熟悉整體架構 
  • 程式碼風格一致性 
  • 發現錯誤 
  • 學習別人的設計 

- 快速熟悉整體架構

每個人都有當新人的時候,尤其是當你加入開發一個已經順利營運而且有數億人在使用的龐大系統,一定會有一種茫然的感覺。而且也會對自己的修改沒有太大的信心


- 程式碼風格一致性

每個人都有自己的開發風格,基本上是沒有問題。但是如果每一個參與開發的人所寫的程式碼都是自己的風格,那看起來就雜亂無章了

- 發現錯誤

是人都會有犯錯的時候,我相信沒人敢說自己從來不會犯錯,所以Code Review的最大好處就是讓更多眼睛來找出錯誤,當局者迷旁觀者清。當然有時候也會有大家都沒發現錯誤的時候(笑)

- 學習別人的設計

每個人都有自己擅長的領域,在Code Review的時候看看別人的設計,通常也可以激盪出自己新的想法

以上幾點是我來日本之後才深刻體會到的,雖然以前在台灣工作的時候都有做Code Review,但是比較起來是做個形式居多,真的有從Code Review當中學習東西的機會反而不多。所以我個人覺得台灣的軟體開發能力要提升的話,對Code Review的重視程度必須要再加強呀。

資訊分享

在最近三個月當中,公司開了一次福岡的全社大會,主要是各部門主管報告2016上半年的成果與下半年目標,還有介紹一些新上任的高層。雖然在前公司也常常有這種全社大會,但是主要是以安定軍心為主,反而不是以分享成果為主。所以對我來說算是一個全新的體驗,至少我在台灣待過的公司還沒經歷過這樣的模式。

不知道是不是日本的公司都是這樣還是只有LINE Fukuoka是如此,但是我覺得這樣的全社大會比傳教大會來的有意義多了,至少有機會了解別的部門在做些什麼。舉例來說,我在前公司從來就沒有機會知道行銷部門或是QA的年度目標是甚麼,但是在LINE Fukuoka反而有機會吸收到這樣的消息。甚至在前公司連其他Team在做甚麼專案都不一定知道。

人員交流

前一兩個月剛好有東京其中一個開發center來福岡workshop,目的是去福岡旁邊的能古島上打打迷你高爾夫,烤烤肉(大誤....)

其實主要是各團隊來分享自己團隊的專案,順便大家互相認識。活動之前預先分好幾個小group,每個group大約四個人左右,兩個福岡兩個東京的。一開始就是大家自我介紹跟介紹福岡辦公室的一些環境。但是跟我一組的福岡同事就比較辛苦,基本上都是他在介紹我只能在旁邊跟著點頭....XD。雖然溝通上跟東京同事不太順暢,但是也還是大概了解對方在做些什麼,而且我這時候才知道原來跟日本人講Android對方很有可能聽不懂的(就好比中文要講安卓一樣)。

就我印象中在台灣很少有公司會有辦這樣的交流活動,就算曾經待過數百位軟體工程師的大公司,也沒有過這樣的活動,是還蠻新鮮有趣的,而且看到那麼多臥虎藏龍的同事,也是一個讓自己不敢太鬆懈的一個方式。


後記

目前覺得福岡是一個蠻適合居住的城市,加上離台灣距離也蠻近,而LINE Fukuoka的開發部門工作氣氛是我待過的公司中算是最優的,而且也沒有傳統日本公司的那些文化,有興趣到日本工作的人應該可以考慮來LINE,我相信應該會有不錯的收穫。

6 comments:

Unknown said...

你好,我是香港人,最近也在應徵LINE的位置,可以問你一些問題嗎?我的email是minekaoru@gmail.com
謝謝

Winnie said...
This comment has been removed by the author.
Winnie said...

我們公司Code review做得非常確實
雖然有點小壓力
但是真的學得到很多東西!
真是太棒了~~

很喜歡日本人嚴謹的態度
而且上班沒什麼人偷懶或是滑手機的@@

我還沒改掉滑手機的壞習慣。。。。。。

Santos Chen said...

請問一下在工作時,可以離開座位休息一下或去買個東西之類的嗎?

Winnie said...

看公司耶
我們公司可以~

Santos Chen said...
This comment has been removed by the author.