台灣資料工程師職場觀察與回顧 (2021)

幾年來也寫了一些文章,但好像從來沒有好好自我介紹過,因此想要寫一篇文章作為對自己目前經歷的總結,以及分享我對這領域職場的看法。

我是國立大學資工學士畢業,對於人工智慧相關的領域感興趣,剛好在上一段人工智慧冰河期的最尾端時,為了畢業專題自學了類神經網路相關的內容。 當時看到類神經網路的評語多為極耗資源且成效沒有特別優秀,不如使用其他如 SVM 等方法。結果一年後當完兵返回陽間時,發現最新潮的 Deep Learning 其實就是類神經網路的延伸應用

大學時在朋友的幫助下,有過一段接案做網站的經驗。出社會後在小公司做了兩年的後端工程師,到職一年以後開始感到索然無味,而又興起了往 Data 及 Machine Learning 相關領域發展的念頭。

在經過一段時間的自學以後,很幸運的得到布丁大大的賞識,讓我轉職為一名 Data Engineer,繼而開始一段精彩刺激的一條龍冒險

截至 2021/03 為止,我有兩年 Backend Engineer 及將近四年的 Data Engineer 工作經驗。另因只待過新創規模的團隊,此經驗與大公司的環境可能有嚴重落差。


轉職資料工程師

如同最前面所說,當時我試著要往 ML 的方向發展,但是我並沒有足夠的工作經驗與學術研究,因此打算先以 Backend 與 ML 的介接點——Data Engineering 資料工程領域來著手。

整體來說我認為 Backend Engineer 與 Data Engineer 兩者之間,技能樹有很大幅度的重疊,只是在於使用的工具與以及處理流程的不同。後端基本上是 Request 到 Response 這種一來一往的方式,而資料工程比較像是單向的 Data Flow。

因此在目前市場上 Data Engineer 供應甚少的狀況下,也有聽過一些公司是直接訓練內部的 Backend/Software Engineer。


資料工程師在做什麼

作為一個十分新興的領域,資料工程基本上涵蓋了從基礎服務層級資料處理應用,還很有可能連著分析與視覺化也要包辦。對應到 Web Development 的領域來說,相當於從 Infrastructure、Backend、Frontend, 甚至可以說是每一間公司對於 Data Engineer(以及 Data Scientist)的想像都不太一樣,有些想要能點石成金的魔法石、有些想要能治百病的仙丹,而有些只是需要能大肆宣傳的廣告看板。

比起後端相對的龐大專案來說,資料工程師更多是以許多大大小小的元件,來組合出一個完整的架構。不同的資料型態、不同的後續應用,對於整體架構都有非常大的影響,所以相對沒有可以比較簡單起手的 Best Practice(例如選一個程式語言、一個 Framework、一個 Database 即可開始)。不過近年各大 Cloud Provider 都提供了越來越完整的相關服務,算是不錯的起手選擇。

由於 Data Engineer 最主要的工作,應該是串接與維護 Data Pipeline,因此常常會自嘲為「水管工」。


資料工程師的職缺

這是我覺得很微妙的一點。

在經歷過前幾年企業一股腦地招募了 Data Scientist ,就如同是要尋找能達成任何願望的神燈一樣。但是漸漸的在缺乏資料儲備與軟體開發者的支援、上司與員工的期望落差等等問題上,讓這個美好的泡泡破裂了,而慢慢的讓企業開始重視起 Data Engineer 這種角色。

「你是 Data Engineer? Data Scientist?還是 Data Whatever?」

我認為因為 Data 領域的職缺依舊相當模糊,一樣掛著 Data Engineer 的職稱,有些偏向傳統 BI Engineer 的角色、有些是要求前端技能做資料視覺化、有些是必須負責任何跟 Data 相關的一條龍工程師。

整體來說,我認為有經驗的 Data Engineer 在求職市場上,由於人才需求與供應上相對上更加失衡,比起同等經歷的 Frontend Engineer 及 Backend Engineer 可能得到更好的待遇

目前台灣 Data Engineer 職缺數量最多的應該莫過於網路廣告行銷產業,再來是電商金融軟體服務工業製造等。


資料工程師的困難

目前許多公司的 Data Team 規模相對其他開發團隊小了許多,可能只有四分之一到十分之一甚至更低,因此應該有不少 Data Engineer 都已經習慣於單打獨鬥。在這種環境之下,我認為心理負擔相對較大。

另外是 Data Engineer 對於各式工具的依賴,比起 Backend Engineer 來說更重。因此應該避免只熟悉了工具的使用,而無法根據不同目標與場景設計架構的能力。


結語

對我來說 Data Engineering 是一個相當有挑戰與變化的領域,資料量的成長比起客戶或使用者數量的成長來得更容易(雖然不一定有意義),例如曾經遇過一個新客戶帶來的資料量,比起其他客戶加起來的總資料量還要多。因此在架構附載能力開發維護的人力與金錢成本以及未來的成長彈性等問題之間,要怎麼取得平衡是很有趣的問題。

有什麼意見或感想,都歡迎在下方留言交流。