LY Corporation Tech Blog

支持 LY Corporation 和 LY Corporation Group (LINE Plus, LINE Taiwan and LINE Vietnam) 服務,宣傳技術和開發文化。

進擊的後端: Chris 實習經驗分享 @ 台大_輔大_北醫 GDSC 企業參訪

前言

各位讀者,大家好,我是Chris Shin,來自 EC 部門。我很榮幸有機會與GDSC社團的朋友們分享我在LINE的工作生活經驗。

今天的主題是進擊的後端!到底Bug的對面究竟是自由還是敵人呢?作為一名TECH FRESH兵團的成員,就讓我帶大家繼續看下去!

介紹

在我們深入探討 LINE 的工作有什麼之前,讓我們先來聊聊兩個重要的主題,那就是SDLC和敏捷開發。

想像一下,SDLC 就像一個軟體開發的冒險旅程,有五個重要的站點,我會用我自己的經驗給你們畫出這個地圖。

  • 首站是「需求收集和分析」,就像我們跟客戶坐下來喝杯咖啡,找出他們真正需要的是什麼。比如說,他們可能需要我們打造一個RESTful API,來管理他們的網路商店的商品。
  • 接下來是「系統設計」,我們會像建築師一樣,設計出系統架構和資料庫結構。比如我們可能會選擇使用 MySQL 數據庫,並用 Spring Data JPA 作為我們的數據庫管理工具。
  • 第三站是「實施/編碼」,就像我們開始搭建樓房的過程。我們會使用 Spring Boot 的許多功能,來處理 HTTP 請求,並與數據庫進行交互。
  • 然後是「測試」,就像我們要檢查每個磚頭是否堅固,每個窗戶是否安裝正確。我們會使用JUnit、Mockito 等工具,來確保我們的樓房沒有任何問題。
  • 最後一站是「部署和維護」,就像我們終於把樓房建好,開放給大家使用,然後持續監控和更新,以確保一切都運作正常。

接下來我們要談的是兩種開發模型:瀑布模型和敏捷開發。

瀑布模型就像是一條直線,一步一步來,每個階段必須在下一個階段開始前完成。就像建造一棟大樓,你必須先完成地基,然後建立結構,接著裝修,最後才能交付給客戶。這種模型的好處是清晰明確,但缺點是如果中途有任何變更,就需要回到起點重新來過。

而敏捷開發就像是在跑馬拉松,你可以在跑步的過程中調整你的步伐和路線。它允許在開發過程中進行調整,並且強調與客戶的互動和團隊的協作。比如說,我們在建造房子的過程中,如果客戶想要增加一個房間或改變裝修風格,我們可以在下一個階段進行調整。

總的來說,瀑布模型就像是一個直線賽跑,一次性完成所有的工作;而敏捷開發就像是一場馬拉松,逐步完成工作,並且能夠更靈活地應對變化。

Agile Development Methodology – Scrum

我們所使用的敏捷開發的方法是Scrum,其實就像是在旅行,為什麼要旅遊、打算去哪個國家、希望有怎樣的回憶,終點則是旅遊回來後大家照片,產品要做什麼、要怎麼做、實作等等。
Sprint 是 Scrum 方法中的基礎結構,它代表了一個固定的、短期的工作週期,通常持續兩到四週。在每個Sprint中,團隊會致力於完成一定量的工作,這些工作項目是從產品待辦事項清單(Product Backlog)中挑選出來的。
在scrum 當中有幾個比較重要的會議要提到:

  • 首先在 Sprint 開始前都會有 Planning Meeting,團隊會進行一次詳細的計劃會議,確定本次 Sprint 的目標和將要處理的任務。
  • 再來是 Daily,在Sprint進行期間,團隊成員每天進行一次短暫的會議,通常不超過15分鐘,目的是快速更新每個人的工作進展、計劃當日的工作,並討論任何阻礙進展的問題。
  • 最後會有 Retrospective,讓團隊反思過去的 Sprint,討論哪些地方做得好,哪些地方需要改進,從而不斷提升團隊的工作效率和產品質量。

進擊的WEB巨人

前端和後端開發是現代網頁應用和軟件開發中不可或缺的兩個方面。它們彼此共同構成了用戶與應用間的完整交響曲。

前端開發通常指的是用戶界面和用戶體驗的開發工作。它涉及到的技術主要包括 HTML、CSS 和 JavaScript,以及眾多框架如 React、Angular和Vue.js。

後端開發指的是在伺服器端進行的開發工作,它支持前端功能的實現。後端開發使用的技術包括不同的編程語言(如Java、Python、Ruby)和數據庫技術(如MySQL、MongoDB)。

雖然前端和後端開發各有專門,但在團隊中都需要緊密合作,以確保最終產品的質量喔。

在 LINE 這邊會用到的前後端的 tech stack 有很多,包含常見的 React、Node.js 等等,一定會有你擅長的工具。

API - 程式溝通的橋樑

API 它可以是一組函數、協定或者工具,用於建立軟體和服務。可以把它想成是程式之間溝通的橋樑
提到 API 就不得不說到目前市面上最常見 的REST(Representational State Transfer)API,他是一種架構風格,用於設計網路應用程式的 API。它建立在HTTP協定上,並利用其特性來實現輕量級、可維護和可擴展的 Web 服務。每個 resource 都透過 URI 來訪問。使用 HTTP 方法如 GET(讀取資源)、POST(創建新資源)、PUT(更新現有資源)和DELETE(刪除資源)來操作這些資源。

並且採取客戶端-服務器結構(Client-Server Architecture,在這種架構中,客戶端和服務器是分開的,負責不同的工作。客戶端通常負責用戶界面和用戶交互,而服務器則處理後端業務邏輯、數據存儲和處理API請求。這樣的分離有助於簡化客戶端和服務器的開發。

RESTful API 在設計簡潔、易於理解和使用的同時,也具備了良好的可擴展性和靈活性。這就是為什麼它們在當今 Web 服務開發中如此受歡迎的原因。

Life in LINE

那麼說了哪麼多,到底為什麼我要選擇LINE呢?
首先,我待在這裡的每一天都像是在一個大寶藏裡挖寶,每天都有新鮮有趣的東西等著我去學。EC 這個團隊就像一個大家庭,大家都會互相扶持,一起努力做出最棒的產品,當遇到問題時,我們就像調查兵團一樣一起迎頭痛擊,找出解決的方法。

再來,LINE 就像一個永不停息的學習機器,總是追求新的技術,讓我們這些工程師每天都有新東西可以學,進入這裡後我每隔一段就會碰到新的技術。在這樣的環境裡,我們不用擔心會停滯不前,每天都有機會變得更好。

除了這些比較內化的東西,更實際一點,實習生在剛進來時就會有一個 mentor,提供了他們在業界的專業知識與經驗並且在困難時刻給予幫助。

同時 LINE 有許許多多的社團,只有你想不到的,像是自行車社,他們都是一些熱血的人很常去挑戰像是一日北高 一日雙塔等等不同的任務,還有農作物研究社,簡單來說就是小麥果汁品嚐社;又或是我自己有加入羽球社,大家都會在下班後一起去球場揮灑汗水,最重要的是,常常超級ㄅ一ㄤˋ的 team building,在這裡上班很快樂。

How to interview?

那我當初是如何準備面試的呢?
我自己會focus在自己曾經認真參與過的專案上
大家可以記住一個口訣
PARAD 代表著

  • P roject : Outline a task or project.
  • A ction : Detail your actions.
  • R esult : Highlight the outcomes
  • A ftermath : Describe the impact
  • D ecision : Share your decisions

你不需要像 Google Search 或 ChatGPT 一樣什麼都會,你只需要將你擁有的技能全部獻上,並對自己有信心。

結論

很感謝這次有機會讓我能在線下跟GDSC的學弟妹們分享在 LINE 的生活及工作經驗,希望這次分享多少對學弟妹有所幫助,並祝大家找實習都能順利~

2024 TECH FRESH 春季班收件至 2023/11/31 喔! 如果還在猶豫的同學歡迎參考以下文章: