初入職場,在 Data / ML 路上的筆記

其實原本是沒有打算在第一年就寫一篇跟工作相關的文章,但最近 Data / ML 真的熱門到不行,網路上出現太多“似懂非懂”的人在對這個領域大做文章,分享了一些過於主觀且偏頗的觀點,製造了無謂的恐慌,且身邊很多學弟妹都有意願以 Data (ML 就真的比較少了) 做為職涯目標,所以想說分享一下我這一路上是怎麼走來的,以及盡可能用最客觀的角度去分析 DS 所需的技能 (MLE 再給我幾年時間體會,小弟目前還太菜,怕寫了不夠精確 XDD)。

稍微自我介紹一下

在政大待了六年 (財政系 + 金融所),當初大學選政大是因為不想寫程式 (高中被 C 荼毒三年所以當初很討厭 coding),但在大三因為接觸到 Data Science 而一頭栽進這個領域,但拜必修所賜,以 overall GPA 3.05 混混的畢業了。在金融所除了必修以外幾乎全部都修資科所的課 (大學部的資結、演算法也修了)。畢業後在某金控一個蠻新的團隊當 MLE,主要工作是 Research (Tabular Data / Financial Machine Learning) 以及 LLM 的應用。平常沒事就健身、打球、彈吉他、跟以前碩班的老闆 (Kendro) 一起寫 paper 做研究 (asset pricing 相關)。

商院畢業怎麼當 MLE?

其實我當初也沒有說一定要是 MLE,只是單純覺得有機會就試試看罷了,主要還是把職涯目標擺在 DS。如果你跟我一樣,是商管、社科背景出身但也想進入這個領域,我羅列了以下幾個當初覺得自己比較有可能被看上的幾個點:

  1. 數學:沒有說到很強,但計量、線代、機率論都算蠻熟,畢竟 ML 論文裡面會出現的數學幾乎都離不開這三個基礎科目 (Diffusion Model 先算了,看到一坨 ODE 跟 PDE 真的會怕)。
  2. 程式:可能是因為高中被荼毒了三年吧,即使中途一度放棄寫程式,但後來在 catch up 的過程中幾乎沒有遇到困難。除了修課以外,我也很喜歡沒事就搞一堆有的沒的,所以在畢業前其實 side project 不少,前後端、DB、Linux OS、一些軟體工程的技能啥的就都有自己摸過一點 (但就一點)。
  3. 研究領域:碩一上就打定主意要跟 Kendro 做研究,所以就剛好做到 Deep learning in asset pricing 這個領域,那自己對研究也蠻有興趣,花蠻多時間在思考方法、模型上的東西,所以做出來的成果規模算大,難度也還行,所以算是為自己在 coding 以及 ML 上的能力掛一個保證。

以上三點大概就是我覺得自己能被錄取的客觀原因,當然其他主觀原因像是個性啥的就不多說,每間公司,甚至每個團隊都有不一樣的偏好。

DS 的技能需求演變

⚠️ 以下都是我自己從 2021, 2022 左右開始一路聽其他人分享、自己進入職場實習、正職的一些觀察以及感想,實際上是不是完全照我說的一樣那還真不可能,所以就參考看看吧。如果有在業界的讀者有其他建議,也歡迎跟我說,我會盡可能的更新這邊的內容。

正片開始

大概四年前吧,業界對於 DS 工作內容的定義比較多還是針對資料進行各種 EDA, Preprocessing, Feature Engineering,接著建模型,分析結果。簡單來說就是一整套 Machine Learning Pipeline 的流程。當時的 DS 比較像是在給定的資料以及目標下,想辦法用各種統計、機器學習方法來解決該問題。但隨著時間的演進,以及學校課程的更新 (Huh?,上述 ML pipeline 已經成為只要修過相關課程的學生都可以大概做到的事情 (當然還是有好壞之別,還是看到不少 garbage in garbage out 的專案),這邊想表達的意思是這不再是一個只有少數人會的技能。那這時候還想當個 DS 就不能只會這些啦,在分析有 DA / BA / BI 幫忙的情況下,DS 便向工程靠攏,也就是說,不再只建模跟處理資料了

至於是什麼樣的工程技能呢?我們可以從一間公司的業務流程了解到這件事情。大部分的公司應該都會有產品 (product) 或是專案 (project) 來幫助公司獲利,而 data driven / AI driven 的公司在這些 product / project 中就會請 DS 來處理資料、機器學習模型相關的問題。但只處理資料、建立模型是沒有辦法讓專案或產品上線的,因此會需要有

  • 資料工程師 (DE): 建立資料 ETL pipeline、管理資料庫、維持整個 Data Warehouse 的運作,讓資料有辦法做 streaming
  • 前後端軟體工程師: 幫忙建立整個軟體架構以及網頁介面,讓客戶可以使用該產品、服務。

更甚者,公司會希望將這些產品、專案都部署到雲端,並且有自動化的 CI/CD 流程,這時候也會有 DevOps / DevSecOps Engineer 來協助。誠如第一段所說,DS 逐漸向工程靠攏,在我的觀察中,DS 會開始做一些工程的 work,比如說寫 ETL pipeline,API, 寫 CI/CD pipeline 等等的,這些技能基本上是學校不會教的,很多時候都得靠實習或是自學來熟悉這些工具。當然每間公司的產品面向以及功能都不同,以上只是一個概括性的說法。

也因此,客觀上來說,商管背景的學生在這一兩年要成為 DS 可能比較不容易,因為這已經會吃到程式的底子了,不再是開一個 Colab 或是 Jupyter Notebook 就可以完成的事情。且身邊的同學也比較少會去碰這些工具,比較沒有人可以一起討論,或是一起開發 side project。但所幸這些工具其實都不難,只是需要花時間去學習,去理解這些工具的運作原理以及他們可以做到什麼事情。

結語

以上就是我自己的一些簡介以及我對於 DS 領域的一些觀察,希望對於想成為 DS 的人有一些幫助。另外,這篇文章的主要目的是想分享一些客觀的看法,因此對於我本人是怎麼走到現在這個職業也只是淺淺的帶過,如果想瞭解更多的話,也歡迎私訊我,連結都在左上角。

License under CC BY-NC-SA 4.0
Built with Hugo
Theme Stack designed by Jimmy