身為一名數據科學家“過來人”,我為什么更建議你去做軟件工程師
大數據文摘出品
來源:medium
編譯:朱科錦、yawei
在數據最火的時候,數據科學家被稱為21世紀最性感的工作,一時進入了全民數據科學的時代。數據科學的價值雖然有目共睹,但不是每個公司都有條件來實現數據驅動的商業愿景,每個公司的數據基礎設施水平層次不齊,有些遠達不到數據科學家可以大展拳腳的水平。
作為前數據科學家和現軟件工程師,作者給出了過來人的建議。讓我們聽聽他為什么勸想做數據科學家的勇士不如去做軟件工程師。
當有人問我如何進入數據科學領域時,我建議他們去做程序員。
這只是我的個人觀點。我很希望能聽到你的反駁意見。
每個人都希望成為一名數據科學家。雖然數據科學可能是21世紀最火熱最的工作,但是軟件工程師也同樣是一份回報率很高的職業。
經常有應屆生和跳槽者來問我要如何進入數據科學這個領域。我給他們的建議是:還是去做軟件工程師吧。
我在這兩個領域都有經驗,我想用親身經歷說服你,軟件工程師是更好的選擇。
1. 軟件工程領域的就業機會更多
與數據科學相比,軟件工程領域的工作機會要多出一個數量級。以下截圖展示了谷歌搜索“數據科學家”和“軟件工程師”工作后的搜索結果。

谷歌搜索:indeed(求職網站)美國數學科學家

谷歌搜索:indeed 美國軟件工程師
我們可以得到7616條有關數據科學工作的搜索結果和53,8893條有關軟件工程工作的搜索結果。該搜索只是針對于在美國的工作,在其他國家試下來也有類似的結果。
根據Glassdoor的說法,數據科學家能賺更多的錢,但根據我個人未經檢驗的假設,數據科學工作的平均所需的工作經驗也要求更高。

www.glassdoor.ca
www.glassdoor.ca
但如果Open AI給你開出100萬美元的薪水,我建議你還是接下這份工作。
2. “數據科學”的定義仍沒有達成共識
管理層通常無法對“數據科學”的定義達到共識。由于業務限制,完全尊重該職位的本來定義有時也是一種奢侈。這意味著“數據科學家”的職責因公司業務需求而異。

一張簡圖
盡管軟件工程師和數據科學家之間存在很多不同的角色分工,但現實不太可能遵循這種明確的職責劃分。仍在搭建基礎架構的初創公司尤其如此。
被聘用的候選人最終將致力于解決公司當前最需要解決的問題,而不是解決他們被錄用“職位”的工作范疇內的問題。
很多同事的經驗表明,許多數據科學家發現自己像軟件工程師一樣在編寫后端代碼。我還認識一些精通Excel和財務工作的“數據科學家”。
這與你在經歷Kaggle比賽中成長時的期望形成了鮮明的反差。
3. 數據科學家們仍處于孤軍奮戰的狀態
大多數公司不需要像軟件工程師那樣多的數據科學家。很多公司目前正在雇用他們的第一位數據科學家。
因此,即使與開發人員坐在同一張桌子上,許多數據科學家最終還是獨自工作,這樣工作的問題是很難獲得別人的反饋。軟件工程師們要么不了解預測建模,要么忙于處理完全不同的問題。
相比之下,當軟件工程團隊的好處之一就是你有機會對同事說:“我認為我們應該以XYZ方式實施ABC。你怎么看?”。
4. 數據科學是偏探索性質的工種,不保證結果
你準備好跟你的老板解釋為啥過去兩周以來的勞動成果不能用于提高業務了么?這種尷尬的對話時常會發生。
解決已知的問題或是未知問題是軟件開發與AI之間的根本區別之一。
暫且不談代碼問題和其他限制,作為軟件工程師,在開始工作之前你大概知道大多數軟件工程項目是否可行。但在建立一個ML模型之前你并不能知道該模型是否會有效。
5. 公司還沒有準備好使用AI
即使在“每個公司都是AI公司”的時代,大多數公司沒有支持AI的基礎架構,很多公司甚至不需要AI。
一家快速擴展的初創公司的數據科學主管最近分享了一些建議。
首先,你要發現問題,然后構建基礎架構,然后請數據科學家來解決問題。這不是一個可以快進的過程。
最近,另一家知名公司雇傭的第一位數據科學家向我抱怨到:她被迫在筆記本電腦而不是云端的大數據上訓練AI模型。
如果你沒有特定的問題要解決,或者公司沒有做好數據科學戰略的準備,那么你很難體現自身的價值。
6. 軟件工程學習更普適的技能
成為初級軟件工程師就像獲得一個科技領域的MBA一樣。你可以在很多方面都學到一點知識。
你會學習數據庫,云技術,部署,安全性以及如何編寫簡潔的代碼。
通過敏捷大師,高級開發人員或項目經理,你將學習如何管理軟件開發的過程。
通過代碼審查,你將得到很多指導。
如果你加入的公司擁有一支成熟的軟件開發團隊,毫無疑問你會迅速提高自己的各項技能。
7. 軟件工程的經驗更容易遷移
當你決定進行跳槽時,軟件工程可以提供更全面的技術經驗,從而給你更好的就業機會。
DevOps,安全性,前端,后端,分布式系統,商業智能,數據工程,數據科學…
我知道許多從軟件轉向數據科學的開發人員。如果你搜索數據科學的職位描述,你會發現它們包括了很多核心的軟件開發技能。

資料來源:Indeed(我精選了資料來源)
如果你可以搭建端到端的項目,那么除了為Kaggle構建模型外,你還可以做更多的事情。你可以搭建一個模型,進行生產化,設置授權和Stripe(線上支付),然后開始向訪問用戶收費。那么你已經可以做自己的創業公司了。
我不是說數據科學的經驗不適合遷移。根據數據做決定是一項重要的技能。但是隨著社會變得越來越受數據驅動,這種技能也將成為每一項工作的一部分。
8. 機器學習將成為軟件工程師的一項工具
隨著AI的商品化和使用簡化,軟件工程師將開始使用AI來解決他們的問題。
我可以用一下午教一位開發人員如何構建Sklearn分類器。這并不意味著他們可以構建出下一個AlphaGo,但這確實為他們提供了一種可替代基于用戶輸入的條件邏輯編碼的方法。
數據科學家具有關于統計以及模型工作原理的專業知識和直覺。但是運維和安全工程師也有他們自己的專業知識。
我認為這幾者的相同比不同更加普遍。經驗豐富的軟件專業人員可以在不同專業之間遷移,其適應速度可以比新入職者更快。
雖然我不認為數據科學會完全整合到軟件工程中,但我確實感覺數據科學可能會成為另一個軟件工程專業。
9. 人工智能不能取代軟件工程師
因為擔心AI會取代其他工作,我于2014年進入軟件工程領域。
自那以后,AI并沒有像我想象得那樣快速發展。技術的場景落地速度很慢,而AI的使用范圍也遠沒有媒體所宣傳得那么廣。
與其他工作相比,機器學習要實現把軟件工程自動化的進程更路漫漫。雖然有一些新興公司在開發諸如“AI編寫代碼”之類的出色產品,但編寫代碼并不是真正的工作。真正意義上的工作是指使用技術去解決問題。在AI擁有這項能力之前,編程將仍然是一項寶貴且高薪的技能。
結語
首先,這篇文章只是經驗之談。其次,我把數據科學家,機器學習工程師和AI研究人員粗略地歸為一類,這三類工作有其個體差異。但是我認為我的論點仍然值得你考慮,畢竟這關乎你的職業選擇。
不要太把我的觀點當真。我希望你做好充分的行業研究然后做出自己的決定。這也是成為數據科學家的一部分:) 。
歸根結底,我們通過解決問題來獲得報酬。
相關報道:https://towardsdatascience.com/dont-become-a-data-scientist-ee4769899025
【本文是51CTO專欄機構大數據文摘的原創譯文,微信公眾號“大數據文摘( id: BigDataDigest)”】