データサイエンティスト転職で気を付けるポイントをまとめてみた

# モチベーション
現職でデータサイエンティストの採用活動や自分自身が転職活動をする中で、ここを押さえたらうまくいくはずだというポイントをまとめ、データサイエンティストにキャリアチェンジしたい方やキャリアアップしたい方の参考にして頂けたらと思います。同時に準備不足で残念な候補者を減らすために、本音で攻略法を共有したいです。
また、「[これからデータサイエンティストを目指す人は要注意](https://qiita.com/ssl_ds_sps/items/ce0ce9c180dc2c90ff28)」という記事を書いていますので、データサイエンティストというキャリアを目指す上で覗いてみてください。

# 自己紹介
IT業界の事業会社でデータサイエンティストをしつつ、データサイエンスチームのマネジャーとしてメンバー育成と中途採用なども担当している者です。データ分析やデータサイエンティスト歴は5年+程度で、大学院までは応用物理系で統計分析や微積分・線形代数、C言語等は触っていたものの、コンピューターサイエンスやアルゴリズムは全くの門外漢で、データ分析の分野に飛び込んで今に至ります。シニアデータサイエンティストというにはまだ早く、中堅といったところです。

## 採用経験
中途のデータサイエンティストの書類選考・面接を100回以上行ってきました。
採用する際に定型質問から、応募者の経験に応じて柔軟に深堀質問やアドリブ質問できるくらいには経験があります。

## 転職活動の戦歴
比較的トップレベルの企業のデータサイエンティストのポジションは内定をもらえたりするものの、
ＧＡＦＡや外資戦略ファーム、またシニアなレベルになってくると今一つ力及ばずのレベル感です。
（）の中には、内定を辞退した理由や落ちた理由の簡単な自己分析です。

- IT系企業
    - 大手ゲーム会社のメンバーレベルのデータサイエンティスト内定（年収低いため辞退）
    - 医薬ＩＴ系のユニコーン企業最終面接落ち（社長面接で出されたパズルが解けずＯＵＴ）
    - 大手アプリ企業データサイエンス案件プロマネ内定
    - 大手ＩＴサービス企業データ系マネジャー内定
    - 大手ユニコーンAuto MLベンダーデータサイエンティスト2次面接通過（定員オーバーで打ち切り）
    - ＧＡＦＡ企業の一事業部のデータサイエンティスト内定（勿体なかったが個人的都合で辞退）
    - ＧＡＦＡ企業の一事業部のシニアデータサイエンティスト1次面接落ち（ライブコーディングテスト準備不足）
- コンサル系
    - 大手外資戦略ファームデータサイエンティスト最終面接落ち（将来の展望がしょぼかったか役員に期待に満たず）
    - 大手外資戦略ファームデータサイエンティストコーディングテスト落ち（コーディングテスト準備不足）

# 注意点
本記事で紹介するデータサイエンティストは、深層学習を使って非構造化データをメインに扱うポジションではなく、ビジネスの意思決定に近い立場で、構造化データをメインに分析・モデリングを行い活躍するデータサイエンティストのポジションを想定しています。

# 選考過程で押さえたい所
採用する側、受ける側、プレーヤーそしてマネジャーを一通り経験した立場として早速本題についてまとめていきたいと思います。
具体的な選考プロセス毎のコツについて言及する前に、一般論として、採用者が気にするポイントをまとめます。ここでは、皆様なじみのデータサイエンティスト協会が定義する[スキル](http://www.datascientist.or.jp/dssjournal/2020/09/02/dodv4/)に従ってみます。
データサイエンス力やデータエンジニアリング力は受ける企業の業界・業務・ポジションによって異なり、内容としてもいくらでも挙げられますので、私個人が受けてきた中で共通してよく聞かれる内容をメインに**最低限に**まとめてみました。

### ビジネス力

言わずもがなですが、データサイエンティストは高度なコミュニケーションが求められることがあり、またよっぽどの技術力や専門性がない限り社会人として基礎的なビジネス力も見られています。

- **コミュニケーション力**
    - 自分語りだけでなくしっかり相手の話を聞き、質問の意図に沿った回答ができるか
    - オープンな質問に対しても、自分なりに前提を置いて回答ができるか
    - 社会人として当たり前な敬語や相手を尊重した会話ができるか
    - 相手の知識レベルや立場に立って、専門的な内容や複雑な事象を適宜簡略化して伝えられるか
    - 経験したこと、学んだこと、行ったことをわかりやすく言語化し、相手に伝えられるか
- **論理的思考力・クリティカルシンキング**
    - 考え方や自身の取組にしっかりと論理が通っているか
    - MECEに物事を考えられるか
    - 自らの行った成果を批判的な視点でとらえられ、さらなる改善点を見出せるか
- **振り返り力**
    - 経験したことを言語化し、抽象化して次に行かせる形にできているか
- **ドメイン知識**
    - 分析案件における業界、業務特有の知識をしっかり身に着けているか、他の業界や案件でも応用できるようにしているか
    - 案件における課題、ゴール、KPI、達成すべき要件をしっかり把握できているか
    - ドメインエキスパートを巻き込みながら、分析単体にとどまらず案件全体の客観的な品質向上につなげられるか
- **英語力**
    - 外資系を受けるのであれば、英語面接は当たり前にあるので、面接でやる内容は拙くても英語で話せるようになるとよいでしょう
    - ビジネスではないのですが、論文、公式ドキュメント、ソースコードを読むときも英語なので、間接的にデータサイエンス力やデータエンジニアリング力にも影響します

### データサイエンス力

正直業種やポジションによるが、最低限抑えたいところを簡単にまとめてみます。

- **案件におけるデータサイエンスの知識**
    - 案件で用いた手法の選択理由と理論的概要を説明できるか
    - 案件で用いた評価指標の選定理由と、それがビジネスのKPIとの関連性を言えるか
    - 案件で用いた手法以外に、どんな手法を用いればより良い結果が得られそうかという引き出しを持っているか
    - 案件で分析の示唆や精度改善を得るために、データサイエンスの観点で工夫したこと
- **統計の検定の知識**
    - A/Bテストで用いられるようなt検定
    - 検出力、サンプルサイズの決め方
    - 一般線形モデル、多重共線性
- **機械学習の基礎的な精度指標の知識**
    - 回帰問題：MAE, RMSE, MSE, R^2, MAPE等
    - 分類問題：AUC, Precision, Recall, F1, 混合行列等
    - 教師有学習：決定木、勾配ブースティングアルゴリズムの概要や違い
    - 教師なし学習：k-means、階層クラスタリングの基礎
- **効果検証の基礎知識**
    - RCT

### データエンジニア力
- **実装力**
    - 初見のタスクやデータに対して、データ前処理、特徴量エンジニアリング、モデル構築、精度評価の簡単なパイプラインコードを必要に応じて調べながらも1~2時間程度でできるか
    - numpyやpandasが使えなくてもpythonの標準的なメソッドを使って簡単な関数を実装できるか
- **データベース**
    - SQLの基礎的なORDER BY, GROUP BY、WINDOW関数、pivotのやり方を理解しており、クエリを書けるか（自力でデータ抽出やデータマート作成できるか）
    - オンプレでの大規模データの集計抽出経験
- **MLOpsを活用して機械学習をシステムに組み込んだ経験**
    - CI/CD
    - gitによるバージョン管理
    - コンテナ技術
- **クラウドの利用経験**
- **分散フレームワークの利用経験**
    - spark

## 書類選考
データサイエンティスト未経験や経験の浅い方は、ただの経歴ではなく、データ分析に関連した経歴や、データサイエンティストとして活躍するために必要なスキルで、過去の経歴でそれがあると証明できるようなことにフォーカスして書くことをお勧めします。
また、業務以外でも自己研鑽のために、kaggle, signateなどのコンペに参加し、可能なら入賞していることが望ましいです。もしくは実際にデータサイエンスや機械学習を活用した何かしらのプロダクトを実際に作ったり、学んだことを対外発信、検定資格に合格したりしている等、具体的に行動して客観的成果につながっている事実を作りましょう。
正直採用する立場からすると、「教科書読んでいます」や「コードを写経しています」は皆当たり前にやっていることなので、このレベルの自己研鑽は差別化になりません。
## コーディングテスト
私の経験上ほとんどがSQLとpythonのテストでした。[HackerRank](https://www.hackerrank.com/)でひたすら訓練するのがよいでしょう。
ライブコーディングをする企業もありますので、練習するときにコードを書きながら、どういう方針やアプローチでコードを書いているか説明できるようにするのも効果的と言えます。

## 一次面接から
現場レベルからマネジャーレベルが面接官です。経験に対する細かく具体的な質問を重点的に対策しましょう。
また、一次面接の時点から転職理由・志望理由、中長期的なキャリア展望も整理しておきましょう。
エージェントに言われるがまま調査もせずに応募してくる候補者もいるため、残念ながらそうした人は面接官とお互いに時間の無駄です。
以下の項目は、当たり前ですが準備して答えられるようにするのがよいでしょう。

- なぜ転職するか
- 数ある会社、同業他社の中でなぜ受けている企業を選んだか
- 受けている企業に入ったとしたらどんな分析がしたくて、どんな働き方がしたいか
- 自分の強みは何か
- 現場やマネジャーレベルに聞くべき逆質問をしっかり用意しましょう

## 最終面接や人事面接
最終面接では応募するポジションにもよりますが、部長以上から役員・社長が出てきます。
人事面接では人事マネジャーレベルが出てくることが良くあります。
ここまで来られれば、能力的には受けている会社の求める基準にパスしている証明になっているのではないかと思います。ですが、改めて社風に合う人物か、すぐにやめてしまわないか、長期的な展望を持って転職やキャリアを考えているかという観点でチェックされます。そのため、意外に舐めてはいけなくて、自分自身の本質を問う質問を結構されますので、自己分析をしっかりしておくことをお勧めします。

- 5~10年先どんな風になりたいのか
    - エキスパート？マネジメント？

例えばデータサイエンス部門をリードしたい、事業の分析責任者になりたい、CDOになりたい等具体的なポジションをイメージできるようなことを伝えるとよりよいですが、正直具体的に考えている人は私が面接した中では少ないです。採用する際には、短期的な人員不足だけでなく将来的に会社で責任あるポジションを期待しての採用もあるため重要視されます。

- 将来的になりたい姿から逆算して今は何をするべきか、2~3年先どうすべきか
- なぜデータサイエンティストを仕事としたいのか
- 過去の失敗した経験、意見が対立した経験、どのようにそれを乗り越えたか
- 問題が起きた時に他人のせいではなく、自分事として問題解決に取り組んだか
- 部長以上のレベルに聞くべき逆質問をしっかり用意しましょう

# 最後に
いかがでしたでしょうか。
それなりに転職活動をして感じたことは、転職は最低限のスキルがあれば、転職活動というゲームでしかなく、その勝ちパターンをいかに抑え、訓練するかが重要です。なので、本業で活躍していてもこの攻略ができずに苦しい思いをすることもあり、同時に本業で大して活躍していないにもかかわらず、転職ゲームが得意でどんどんキャリアアップするような人もいるのも事実です。
上記で書かれたことを地道に抑えていけば、それなりに面接の通過率は高くなると思いますが、難易度が高い企業になればなるほど、しっかりと細かいところを深堀してきます。そして、どれだけ自分で考えて行動に移したかを見てきます。この記事でコツを紹介させていただきましたが、表面的な対策ではいつかぼろが出ますし、運よく転職できたとしても転職先で生き残れないかもしれません。
**最も本質的なことは、業界全体や技術の動向を抑えながらも、自分を高める努力を怠らない。本業にしっかりと向き合って、客観的な視点で振り返り、深く考え抜く経験をどれだけできたかということではないかと思います。**

感想やご意見を気軽にコメント頂けたらと思います。