---
# System prepended metadata

title: 'Software engineer, Data engineer & Data scientist'
tags: [Data engineer, ' Data Scientist']

---

---
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

這些角色定位仍在進化之中。有些大公司從軟體工程團隊中拉出資料工程師，組建一支中央資料團隊。這樣，基礎設施和資料分析工作能在一起。雷鋒網獲知，有些案例中，資料科學家既需要做資料分析，也需要做資料整合。