データエンジニアに要求されるスキル一覧
現状多くの日本企業ではデータエンジニアという役割を専任で募集を出してるケースがあまり無くて、多くはデータサイエンティスト求人の歓迎要件にさらっと「データ分析基盤の構築経験」とか書かれてたりする。
お前らほんと舐めんじゃねーよ。ってことを俺は今日データエンジニアを勝手に代表して言いたい。
まずデータエンジニアとして日々仕事をしていて一番感じることは、扱う技術領域の圧倒的な広さ。
たまにフルスタックエンジニアの求人なんかを目にするけど、そこで求められてるのはせいぜいサーバーサイドからフロントエンドまでの、Webアプリケーション開発のスキルスタックで閉じてたりする。
それを考えると、今データエンジニアが現場で要求されてる技術領域の広さって、フルスタックエンジニアよりもよっぽどフルスタックなんじゃないかって思う。
たぶん今はデータエンジニアリングの黎明期というか、新しい領域として需要が急拡大してて、なおかつ日進月歩でものすごい技術の変化が起こっているところだから、その歪みとして理不尽に広大な知識を求められてしまっている時期じゃないかと思ってる。
というわけで、以下にデータエンジニアが求められている技術スタックを、領域別に洗い出してみた。
■Webアプリケーションエンジニアとしてのスキル
- RESTFul API設計
- Webサーバー
- DB設計
- SQL
- プロキシ/ロードバランサ
- HTTP
- セキュリティ(HTTPS/TLS)
- パフォーマンスチューニング
- UI(HTML/Javascript)
■インフラエンジニアとしてのスキル
■SREエンジニアとしてのスキル
- 構成管理・デプロイ環境の整備
- ミドルウェアの性能監視、チューニング
- ログ収集基盤の構築、運用
■データエンジニアとしてのスキル
- データレイクの設計、構築
- 分散ストレージ・分散DBの設計、構築
- 分散処理(基盤)の設計、構築
- データパイプライン設計(Kafka/Spark Stream...etc)
- データ処理(バッチ処理)
- データ処理(ストリーム処理)
- カラムナフォーマット(Apache Arrow…etc)
- データシリアライザ(Protocol Buffers…etc)
- 分析環境・BIの構築、連携
■機械学習エンジニア/データサイエンティストとしてのスキル
という感じで、複数にまたがった、かなり広範なスキルを求められる現場が多いんじゃないかと思う。
もちろん全てを同時的に求められるわけではなく、フェーズや案件毎に移り変わったり拡大、縮小していくイメージ。
殴り書きしたので漏れや偏りはあると思うし、当然現場によるだろうけど。
データエンジニアに限定してもすごい広大なのに、なぜか今はそれに加えてデータサイエンティストとしての、それはそれ自体でものすごい広さと深さがある役割まで付随してきたりする。
というか冒頭で書いた通り”データサイエンティスト”でひとくくりされていて、歓迎要件にサラッと「データ分析基盤の構築経験」とか、おまけみたいに付記してある求人が結構目に付く。
そんな兼務でこなせるほど軽い役割じゃないんだが..。
ちなみに上記で挙げたのはあくまで技術的な要素だけだけど、扱うシステムの特性上、多くの現場では技術的なスキルに加えてかなりの上流スキル、いわゆるプロジェクト管理能力が要求される。
この辺は気が向いたら別で書く。
正直今の要求水準だと、普通に仕事としてエンジニアやってる人にはデータエンジニアとしての業務はキャパシティ的にきついと思う。
本当に趣味と一致してる感じの人じゃないと、たぶん現場で求められるスキルの広さとかスピード感とかに対応できないと思う。
能力というより、モチベーション的に。
ちなみに自分はほぼ趣味でやってるけど、それでもひぃひぃ言ってます。
なので、さすがにそう遠くない先にもうちょい分業化が進むだろうけど、日本の企業は技術ナメてるし疎いから、それに気付き始めるまでに後2,3年ぐらいかかりそう...。