R 語言資料科學家/分析師在企業面臨的困境 (3) — 建議

Wei-Lun Jian (Lue)
6 min readOct 19, 2019

--

系列文章

本文筆者將延續前兩篇文章的內容,由 R 使用者、不懂 R 的資料工程師卻接到了 R 部署工作、企業等不同角度給予建議。

一、若你是 R 使用者,也許你可以…

筆者在系列文的第一篇曾說,由於 R 使用者專業背景多為統計、數學或社會科學,在數據團隊的角色多為商業分析師或資料科學家。另由於較缺乏資料工程的能力與經驗,故需要資料工程師的參與才能把 R 開發的專案部署 (deploy) 為正式服務。然而,在資料工程師不懂 R 的情況下,易導致 R 服務部署的困境。因此,筆者建議 R 使用者不妨嘗試往資料工程領域發展,補足一般 R 使用者不足之處,走出不同的路。

怎麼說呢?

我從職能發展的角度來說,以【圖一】輔助說明,簡單將專業能力分三個維度,分別為商業分析、資料科學、資料工程,再依專業能力值對應於職位,並給予 A , A+, B, B+, AB, ..., D 等定位編號。

(註:一般來說,大數據專業能力還有所謂的資料架構,在此為求簡化,將其歸類於資料工程的範疇)

【圖一】數據技能定位示意圖 (來源:筆者自製)

如果你是 A 或 B

一般來說,R 使用者的職能定位多屬於 A 或 B,經過專案磨練後可能會往 AB 發展,或是往定位更專注的 A+或 B+發展。然而,事實上在企業可能有 80% 的問題無需用 A+或 B+的能力即可解決,更需要的是 AB、AC 或 BC 這類「通才」。若你往通才定位發展,不僅可作為各專業的「橋梁」,亦會因擁有「一條龍」的技能而在精兵策略的小型數據團隊生存。

而 AB、AC 或 BC 中,AB 應該又會是 R 使用者最常發展的路徑,畢竟專業背景多屬統計/數學/社會科學為主,往具資料工程能力的 AC 或 BC 發展門檻/難度較高。此時,若你能考慮嘗試往「稀有」的 AC 或 BC 發展,在職能上與大家「差異化」,不僅補足團隊中 R 使用者的不足,以企業的角度來說,你可能會更被企業需要。

如果你是 AB

相信在業界累積過實戰經驗的 R 使用者會屬於 AB,你擁有資料科學的基本能力並可以結合領域知識 (Domain Knowledge) 解決商業問題,若再加上出色的軟實力 (規劃、溝通、協調),甚至可擔任商業分析或資料科學的管理者,因你有能力帶領團隊並讓商業分析及資料科學整合得宜。 此時筆者建議可嘗試往 D 類全能型人才發展,除了有能力「一條龍」完成工作之外,更有價值的是你能與各專業溝通,全面向地整合數據團隊,擔任數據團隊的掌舵者。

如果你是 A+、B+或 D

此類 R 使用者應在數據領域擁有多年經驗,或是付出許多心血專注於同職能發展,筆者認為自己等級不足以給予建議。A+、B+類厲害在企業中有 20% 只有你們有能力解決,而 D 類有足夠能力全方位整合數據團隊的工作,都是業界不可多得的人才。

該怎麼做?

相信在職場上,身為資料科學家/分析師的你,即使有意願往資料工程的職能發展,通常企業無法讓你如願以償,因為專案接踵而來,很難讓你放下原職責從實務上「做中學」工程技術。怎麼辦呢?

最快的辦法就是「靠自己」,在此分享筆者如何利用下班時間實作,學習資料工程相關的技術。你可以透過 VM 自己架設虛擬電腦,為了練習 Linux 環境的部署,筆者安裝的是 Ubuntu,接著你可在虛擬電腦內練習架設 R 的環境、執行 Terminal Console 指令、創建腳本 (Script)、架設 API,一直到 R 專案的部署,甚至可架設多台虛擬電腦,練習部署專案於不同環境的流程。

另外,筆者回想在學校時所修過 R 的課程或是坊間書籍/教科書,都只專注在資料處理或演算法理論說明與實作,卻完全沒有部署相關的教學。所以,如果你還是在校學生,除了主動學習外,不妨建議老師將部署工具加入課程的學習內容,因部署工程在企業「非常重要」。

學習不同程式語言

另外,我也會建議讀者多學習不同程式語言,較推薦先學習 Python,因 Python 是業界目前最受歡迎的語言,與資料工程人才的合作上也會比 R 順利許多。實務上也不會所有問題都用一種語言解決,通常會各語言搭配使用,筆者目前在工作上是 R、Python 都使用 (偶爾還需用到 SAS),團隊成員也幾乎是雙刀流 (R + Python) 的資料科學家/分析師。而且,R 和 Python 非常相似,網路也很多學習資源,對 R 使用者來說,學習 Python 不是難事。

二、若你是不懂 R 的資料工程師卻接到了 R 部署工作,也許你可以...

若你看過了系列文的第二篇,應該會知道其實 R 有許多套件或工具可實現部署的工作,跟其他語言也可有很好的整合。如果你已了解 R 有這些工具,又懶得花時間學 R,較快的方式就是與資料科學/分析團隊中的 R 使用者協同合作,由他配合你在工程領域的專業知識,應該不難在符合企業規範下實現 R 服務的部署

順帶一提,你也可以參考【圖一】的職能定位,往 BC、AC 或 D 的「通才」方向發展,筆者見過工程背景轉往資料科學/商業分析發展後表現相當好的人才,他們能讓分析與工程界接的順暢程度大幅提升,是成熟的分析團隊中不可或缺的人才。

三、企業該如何因應?

延續 R 語言的部署困境為議題,由於專業背景的原因,相信企業中比較受到工程團隊青睞/熟悉的程式語言為 Python。所以,若分析團隊能以 Python 開發專案後,頂多是程式書寫的習慣常不符合工程團隊的期待之外,部署工程通常不會有太大的問題。

因此,曾聽過企業規定分析團隊只能用 Python 開發專案,甚至在招募員工時只招募 Python 資料科學家/分析師。當然,這是最簡單/省事的辦法,卻也因此限制了 R 語言資料科學家/分析師的發揮空間或錯失許多良才,畢竟他們擁有的資料科學及商業分析能力,能幫助企業解決商業問題,帶來許多數據業務推動的動能。

建議企業應將之視為廣泛性問題來思考,在一個專業多樣性高的團隊,不同專業或熟悉不同程式語言的人,在合作時應該都會面臨類似的問題,重要的是該如何透過協同合作達到整合,規範或限制應不會是最好的方法。

因此,回歸 R 語言的部署問題,若企業面臨此問題,筆者考量了方案的優缺點後,由優到劣順序如下:

  1. 找到懂 R 又懂工程的人 (但這種人才很難找)
  2. R 資料科學家/分析師與資料工程師協同合作
  3. 外包

選擇上述方案後,接著需設計 R 專案的「程式架構」,簡單來說,設計一份內含部署程式元素的「模板」讓開發人員遵循,使程式開發完後可無痛於企業部署。當然,各企業的情況應不盡相同,還是要以數據團隊的狀況思考最適合的方案。

結語

本系列文章到此算告一段落,希望讀者們在 R 部署的技術問題透過第二篇文章可以迎刃而解,也希望讀者們透過第一、三篇文章,試著由不同角度思考此問題後有所收穫。

最後,有任何問題歡迎不吝與我聯繫或留言,謝謝!

(喜歡我的文章來點掌聲吧!歡迎分享文章連結,轉貼內文請載明出處)

--

--