--- title: Software engineer, Data engineer & Data scientist tags: Data engineer, Data Scientist --- 大家都知道,這三種角色各有不同定位,也知道他們之間有許多一致的地方,但是否能講明白這其中的區別呢? 國外 ETL 服務商 Stitch 的 CEO Jake Stein,近日對這個話題進行了總結。他還繪製了一張工具圖,來呈現他們在日常工具使用上的不同。對於新手,也可以通過這張圖來看典型的「資料科學家」、「資料工程師」和「軟體工程師」都要掌握哪些工具。 Jake Stein:隨著資料的爆炸式增長,對資料處理的專家技能需求也隨之井噴。這帶來的結果之一,是更精細的分工。對於資料管理工作的核心角色:資料科學家、資料工程師和軟體工程師,過去幾年見證了他們越來越清晰的定位。 對於新興職位「資料工程師」,它算是「軟體工程師」下面新浮現出的一個子類別。單列出該職位是一項英美近年來的趨勢。但在許多公司,遷移、管理資料仍舊是軟體工程師的活。 ![](https://i.imgur.com/ZkhQyB8.png) ## 職能概括 ### 軟體工程師 軟體工程師幹的活兒是開發應用和系統。這過程中的每一個環節,從設計、寫代碼、測試到檢查,開發者都要參與。生成資料的產品都是他們開發的。軟體工程是三個角色中最古老的一個,並且有相當成熟的方法體系和工具庫。 工作內容包括: * 前端、後端開發 * 網頁應用 * 移動應用 * 作業系統開發 * 軟體設計 ### 數據工程師 資料工程師需要開發能對資料進行整合、存儲和提取的系統,並從軟體工程師開發的應用和系統中獲取資料。資料工程的誕生,是作為軟體工程大類下的一個更細分的技能類別。據雷鋒網 (公眾號:雷鋒網) 瞭解,根據國外統計,40% 的資料工程師原本是軟體工程師。雷鋒網獲知,這是目前一個很普遍的職業發展道路(軟體工程師專注做資料工程)。 工作內容包括: * 高級資料結構 * 分散式運算 * 併發程式設計 * 使用 Hadoop, Spark, Kafka, Hive 等新工具 * 開發 ETL/資料流水線(data pipelines) ### 資料科學家 資料科學家的職責是基於資料作分析。 或許有一隻想要更好理解消費者行為的團隊,僅僅做一個單次分析。也可能是開發一個機器學習演算法,然後將之在軟體工程師和資料工程師開發的代碼基礎上執行。 工作內容包括: * 數據建模 * 機器學習 * 演算法 * 商業智慧的 dashboards 這些角色定位仍在進化之中。有些大公司從軟體工程團隊中拉出資料工程師,組建一支中央資料團隊。這樣,基礎設施和資料分析工作能在一起。雷鋒網獲知,有些案例中,資料科學家既需要做資料分析,也需要做資料整合。