Categories
程式開發

為什麼我勸你不要當數據科學家?


數據科學家這一職位越來越火熱,人人都想從事數據科學,這不僅因為這份工作聽上去高大上,更重要的是,它真的是一份高薪的工作。但是,數據科學家是人人都能做得來的嗎?

本文系一篇觀點文章,我很樂意聽到讀者的反駁意見。

成為一名數據科學家是每個人的夢想。甚至連奶奶級的人也想當數據科學家。但是,儘管數據科學可能是 21 世紀最性感的工作,但另一個報酬也同樣豐厚的高薪職業——軟件工程師,卻被低估了。

我經常會收到寫剛畢業的學生和想改行的人寫來的信,向我尋求從事數據科學的建議。我給他們回信說應該要去做軟件工程師。

鑑於我在數據科學家和軟件工程師都有經驗,我會試著說服你去成為軟件工程師。

1. 軟件工程的工作崗位更多

與數據科學相比,軟件工程領域的工作崗位要多上一個數量級。

下面是我在 Google 上搜索 Indeed(一家招聘網站)上的 “數據科學家” (Data Scientist)和 “軟件工程師” (Software Engineer)崗位的截圖。

image

image

從搜索結果來看,數據科學崗位有 7616 個,而軟件工程的崗位有 538893 個!這還只是美國的就業情況,但其他國家也顯示出類似的結果。

據 Glassdoor 的調查結果稱,數據科學家的收入更高,但以我未經驗證的假設是,數據科學領域的工作平均而言也更高級。

image

image

也就是說,如果你得到了 Open AI 給的 100 萬美元薪水的工作機會,我會建議你要抓住這個機會。

2. “數據科學” 的含義還沒有達成共識

管理層對 “數據科學” 的含義往往沒有達成共識。也有可能是由於業務上的限制,他們沒有辦法生搬硬套一個角色框架。

這意味著 “數據科學家” 的職責因公司而異。

image

雖然從軟件工程師到數據科學家之間的理想角色有可能存在,但在現實中卻不大可能實現。這點對於那些仍在建設基礎設施的初創公司來說尤為如此。

被錄用的應聘者最終都是為了解決公司目前需要解決的問題,而不是他們可能被錄用的 “角色” 。

來自該領域同事的軼事證據是,許多數據科學家發現,自己像軟件工程師一樣也要編寫後端代碼。我還認識其他所謂的 “數據科學家” ,他們是用 Excel 處理財務數據。

而這與參加過 Kaggle 的你的期望大相徑庭。

3. 數據科學是孤軍奮戰的工作

大多數公司並不像軟件工程師那樣需要那麼多的數據科學家。其他公司正在招聘他們的第一位數據科學家。

由於這個原因,許多數據科學家最終都將是孤軍奮戰,即使他們和開發人員在同一張桌子上工作,也是如此。

這可能會導致很難獲得反饋和第二種意見。軟件工程師要么不懂預測建模,要么忙於處理完全不同的問題。

相比之下,在軟件工程團隊的好處之一就是能夠對同事們說: “我認為我們應該用 XYZ 的方式實現 ABC。你有什麼看法?” 。

要從事數據科學的工作,請做好和你自己或者一隻橡皮鴨進行這樣的對話的準備。

image

4. 數據科學是探索性的工作

你要做好與管理層進行尷尬對話的準備,解釋為什麼你花了兩個禮拜的時間做的東西還不能用。

致力於解決已解決的問題與未解決的問題,是軟件開發與人工智能的根本區別之一。

撇開錯誤和約束不談,在開始任何工作之前,你就應該知道大多數軟件工程項目是否可行。但在機器學習領域就不能這樣說了,因為你只有在構建模型之後才會知道模型是否有效。

5. 公司還沒有為人工智能做好準備

即使在每家公司都是人工智能公司的時代,大多數公司也不具備支持人工智能的基礎設施,甚至不需要它。

最近,一家快速擴張的初創公司的數據科學負責人在與我喝咖啡的時候分享了一些建議。

首先,要找出問題所在,然後構建基礎設置,再引入數據科學家。這可不是一個快速的過程。 (我的轉述大意)

最近,另一家知名公司的從事數據科學的零號員工向我發洩。她吐槽稱,她被迫在筆記本電腦上而不是在雲端上的大數據訓練人工智能模型。

如果你被錄用後沒有具體的問題需要解決,或者公司沒有做好數據科學的準備,你可能會發現自己很難提升價值。

6. 軟件工程傳授通用技能

成為一名初級軟件工程師就像獲得了技術領域的 MBA,你所學到的東西都只不過是滄海一粟。

你要學習數據庫、雲技術、部署、安全性和編寫簡潔的代碼。

你要通過觀察 Scrum 領導、高級開發人員或項目經理來學習如何管理軟件的開發。

你要通過代碼審查來得到指導。

如果你進入的公司擁有一支成熟的工程團隊,你幾乎可以保證你會很快提升自己的技能,並打造出一個通才的背景。

7. 軟件工程更具可轉移性

通過提供更全面的技術體驗,當你決定是時候改變時,軟件工程提供了更好的退出機會。

DevOps、安全、前端、後端、分佈式系統、商業智能、數據工程、數據科學……

我認識一些從軟件行業改行到數據科學的開發人員。如果你瀏覽一下數據科學的崗位描述,你會立即註意到,崗位描述到處都是核心的軟件開發技能。

image

如果你能構建端到端的項目,那麼你還可以做更多的工作,而不僅僅是為 Kaggle 構建模型。你可以採用該模型,將其產品化,設置授權和條碼,然後開始向用戶收取訪問費用。這就是你自己的初創公司。

我從來不認為數據科學是不可轉移的。根據數據做出決策是一項殺手級技能。但隨著我們變得越來越以數據為導向,這也將成為我們每一項工作的一部分。

8. 機器學習將成為軟件工程師的工具

隨著人工智能的產品化和易於使用,軟件工程師將開始使用人工智能來解決他們的問題。

我可以用一下午的時間教會開發者如何構建 Sklearn 分類器。但這並不意味著他們可以構建下一個 AlphaGo,不過,這確實給了他們一個替代基於用戶輸入的硬編碼條件邏輯的選擇。

數據科學家有專業知識,比如統計學,以及對模型如何工作的直覺。但 DevOps 和安全工程師也有自己的專業知識。

我認為這些都是常見的,沒有什麼不同。一個經驗豐富的軟件專業人員在不同專業之間的轉換速度比一個新入行的人選擇一個專業的速度要快一個數量級。

雖然我不認為我們會看到數據科學完全合併到軟件工程中,但我確實感覺數據科學有可能會成為另一個軟件工程專業。

9. 人工智能不會取代軟件工程師

儘管這觀點聽起來很傻,但我在 2014 年進入了軟件工程領域,因為我擔心人工智能會讓其他工作都被淘汰。

然而從那時起,這一狀況就幾乎沒怎麼變過。技術採用的速度很慢,人工智能的應用範圍比媒體想像的要窄得多。

與其他專業相比,機器學習離自動化軟件工程更遠。雖然我們有初創公司在構建酷炫的產品,比如人工智能代碼完成,但編寫代碼並不是真正的工作。這項工作是用技術來解決問題。

在奇點出現之前,軟件工程仍然將是一項寶貴的高薪技能。

結 語

首先,本文所述都是軼事。其次,我意識到我將數據科學家、機器學習工程師和人工智能研究人員混為一談了。但我認為,這些論點仍然值得考慮,因為這是你的職業。

我姑妄言之,你姑妄聽之,不必太過當真。我希望你自己研究一下,然後再做決定。這畢竟是作為數據科學家的一部分。

說到底,我們的工作就是解決問題。

原文鏈接

https://towardsdatascience.com/dont-become-a-data-scientist-ee4769899025