前言
大家好,我是來自 LINE TRAVEL 的 Water Lee,在疫情緩和的現在,終於在辦公室有線下活動囉!很高興這次可以與 APCS 社團的成員分享我在 LINE 擔任 TECH FRESH 的一些工作、生活經驗,話不多說,讓我往下繼續跟大家介紹!
介紹
A day in the life of a LINE TECH FRESH
平常在 youtube 上看了很多軟體工程師分享他們的生活,所以今天就從"一個 LINE TECH FRESH 的一天"開始分享吧!
我的一整天有三個一定要記得的時間點,上下班跟快樂的午餐時間。除此之外我有兩個很重要的會議,分別是早上 11 點的 Scrum Stand-up Meeting 跟下午 2 點的 Backend Daily。Scrum Stand-up Meeting 是 LINE TRAVLE 的每一位成員的要參加的會議。會議裡我們會輪流的分享三件事情,昨天做了什麼、今天要做什麼跟有沒有遇到什麼問題。會議的時間很短,通常 10 分鐘內會結束。而這個會議的目的是要對齊團隊裡每個人的進度,所以是非常重要的。Backend Daily 則是只有後端工程師會參加。在這個會議裡,我們會討論彼此現在工作上遇到的問題,或是一起設計比較困難的功能,有時候也會分享近期新學習的技術或是軟體開發的心法。
除了上述這些有點嚴肅的固定行程,有時候也會有一些突發狀況。像是午飯之前同事找你去二樓丟個 501 飛鏢,或是下午突然發現開發的功能會影響前端,所以下午跟前端工程師約個臨時會議,然後結束之後大家在一起去吃個小點心 XD
說了這麼多,其實工程師的一天都是在工作跟吃飯而已,非常樸實無華的一天!
Something else besides coding
那麼工程師在工作的時候,都在做什麼呢?這四個是我常常在做的事情,也是後端工程師基本的四個任務。
- Coding - 設計&撰寫 API 跟串接資料庫。
- Writing Test Cases - 撰寫測試。寫測試的優點有很多,例如:我們可以在本地的電腦,先自己確認過程式邏輯是否正確。或是使用自動化測試的方式,在每一次修改專案之後,確保裡面所有的功能都可以正常運作。
- Being an Archeologist - 維護舊有的程式碼。一個大型專案往往都有很悠久的歷史。從過去到現在,軟體工程不斷的在迭代,新的軟體架構、新的開發原則的出現,讓過去的跟現在的程式碼有很大的差異。包含寫程式的風格不同、套用的架構不同或是語法不同,種種的原因讓維護這些程式碼變的不太容易。所以需要花很多時間去考古這些古代的程式碼,並且好好維護或是重構。
- Being a Picky Artist - 提高程式碼的閱讀性跟維護性。大家在學校裡交作業時,你可能只在乎程式能不能正常執行,但是你可能不會在乎助教能不能看懂每一行程式的邏輯。但是在一間企業裡面的專案,一段程式碼會被無數工程師反覆的閱讀,所以如何增進的程式碼閱讀性跟維護性,是非常重要的議題。最常見的作法就是給一個變數、函數好的名稱,或是劃分物件的職責等等。對我來說做這些事情就像是當一位藝術家,需要有點潔癖、要很挑惕的審視專案的每一個細節。
What tech stack do you need
我在 LINE TRAVEL 實習的時候接觸到的技術有這些。
開發的部分 TRAVLE 的後端使用的是 Typescript。在 LINE 還有其他的後端語言像是 Java, Kotlin, Golang 等等。然後會去串接 MongoDB, Redis, Elastic Search。除了技術相關的技能,還需要熟悉 Clean Architecture、TDD、Clean Code 等等的理論。
測試的部分使用 Jest 跟 Testcontainer 轉寫整合測試,然後使用 Jenkins、DroneCI、ArgoCD 執行 CI/CD pipeline。部署的時候會用 Docker 把服務打包成 container。再部署到 server 上,達配 K8s 去做調度、管理。當服務上線之後,我們可以用 Grafana 跟 OpenTelemetry 去了解現在服務運行的狀況。
Develop Culture in LINE
接下來我想分享一些 LINE 的開發文化。
- Scrum 是一種專案管理的方法論,他的優點是藉由縮短產品開發的週期,去快速的進行產品迭代、驗證市場、創造價值。而前面提到的 Stand-up Meeting 就是 Scrum 的一部分。
- Technical Sharing - TRAVEL 內部每兩週會有技術分享會。集結不同領域的工程師 QA、Frontend、Backend,彼此分享最近用到的新技術、開發的心得、用什麼方法解決 TRAVEL 的問題等等。我也曾經在這裡分享過 TDD 的開發心得跟如何在 TRAVLE 裡使用 OpenTelemetry。
- Code Review - 每一行新的程式碼都會被另一個工程師看過之後才能夠合併。這樣可以提高程式碼的品質,也可以降低程式出錯的機會。
- Pair Programming - 有時候我們會很多工程師一起討論問題的解法,然後一起寫同ㄧ份程式碼,合力完成某些重大的功能。目的也是提高開發的效率跟品質。
TECH FRESH be like …
當一位 TECH FRESH 是什麼樣子呢?
- Build a world-wide project: LINE 的產品有非常多的使用者,實習生能夠參與一個萬人使用的產品開發,是一件很酷而且非常有成就感的事情!
- Learn what you want: 這裡的實習生不是被分配工作、完成工作的工讀生。實習生可以選擇自己想要學什麼東西、想要在產品上貢獻什麼。你可以帶學習計畫去跟主管討論,或是主動要求你有興趣的任務。所以在這邊實習很開心,做喜歡的事情又可以累積很多經驗。
- Mistakes are tolerable: 在這裡實習你可以盡情地學習、大膽地犯錯,不用擔心自己做了一顆炸彈,還炸到一堆用戶,你有很堅強的團隊會幫你接住這個炸彈。從錯誤中學習才是最重要的。而且看大家如何拆炸彈也是很難得的經驗 XDD
How did I prepare TECH FRESH interview
那我當初是怎麼準備 TECH FRESH 的面試呢?
這是我在當初面試履歷上放的專案。這是一個的線上的程式批改系統,使用的都是網頁開發常見技術的組合。你不需要把前面介紹的後端技術全部學一遍再來,也不用擔心自己會的東西不夠特別,所以不敢來爭取實習機會。
面試官想知道的是,你對自己擁有的技能掌握的程度如何,所以同學面試時只要很有自信的回答問題,展現你擁有的技術能力即可。
建議有興趣來這裡當實習生同學,可以準備一兩份 side project,在面試的時候好好的展現出來!
Why I choose LINE
最後想跟大家分享,為什麼在實習一年之後,還想要繼續待在這裡~
首先,待在這裡的每一天我都在學習,感覺在這裡有好多學不完的好玩東西。 TRAVEL 是個很棒的團隊,平時大家彼此幫助一起做好一個產品,遇到困難一起積極的解決問題。
再來,LINE 一直都願意擁抱新的技術,所以 LINE 的工程師每天都在學習,在這樣的環境裡不用擔心自己有一天會停止成長。最後我們常常舉辦好玩的 team building,逢年過節的時候也有可愛爆表的 LINE FRIENDS 周邊商品,如果你也喜歡 LINE FRIENDS 的話,在這裡上班會很快樂。
結論
感謝公司提供機會讓我能在線下跟學弟妹們分享在 LINE 的一些工作經驗,希望在這次的分享中可以幫助到學弟妹未來在找實習時有個借鏡,如果大家對於這次分享的內容覺得不錯,歡迎分享推薦出去!
或你是學弟妹正在找實習,歡迎參考LINE CAREERS | 2022 TECH FRESH,那我們下次見囉!
活動小結
立即加入「LINE 開發者官方社群」官方帳號,就能收到第一手 Meetup 活動,或與開發者計畫有關的最新消息的推播通知。▼
「LINE 開發者官方社群」官方帳號 ID:@line_tw_dev
關於「LINE 開發社群計畫」
LINE 於 2019 年開始在台灣啟動「LINE 開發社群計畫」,將長期投入人力與資源在台灣舉辦對內對外、線上線下的開發者社群聚會、徵才日、開發者大會等,已經舉辦 30 場以上的活動。歡迎讀者們能夠持續回來查看最新的狀況。詳情請看: