LINE TECH FRESH: 從實習到成為正職的經歷

前言

Hi,大家好,我是 LINE Tawian Engineering 的 Stanley,於 2021 年 8 月 加入 LINE Taiwan,在此之前的 1 月我參加了 LINE TECH FRESH – 技術新星人才計劃 的面試流程,並於 3 月成為 TECH FRESH 加入了 LINE 的大家庭,在接下來的文章內,我將與你分享我是如何從了解 LINE 的服務、參加活動到正式成為正職員工的過程與經歷。

若不知道什麼是 TECH FRESH 的同學們,可以參考 LINE TECH FRESH – 技術新星人才計劃,實習經驗大公開 。

從認識 LINE 開始

LINE 可說是在台灣家喻戶曉的 App,想必大家對它一定相當熟悉,不管是家人、朋友聊天互動,LINE 將大家 LINE 在一起,而 LINE 本身也提供了許多服務,有 LINE TODAY、LINE Pay、LINE 購物、LINE 旅遊…… 等,LINE 致力於透過 AI 來提供使用者最貼近他們日常生活的服務,這也是我喜歡 LINE 的一個原因。

而 LINE 本身服務眾多,服務的背後一定有著開發團隊的努力,若想更多了解 LINE 的專案以及團隊,參加活動是個不錯的選擇,可以從議程中了解專案或是與休息時間與講者間的私下互動,來了解公司目前運行的專案技術、工作模式、大家的日常等等。

這邊就要稍微講到活動了,LINE 常常舉辦各式活動,活動中皆會有分享服務使用的技術、遇到的難題,以及介紹新專案、目前的職缺等。LINE 的活動大部分都可以免費參加,其中各種活動的用意都不太相同,有小型開發者聚會、Recriument Day、跨國的 Dev Day、台灣的 TechPulse 等,更多詳細資訊你可以加入 LINE Developer 的粉絲團或 OA 帳號來追蹤活動訊息。

而當時正在讀碩士的我,其實也對職涯發展還沒有特別著墨,剛好就透過活動的廣告來了解 LINE 的活動,過程中了解到其實 LINE 針對實習生有一個 TECH FRESH 計畫來進行人才的培養,於是我便把握了這個機會,先從認識 LINE 開始。

從 2018 年來,我陸續參加了多項活動(應該有照順序吧?),可以點擊連結前往看看活動資訊喔:

更多影片資訊可以參考這裡

其中有線上也有線下的內容,我參加活動主要目標是想多了解服務的技術內容,以及與講者私下的互動,甚至是到 LINE TAIWAN TECHPULSE 2020 時,我被部門的 Lead 認出來,接著大概一到兩小時我們就在海報前聊聊自己專案遇到的問題、會使用的技術等等,等於是先 promote 一下自己,留個印象,藉此也認識一下未來的工作夥伴,除此之外也大概了解自己未來可能會需要使用到的技術和參與的專案。

進入 TECH FRESH

當時的 TECHPULSE 是在年底,而 TECH FRESH 每半年會招收一次人才,當時是 1 月開始進行面試流程,3 月正式開始實習。

在 TECHPULSE 應徵的流程內,會有前測的流程,我們會開發一個 LINE BOT,用於介紹自己,這部分會先考驗在閱讀官方文件、使用 LINE 的服務進行開發以及部署相關的能力,其中也可以發揮自己的創意加上屬於自己的特色。

例如:我在這次測驗中將程式碼寫的很 flexible,將 LINE BOT 透過資料結構方式讓使用流程不會被寫進 code 裡,只要更新 config 檔案即可更新整個 LINE BOT 的流程,達到易擴充、修改的效果。

下一階段則是面試,各部門的 Lead 會在這階段看過資料,若 Lead 對你有興趣或覺得你可能很適合這個專案,便會邀請你參加面試,面試時分為筆試和 Lead 之間的面試,

筆試部分考了幾個關於資料結構、演算法的選擇題,還有作業系統、前端的 header type 申論題等等,內容其實不會很難,至於手寫程式題僅有一題,且需要動態規劃解,整體寫下來感覺這部分佔比應該不是太重。
至於面試部分,除了自我介紹外,Lead 會介紹一些 LINE 內部的專案,並問問看你是否有興趣參與的專案,而在面試過程我則被問到自己做的專案用了什麼服務,是怎麼串接,為什麼考慮使用這些服務等,這些並沒有標準答案,單純是 Lead 想了解你對自己寫的系統是否了解,以及考量的點是什麼。整體氛圍比較像是聊天,其實並沒有太大的壓力。

TECH FRESH 的面試流程相比正職來說不會太複雜,關卡數較低,這階段結束後會有一個線上的約 HR Interview,聊聊關於你的學業狀況、預計一週要實習的時間以及其他綜合評估,通過後接受 Offer 即可以正式成為 LINER。

而工程部門不會規定 TECH FRESH 只能待在哪個專案,由於自身喜歡挑戰各種面向,因此一開始就先被分配到 LINE MUSIC,此時的 LINE MUSIC 正在進行 LIVE 直播的開發,包含售票、購票等等,希望能將這些功能推出,可說是十萬火急。這部分我使用 Vue.js 以及 server side rendering 的 Nuxt.js 進行開發,主要在這階段學習使用開發工具,如:figma、Zeplin 等,以及如何依照 spec 去完成開發項目,和 Designer 之間怎麼做溝通,當中則是遇到 Designer 開的 spec 其實在前端頁面上是無法做到的,這時候就會必須看看有沒有 workaround 的方式去解決,若沒有的話要如何明確告知 Planner 這個功能實作上有技術上的障礙,可能要換一個設計方式。

此外,我參與了另外一個專案是內部 FaceSign 臉部門禁系統,由於公司更換地址了(換到很氣派的辦公室,可以看看這個影片喔)並導入了門禁系統,這個技術在 TECHPULSE 2020 也有展示,可節省配發實體卡、訪客紙本登記的成本,在大型活動更是可以省下時間。當中我參與的是 FaceSign CMS 的開發,CMS 有點像是 LINE 服務的後台管理,這階段我學到的是使用 Go 進行後端的開發,以及練習了一下 SQL 語法,當然還有 Vue.js,而另外學到的還有 lottie 做出好看的前端動畫。

LINE TAIWAN TECHPULSE 2020 掃臉系統

相較於其他 TECH FRESH 我的實習內容都是服務開發相關,這邊依照每個人興趣不同而有差異,我們也是有 TECH FRESH 是進行論文的 study,並建構資料模型等。

剛好這兩個專案做完,遇到了台灣 COVID-19 疫情爆發,公司在政策上反應也相當迅速,TECH FRESH 原本是需要到公司進行上班,也改採申請 Work From Home 就可以透過 VPN 進行遠端辦公,這更影響我們現在的辦公形式(此處稍微介紹 Hybrid 1.0)。

在此之後我又參與了兩個 Team,EC 的 SODA Team 以及 GCP (Global Content Platform),在 SODA Team 時,我負責對 LINE 的 campaign page 進行 Web component 的撰寫,並打包成 js deliver 出去給 GCP,我參與了敏捷開發的流程,正式加入 Daily Scrum、並首次使用 story task 為單位票號,進行 git 的操作,以及發 PR 進 code 的部分,技術方面則是使用 WebComponent, LitElement, Storybook UI 寫 stories 等。而接著告段落後則轉到 GCP,結果竟是使用先前寫好的打包 js,串到 CMS 的 editor 上,好方便讓 operator 用 editor 就可以設計 campaign 頁面。題外話部分:在 GCP 部分遇到了 js 文字敘述以及邏輯沒統一的問題,而這部分由於之前參與 Web component 的撰寫,code 也在電腦上,所以我知道要怎麼改以及怎麼更新,不過因為當前在 GCP 下,所以還是得回報給另外一個 Team。

在 GCP 參與專案期間則是使用 React.js, Grape.js 進行開發,在這邊之前沒有寫過大型 React 專案的經驗,所以這部分也花了一些心力在理解 code 架構。

以上就是我在 TECH FRESH 參與的所有專案了,我是目前 TECH FRESH 第一個參與這麼多專案的,每階段都有吸收到一些經驗,接觸的同事(LINE 內部我們稱同學)也非常多,只可惜遠距辦公少了實體活動的經驗,期待接下來有更多機會可以在實體活動與大家見面。

接下來就介紹一下轉正的流程以及轉正後的差異吧~

轉正流程以及正職後

轉正流程

TECH FRESH 計畫每年會提供機會給實習生轉正,實習滿 6 個月即有資格申請。但我的流程是透過官網 LINE CAREERS 投遞履歷的,所以並不適用這個流程,我的實習期間是 3 月開始,於 5 月底在官網投履歷,並於 7 月正式拿到 Offer,8 月入職。

TECH FRESH 轉正的面試流程相較外部投履歷來的簡單,首先是完成線上的筆試,共 10 題,有 90 分鐘可以做,題目包含選擇、申論、簡答、程式等,可以自己斟酌要選擇作答哪些。考的內容算是基本,並不會有太難的程式題。

接下來則是由團隊工程師以及 Lead 進行面試,大約一小時,主要也是聊聊在 LINE 實習間做了哪些事情以及基本的程式觀念。這部分因為個人緊張的關係,在程式觀念的問答中反而沒表現好,最後還是順利地結束了面試。

下階段則是 HR 面試,內容與 TECH FRESH 時相同,主要是因為我還沒有畢業的關係,所以問了關於畢業的時程,最後則是讓我畢業後再補證書。

最後等待一到兩週,回覆 HR 的 offer,就完成正職的流程啦。為期大約一個月的時間。

正職後

LINEMATE

正職進入後,會有一位 LINE 的同學(LINEMATE)協助你過完入職的公司介紹、安裝、專案介紹等等,這對快速適應公司環境、工作模式以及專案有很大的幫助。並且會有 Warm up 專案實作,利用 LIFF 打造一個 App 進行 demo,期間需要用到 GitOps 的流程,包括 CI/CD 等等,並架設在 LINE 內部的服務上。

查閱公司文件 Wiki

公司組織規模龐大,林林總總的介紹以及筆記都會寫在 Wiki 上,包括如何建置專案環境、專案介紹、開發的討論、Spec 等等都會一併寫在上方,其中也包含了新人指引,這部分需要時間去仔細閱讀,閱讀以及撰寫文件也是身為工程師不可或缺的技能。

On Job Training (OJT)

再來要提到 On Job Training (OJT),以往的訓練是可以到日本的,但疫情關係轉變為線上,之後也許會有機會能再去日本。OJT 的目標是讓新人快速了解公司內部的所有團隊以及架構,當遇到問題時,應該向哪個團隊的窗口尋求協助,例如:設備問題、報帳、活動、資料儲存等等。還有資安、開發上的規範等等,活動中也會有一些小遊戲互動,可以拿獎品。

Scrum Team

做完 Warm up 不久後,我正式加入了 Scrum team,這階段 team 內會舉辦一些破冰的活動 (小型 Team build),例如玩網頁遊戲你畫我猜,可以跟團隊成員熟悉一下彼此。

敏捷開發方面,與 TECH FRESH 比較不同的是,我除了每日的站立會議(疫情期間沒有罰站)外,也參與了 planning / product backlog refinement (PBR)。

一個大的服務內部有許多 Team,這階段我們會進行選票 (Task or Story),決定這個 Sprint 中哪些票是要被執行的,並且由各個 team 針對票的內容和 planner 進行討論。之後則會安排優先順序、分票,由每個 planner 跟團隊成員講解票的細項,
應該做什麼內容,釐清要開發的功能,最後才會確定下來執行。

初期我幫忙實作的是有關手機瀏海 iOS 15 Safe Area 的改動,先熟悉了一個 sprint 的流程,過程中 mentor 也詳細地幫我解惑一些開發流程的問題,例如如何在模擬器上開啟 Beta 環境,並進行 LIFF 連到本機進行 debug 等。

開發時,我們以票號為單位實作,完成後發 PR,通過後 QA 進行測試,最後才會把實作的內容 merge 進 beta。

Sprint 的最後一天,我們會進行回顧會議 (retrospective),回顧一下這個 sprint 中有什麼做的不錯,可圈可點,以及有什麼需要改進或是發洩負能量的,同時成員之間也會給予建議。

團隊有 demo 環節,向所有同個專案的同學們講解這次做的 feature,這部分是最有趣的,因為平常開發時不會特別去注意其他 team 在做什麼,做了什麼改動,可以藉此來了解哪些功能已經是被實作的。

Events

  • 社團:LINE 內部有許多社團,可以跨部門尋找志同道合的朋友們一起參加自己的活動。
  • Team Build:除了前面提到小團隊的 Team Build 外,我們也有屬於大的 Team build,部門可以討論決定要吃超級好料的還是去滑雪、出遊等等。
  • 讀書會:根據部門不同還有讀書會,會有同學分享開發經歷或是技術介紹
  • 內部活動:Workshop、Hackathon 等

總結

從實習到轉正的路程上我覺得學到了不少東西,不管是團隊成員之間溝通還是開發上使用的技術以及程式架構,遇到瓶頸也能夠從同學之間得到幫助或是方向,比較沒有自己埋頭苦幹的感覺。如果你本身對於 LINE 的產品有興趣或是想法,就算開發的技能沒有全部都會也沒關係,
我覺得可以試試看參加 LINE TECH FRESH – 技術新星人才計劃,相信在實習的過程中一定可以滿載而歸。

以上就是今天分享的內容了,我是 Stanley,我們下次見囉。