データエンジニアと分析エンジニアの比較:自分に合ったキャリアの選び方

1年と少し前、私はデータエンジニアとしての自分の役割に行き詰まりを感じていました。大学ではビジネスを専攻していたので、その方面ともっとつながりを深めたいと考えていたのです。データエンジニアとしての仕事は楽しかったのですが、もっと柔軟で創造的なことをしたいと思っていました。自分が何をすべきか決められている仕事ではなく、ビジネスの意思決定に関わりたかったのです。データエンジニアであった私は当時、あらかじめ戦略的に決められている仕事をこなしているばかりのようで、優先順位の決定やビジネスのニーズについて、自分には発言権がないように感じていました。

そこで私は、戦略的なデータ決定、ウェアハウスアーキテクチャー、データモデルの自動化といった、自分が携わってみたいタスクが日常的にもっと発生するポジションを探して、いろいろなデータエンジニアのポジションに応募し始めました。ご想像いただけると思いますが、ビジネスにも関与しながら、厳密にバックエンドのIT開発というわけでもないデータエンジニアリングのポジションを見つけるのは大変でした。アナリストの仕事も探し始めたのですが、そうした仕事の場合、自分がそれまでの3年間のキャリアで必死に身に着けた技術スキルを、十分には活かせないことに気づきました。私はひどく落胆したものです。楽しいだけではなくやりがいもあって、自分が思い描いていた成長をさせてくれるような仕事は、どこにもないのではないかと思いました。

「そして、分析(アナリティクス)エンジニアというポジションを偶然見つけたのです。そのような職務は聞いたことがなかったのですが、仕事の内容を読むと、これこそ自分が探していたものではないかと感じました。技術的な面とビジネスの面の両方を扱う仕事だったのです。また、社内のさまざまなチームとの共同作業が求められる仕事でもありました。グロースチームやマーケティングチームとやり取りする一方で、SQLとPythonでのコーディングも引き続き担当でき、自分のコーディングスキルを伸ばせる仕事だったのです。」

私はそのポジションに応募し、現在、分析エンジニアとして働き出して1年ほどになります。後悔したことは一度もありません。

もしあなたが当時の私と同じような状況にいて、自分のデータキャリアをどの方向に伸ばしていけばよいのか迷っているのでしたら、この記事を参考にして理解を深めていただければと思います。以下では、私がデータエンジニアと分析エンジニアとしてそれぞれ行っている仕事を比較します。

データエンジニアの仕事とは?

まず、データエンジニアの役割についてからお話しします。データエンジニアとは、データの保管や移動をサポートするためのインフラを構築する人のことです。データそのものを見ているというよりも、データをどのようにサポート するかに重点を置いています。たとえば、Pythonを使ってデータパイプラインを書く、Sparkを使ってデータを処理する、AWSのようなクラウド技術を使ってインフラを準備する、といった作業をします。データエンジニアは、ソフトウェアエンジニアなど他の開発者たちと密接に連携して仕事を進めます。

私はデータエンジニアとして働き出したばかりの頃、DevOpsと、AWSを使ったインフラの準備ばかりに集中していました。Data DogやJenkinsなど、さまざまなパイプラインツールを使ってコードの監視や準備を行っていたものです。AWS環境のクリーンアップやEC2クラスタの準備を行うPythonスクリプトを大量に書いていました。しかし2年目になると、SQLやdbtを使った仕事をすることが多くなりました。これは、ソフトウェア開発言語や、AWSやAzureなどのクラウドプラットフォームを使って仕事をするデータエンジニアにとって、異例のことでした。こうしたことは、勤めている会社や、その会社でどのような役割分担をしているかによって、大きく左右されます。それでも私は、データを取得できるようにするPython APIのようなアプリケーションの構築に集中していました。このときも、データそのものを見るのではなく、インフラや処理ツールを構築していたのです。 

データエンジニアの仕事に特に必要なスキル:

  • Python

  • AWS

  • Git

  • Bash

  • Spark

  • Hadoop

データエンジニアは日々、スクラムマスターとミーティングをして、自分のタスクの優先順位を決めてから仕事を進めるようにします。ビジネスチームとミーティングをするのではなく、通常、間に入ってくれるこのような人がいて、何を優先すべきか指示してくれます。次に、他のデータエンジニアや開発チームとミーティングを行って、データプロセスをどのように構築するのかを決めることもあります。たとえば、設計を決めたり、準備する必要のあるものを詳しく決めたりします。1日の大半は画面に向かって黙々と作業し、自分のコードと、自分が構築しているものにとにかく集中します。ほとんどの日は、準備の速度を上げるための、あるいはインフラの変更について実行前にテストできるようにするためのPythonスクリプトを書いていたものです。 

分析(アナリティクス)エンジニアの仕事とは?

データエンジニアになるために必要なことについて、ご理解いただけたかと思います。ここからは、分析エンジニアになるために必要なスキルについて説明します。技術的なスキルは、これまでとはかなり異なる目的で活用することができます。また、ビジネスについての深い知識を活用し、データを使ってビジネスの方向性を決めるような機会も期待できます。

まず、分析エンジニアをどのように定義すればよいのでしょうか。分析エンジニアには、データをそのソースから移動、変換することで、それをデータアナリストやビジネスユーザーが簡単に分析、視覚化し、その結果に基づいて行動できるようにする役割があります。分析エンジニアは、データそのものを扱うだけでなく、データの移動も行います。データを取り込み、変換し、スケジュール設定して、分析に使える状態にしておくのが、分析エンジニアの仕事です。多くの分析エンジニアは、「最新のデータスタック」を支える頭脳としての役割を果たし、ETL/ELTに使うツールを決定して、そのセットアップも行います。 

分析エンジニアの仕事に特に必要なスキル:

  • SQL 

  • dbtの使用経験 

  • コミュニケーション

  • Python 

  • 最新のデータスタックツールの使用経験(Snowflake、Google BigQuery、Fivetran、Matillion、Airbyte、Looker、ThoughtSpotなど)


こうしたスキルのいくつかについて、少し詳しく見ていきましょう。

SQLとdbt  

データアナリストと同様、分析エンジニアもSQLを当然のごとく使っています。毎日SQLを使ってデータモデル内の変換を書いています。データアナリストやBIアナリストは、ローコードポイントやクリックプラットフォームでSQLを生成する傾向があるかもしれません。一方、分析エンジニアは最初からSQLを使い、もっと制御できるようにして、複雑なクエリにも対応できるようにします。SQLは、分析エンジニアを目指す人が習得する必要のある特に重要なスキルの1つと言われています。その習得には、dbtの使用経験も必要です。dbtは、データ変換における業界のリーディングツールであり、分析エンジニアの仕事を生み出してくれた会社の名前でもあります。データモデルを書く際には、dbtを使うことがほとんどでしょう。SQLを使用するdbtは、SQLさえ分かっていれば、かなり簡単に習得できます。 

Python

分析エンジニアは、データエンジニアやソフトウェアエンジニアのようにコードを徹底的にマスターしている必要はありません。そうは言っても、Pythonでコーディングする方法を知っていることは重要です。大半のデータパイプラインツールはPythonを利用していますので、独自のパイプラインを作成する際にはPythonが必要です。データパイプラインを担当するのはデータエンジニアだ、と主張する人もいることでしょう。しかしその点は、会社によって、そしてチームが持つ処理能力によって、本当にさまざまです。私は、データエンジニアと分析エンジニアのどちらもこれを担当していることを知っています。私の場合について言えば、所属するチームにデータエンジニアがいないため、私がこれをチームのために管理しています。

最新のデータスタックツール

その他、分析エンジニアは、最新のデータスタックで最もよく使われる各ツールを熟知している必要があります。データの取り込み、変換、保管、準備のための各種ツールについて、十分に理解している必要があるのです。世の中で使われているすべてのツールを理解している必要はありませんが、それぞれのツールを支えているコンセプトについては、十分に知っておく必要があります。スタックの各部分で使われるツールの1つを理解していれば、他のツールについても理解できることでしょう。個人的に、この点はこのポジションの仕事で特に楽しい部分の1つだと感じています。常に新しいツールを学べるわけですから。

先進的なクラウドデータと分析ポートフォリオ

コミュニケーション

コミュニケーションは、ビジネスチームとやり取りするあらゆる職務において、技術以外のスキルとしては特に重要なものの1つです。分析エンジニアにとっては、データの状態についてすべての人に最新の情報を伝えるのが仕事であるため、コミュニケーションは重要です。コミュニケーションをとる必要があるのは、データ品質が低下したとき、パイプラインが停止したとき、そして最も重要なのが、ビジネスのニーズを把握するためです。ビジネスチームとデータアナリストは、分析エンジニアにとって最も重要なステークホルダーです。コミュニケーションを適切にとっていないと、品質の低いデータから正確でない推測が行われ、せっかくのチャンスを逃してしまう可能性もあります。 

分析エンジニアの仕事に該当しないこと

  1. データをサポートするためのアーキテクチャーは構築しない

    ソフトウェアエンジニアリングに似た仕事をすることは期待しないでください。アプリケーションやインフラを構築することはありません。AWSのようなクラウドプラットフォームは使うかもしれませんが、使用している最新のデータスタックツールをサポートするためにECSクラスタを起動させる以外では、あまり使わないでしょう。 

  2. 一般的なソフトウェア開発言語は使わない 

    分析エンジニアになるためにコンピューターサイエンスの学位を取る必要はありません。Pythonで書かれたような単純な関数の挙動についての知識は必要です。基本的なコードを読める必要がありますが、そうしたコードの作成方法を知っている必要は必ずしもありません。Pythonは重要ですが、JavaScriptやReact、Angularの知識は必要ありません。Bashの知識も不要です。  

  3. やり取りする相手は他のエンジニアやプロダクトオーナーのみではない

    ビジネス面に特化していて、技術的な知識のあまりない人たちとやり取りすることが想定されます。自分のように技術的な知識があるわけではない人たちとどのようにコミュニケーションをとるかを、知っておく必要があるわけです。分析エンジニアであれば、技術的なことだけでなく、ビジネスのこともどのように伝えるかを知っておく必要があります。仕事の優先順位をプロダクトオーナーから指示されるというよりも、分析エンジニア自身が、チームにとっての優先順位の決定をサポートするのです。分析エンジニアの主なステークホルダーは、連携して仕事をするデータアナリストです。分析エンジニアとアナリストが連携しながら、ビジネスのどの部分を最優先にするのかを決めるわけです。  

どちらのポジションを選べばよいのか

自分にとって同じように重要であるが、対応分野の異なる2つのポジションがある場合、どちらを選べばよいのでしょうか。以下では、ごく簡単なヒントをいくつかご紹介します。  

分析エンジニアの仕事は、次のような人に向いている可能性があります。

  1. ビジネスについてよく理解していて、ビジネスに関連する問題を解決するのが好きな人。

    分析エンジニアになるには、ビジネスでよく使われる用語、たとえば、ROI、定着率、KPIといった用語や、マーケティング分野であれば顧客獲得コスト(CAC)といった用語を理解しておく必要があります。ビジネスの成長と収益化をサポートできる環境を整え、ビジネスに貢献するのが仕事だからです。データエンジニアである場合、この事実から簡単に切り離されてしまいがちです。しかし、分析エンジニアであるなら、どのようなタスクでも、この事実を常に念頭に置いて取り組む必要があります。データを使って、問題をもっと効率的に解決できる新しい方法を常に検討することが求められます。

  2. 新しいツールを習得して使うことが好きな人。

    分析エンジニアになるような人なら、自分のデータスタックに加えるべき新しいツールやパッケージをいつも探しているものです。新しいツールを使うことで問題の改善に役立つ分野を見つける機会が常にあることでしょう。自分がリサーチとドキュメントの読み込みが好きかどうか、確認してみてください。そうした作業はこの仕事で特にストレスがたまるものの1つですが、同時に、やった甲斐があると感じられる最たる部分でもあります。パッケージの実装を成功させ、そのおかげでチームが時間を節約できるのを見れば、これ以上ない気分を味わえます。

  3. 人から指示されて問題の解決策を見つけるよりも、自分で率先して道を切り開くのを楽しめる人。

    分析エンジニアの仕事では、先を見越して自分から動くことがとにかく大切です。じっとして仕事が来るのを待つのではなく、自分から仕事を探す必要があります。データの品質とモニタリングは、信頼できる結果を生み出す上で大きな比重を占めます。問題を防ぐために追加できる確認事項を見つけたら、それを組み込むことが求められます。たとえば、数か月前のことですが、私はデータ量が大きく減少していることに気づきました。その後、誰も気づかないままその状態が数週間続いていたことが判明しました。以降このような事態が起こらないようにするため、私はデータモデルに追加できるdbtパッケージについて調査した上で、データ量が平均以下になったときにアラートを受けるようにしました。

    データエンジニアの仕事は、次のような人に向いている可能性があります。

  4. 他のエンジニアとの共同作業が好きな人。

    他のエンジニアと一緒に仕事をしたり、開発者としての自分のスキルを伸ばしたりするのに喜びを感じる人には、データエンジニアが最適かもしれません。データエンジニアは、それぞれ異なるさまざまなレベルのエンジニアと一緒に働き、その人たちから学べる機会があります。優秀なエンジニアから学ぶことで、技術的な知識を短期間で広げることができます。

  5. データパイプラインの構築をサポートするインフラやコードに関心がある人。

    データエンジニアの仕事は、データそのものに目を向けることはまずありません。データアナリストやデータサイエンティストなどと同じ水準で詳しくデータを見ることはないのです。データを扱うのは好きでも、そこから引き出すことのできるインサイトに関心があるとは必ずしも言えない、という人には、データエンジニアの仕事の方が合っているかもしれません。APIの構築、コードの展開、プラットフォームのサポートといった、従来のソフトウェアエンジニアリングの役割にスムーズに移行できるスキルを学べます。

  6. 新しい言語でのコーディングや新しいプロジェクトの構築を学びたい人。

    データエンジニアの仕事では、React、Javascript、Golangなど、新しいコーディング言語や開発ツールを学べる機会が常にあります。データエンジニアを担当するさまざまなチームが数多く存在し、それぞれが独自に技術を組み合わせて活用しています。こうしたチームにいれば、実際のアプリケーションを構築するのに役立つ新しい言語を学んで、実際に使う経験を積むことができます。データエンジニアの仕事では、パイプラインなのか、ウェブプラットフォームなのか、あるいはモバイルアプリケーションなのかといった形態にかかわらず、実際の製品を世に送り出すのが一般的です。顧客が他のチームであろうと、あなたの会社から購入する人であろうと、顧客が直接使うこうした製品を構築することは、非常にやりがいがあるのではないでしょうか。

成長に向けた最善の道を選択する

分析エンジニアの仕事は、データエンジニアの仕事と比較して、現在も増加傾向にあります。LinkedInに掲載されているポジションはかなり少ないのですが、企業がその価値を認めるにつれ、件数は日に日に増え続けているのです。データエンジニアの仕事では、職務の選択肢が確実に増えています。企業が使うテクノロジーによって多種多様なものになるため、自分独自のスキルセットに合った職務を選べます。 

とはいえ、どちらのポジションに対しても非常に高い需要があります。データが特に価値ある資産の1つであることに、どの企業も気付き始めているのです。Glassdoorによると、米国における分析エンジニアとデータエンジニアの給与の中央値は、それぞれ111,665ドルと114,404ドルです(ただし、サンフランシスコ・ベイエリアの大手ハイテク企業のデータエンジニアについては、これを上回る水準となっています)。似たような給与なのですから、この点を自分に合ったキャリアを選ぶ決め手にしてはいけません。あなたが現在BIアナリストであれば、分析エンジニアの仕事は確実なキャリアアップになります。

データエンジニアの仕事は、インフラとプラットフォームの構築や、他のエンジニアとの共同作業を楽しく感じ、ソフトウェア開発のスキルを伸ばしたい人に向いています。分析エンジニアの仕事は、SQLを使いこなし、新しいツールを学ぶのが好きで、ビジネスチームやデータアナリストとやり取りする機会を持ちたい人に向いています。私は自分の仕事をデータエンジニアから分析エンジニアに切り替えたわけですが、自分にとってベストの決断をしたと確信しています。この新しいキャリアパスは、やりがいを感じられるだけでなく、新しいことに挑戦したり、ビジネスの成長を支援したりといった柔軟性も私に与えてくれました。