こんにちは。投資エンジニアの三年坊主(@SannenBouzu)です。
今回は、データサイエンティストへのキャリアチェンジに興味がある若手エンジニアの、このような疑問に答えます。
データサイエンティストは『世界で最もセクシーな職業』って注目されたこともあって興味があるけど、実際のところどんな仕事をしているんだろう?エンジニアの仕事とどういう違いがあるのかな。
担当する業務に必ずしも明確な線引きがなさそうな2つの「職種」ですが、Web業界、特に広告業界において、データサイエンティストとエンジニアが協力して働く部署に異動してからの業務経験も生かして、私の観測範囲でお伝えします。
- 「世界で最もセクシーな職業」データサイエンティストに憧れる方
- データサイエンティストとエンジニアの違い・意外な共通点が気になる方
- トラブル対応ってエンジニアだけがするんでしょ?と思っている方
データサイエンティストとは?エンジニアとは?【業務内容とスキルセット】
データサイエンティストは「データから知見を引き出しビジネスに生かす」
データサイエンティスト協会の定義は「データサイエンス力、データエンジニアリング力をベースにデータから価値を創出し、ビジネス課題に答えを出すプロフェッショナル」となっています。
さらに短くまとめると、「データから知見を引き出しビジネスに生かす」ということになるでしょう。
業務内容としては、例えば広告の分野で言えば、CTR、CVR、ROASといった数字を計測し、向上させることなどが挙げられます。
協会によると、以下の3つのスキルセットを課題解決のフェーズによって使い分けるのが理想的とされています。
- ビジネス力(business problem solving):課題背景を理解した上で、ビジネス課題を整理し、解決する力
- データサイエンス力(data science):情報処理、人工知能、統計学などの情報科学系の知恵を理解し、使う力
- データエンジニアリング力(data engineering):データサイエンスを意味のある形に使えるようにし、実装、運用できるようにする力
引用:データサイエンティスト協会、データサイエンティストのミッション、スキルセット、定義、スキルレベルを発表(pdf)
データサイエンティスト向けの5分でできるスキルセットチェックもあるので、必要なスキルのイメージがつかみやすいですね。
エンジニアは「インターネット上で動くアプリケーションを作る」
特に「Webアプリケーションエンジニア」と呼ばれる人を対象に話を進めますが、彼らは一言でまとめると「インターネット上で動くアプリケーションを作る」人と言えるでしょう。
「新しい決済方法を追加する」「そもそも新しいWebアプリを作る」などが、業務内容の具体例になります。
エンジニアが使い分けるべき3つのスキルセットを、データサイエンティストと対応させる形で並べてみます。
- ビジネス力:(データサイエンティストの場合と同じ)
- システム設計・構築力:大量の負荷に耐えられるシステム構成を設計し実現する力
- エンジニアリング力:メンテナンスしやすいWebアプリケーションを実装・運用する力
「ビジネス力」については、データサイエンティストの場合と比べると、少し弱めでも大丈夫な印象です。
語弊をおそれずに言えば、望ましいことかどうかは別として、正常に動作するWebアプリケーションが売上にどう貢献するか考えなくても、一応エンジニアとしてやっていけないことはないと思います。
データサイエンティストと比較して、ケタ違いに重要なのが「システム設計・構築力」だと感じます。
下のツイートの通り、アーキテクチャ設計やDevOps業務を含めて、設計→開発→テスト→運用まで一気通貫で対応できるスキルが、中級以上のエンジニアに求められています。
>サーバーサイドエンジニアは絶滅危惧種?
「バックエンドのプログラミングだけ」をやるエンジニアの価値がSPAやFirebaseの登場によって目減りしているのは間違いないので、「アーキテクチャ設計」や「DevOps業務」等へ仕事の幅を広げていくのは必須だと思いますね〜(^.^;)https://t.co/TXUAcl440Y
— 勝又健太 a.k.a. テック系Youtuber (@poly_soft) 2019年3月5日
「エンジニアリング力」については、「ただ動くプログラミングができればいい」ではなく、アプリケーションの変更・拡張やメンバーの入れ替わりに強い実装ができるかが鍵になります。
実務に役立つ書籍を手元に置きつつ、業務経験を通してスキルを身につけたいものです。
データサイエンティストとエンジニアの違い
業務内容・スキルセットに大きく関係しますが、私自身の業務経験も交えつつ、データサイエンティストとエンジニアの違いを紹介したいと思います。
データサイエンティストは「探索的にデータから知見を引き出せる」特徴
データサイエンティストには、探索的にデータから知見を引き出せる特徴があることを実感します。
エンジニアは、最終成果物がある程度明確になった案件に取り組むことが多いので、実装する際の回り道が比較的少ないです。(※もちろん例外もありますし、技術的な障害を乗り越えるために設計や実装面で試行錯誤することは何度もあります)
一方で、データサイエンティストの場合は、データと結果の間を行き来するのが前提になっていて、データを触って結果を出す・結果を見ながらデータを触るサイクルを繰り返して、徐々にデータから知見を引き出しています。
エンジニアは「Webアプリケーションを構築できる」特徴
エンジニアは、やはりWebアプリケーションを構築できるところに特徴があると実感します。
私も職場でエンジニア寄りの仕事をしていますが、データサイエンティストに「◯◯というデータを取得できるようにアプリケーションを変更してほしい」と頼まれることが多いです。
大きな違いは「最終成果物が決まっているかいないか」
上の見出しで「最終成果物」について少し触れました。
データサイエンティストの場合、最終成果物が必ずしも明確に決まっているわけではなく、データの分析を通して徐々に最終成果物(のようなもの)に近づいていく印象があります。
一方で、エンジニアの場合は、最終成果物がある程度決まった上で、それを商用・大規模利用に耐える形で実現するところに特徴があります。
引用では「機械学習エンジニア」について書かれていますが、「データサイエンティストが『アナリスト』の発展版」と考えると、一般的なエンジニアとの違いも理解しやすいのではないでしょうか。
重要なポイントとしては「データサイエンティストは『アナリスト』の発展版」で「機械学習エンジニアは『エンジニア』の発展版」だというところかと。
引用:データサイエンティスト&機械学習(人工知能)エンジニアのスキル要件と、過熱する人工知能ブームが生み出す狂騒曲と(2018年2月版:追記あり)
データサイエンティストとエンジニアの意外な共通点
「『アナリスト』の発展版」として分析をメインに行うデータサイエンティストですが、私が一緒に働いてみて感じた共通点がこちらです。
- Web技術への理解(HTTP通信の基礎)
- データの加工技術(ETL)
- 夜間トラブル対応・復旧
特に、データサイエンティストでも夜間トラブル対応をするというのが私にとっては意外でした。
Webサービスを24時間稼働させるためにエンジニアが夜間対応し、リアルタイムでデータを取得するためにデータサイエンティストが夜間対応するというのは、考えてみれば理解できなくはないのですが、事前にそこまで想像できていませんでした。
朝4時にトラブル対応している例も見たこともあり、エンジニアとデータサイエンティストの垣根が低いことは良いと感じますが、個人のボランティア精神だけに頼るサービスの24時間運営は望ましくないし長続きしないと考えています。
自動復旧の仕組みを取り入れること、個人が背負いこみすぎないことが大切だと思います。
おわりに:「経験者の話を聞く」「一緒に働く」でイメージを具体化する
データサイエンティストとエンジニアの違い・共通点について、実体験を交えて紹介しました。
言葉だけが有名になっていて実態が理解されにくい「データサイエンティスト」ですが、経験者の話を聞いたり、彼らと一緒に働いたりすることで、より具体的なイメージが持てます。
身近に経験者がいなかったり、実際に働くことが難しい場合は、「経験者に多く接してきた人」に話を聞く機会を作ってもらうことが有効な選択肢です。
データサイエンティストへのキャリアチェンジを目指すにしても、エンジニアとして引き続き頑張るにしても、本記事の内容が参考になれば幸いです。
関連記事:こちらも読まれています
Webエンジニアの業務内容を解説【1日の仕事の流れも具体的に】
エンジニアが実務で使える本おすすめ10選+α【手元に置きたい】
【Web系】エンジニア夜勤の実態【体験談・メリットデメリット】
エンジニアが辛い4年目新卒がレバテックキャリアに相談した話【体験談・評判】