駆け出しデータサイエンティストを諦めた2020年を振り返る
今年は色々と自分の仕事やキャリアを考えることが多く、それらがわりとダイナミックに変わった年でもあったので振り返って見ようと思います。
はじめに
ゆるり(Twitter)といいます。今年までITベンチャー企業でデータサイエンス関係のお仕事をしていました。その前は営業をやっていて、いわゆる未経験からのDS転身ということになります。もっというとITエンジニア自体未経験でしたので、当時のレベル感としては#駆け出しエンジニアと繋がりたいみたいなイメージで思って頂ければと思います。
誰のための記事か
自分が何を思い何をしてきたかの振り返りなので自己満ではありますが、自分と同じように未経験から何かしらのITエンジニア職、特にDS職を目指す方に向けています。
ただし、後述しますが自分はデータサイエンティストとしてほぼ何の対外的実績は残しておらず、最終的に挫折してジョブチェンジした形となりますので、あまり参考にはせず1つのキャリア論として見て頂ければ幸いです。
データサイエンスのお仕事をするまで
上述のように僕は元々営業職を数年していまして、色々思うことがあったのと(※1)、社内にデータサイエンス関連の部署が新設されるにあたり社内転職という形で2020年からデータサイエンスの仕事を始めるようになりました。なお「データサイエンティスト」とあえて呼称していないのは、実情として一般的に認識されているデータサイエンティストの必須スキル(※2)を満たしておらず、業務も少々異なっていたためです。
当時は社内でもほぼ未経験者しかおらず、データサイエンスに深い造詣のある人もいなかったため、社内のノリというか勢いで創設された部署に未経験である僕が入るのも容易だったことはお察しいただけると思います(一応部長は唯一の経験者であった)。ちなみに部署のミッションもこの当時はあまり明確ではありませんでした。
未経験からはじめたこと
形から入るスタイルでデータサイエンティスト(仮)となった僕は、さっそく情報収集とプログラミング等の勉強を始めました。自分の状況を考慮して上司が学習期間の猶予をくれていたとはいえ、さすがに未経験のままだとできる仕事がなく、すぐに営業職に戻ることが想像されたためです。できるだけ早くキャッチアップして一人で仕事をこなせるようになるのが最優先でした。
しばらく情報収集をしてから、大体半年くらいで下記の勉強をしました。(よく活用していたのを抜粋)
書籍(理論系)
・効果検証入門〜正しい比較のための因果推論/計量経済学の基礎
・ビッグデータを支える技術―刻々とデータが脈打つ自動化の世界
・データ分析のための数理モデル入門 本質をとらえた分析のために
・時系列分析と状態空間モデルの基礎: RとStanで学ぶ理論と実装
書籍(プログラミング系)
・Python実践入門 ── 言語の力を引き出し、開発効率を高める
・実践Data Scienceシリーズ RとStanではじめる ベイズ統計モデリングによるデータ分析入門
・リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック
・Webを支える技術 -HTTP、URI、HTML、そしてREST
・前処理大全[データ分析のためのSQL/R/Python実践テクニック]
・Pythonによるデータ分析入門 第2版 ―NumPy、pandasを使ったデータ処理
・達人に学ぶSQL徹底指南書 第2版 初級者で終わりたくないあなたへ
書籍(機械学習系)
・Pythonではじめる機械学習 ―scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎
・RとPythonで学ぶ[実践的]データサイエンス&機械学習
オンライン学習
・ProgateのPythonコース
Udemy
・【キカガク流】人工知能・機械学習 脱ブラックボックス講座 - 初級編 -
・【キカガク流】人工知能・機械学習 脱ブラックボックス講座 - 中級編 -
・現役シリコンバレーエンジニアが教えるPython 3 入門 + 応用 +アメリカのシリコンバレー流コードスタイル
・Spark and Python for Big Data with PySpark
・Scrapy: Powerful Web Scraping & Crawling with Python
Cousera
・Machine Learning(有名なやつ)
・How to Win a Data Science Competition: Learn from Top Kagglers
もちろん全て完璧な理解で終わらせたわけではなく、これらの勉強でインプット→実務でアウトプットという流れをこなしながら徐々に力をつけてきました。また、Kaggle等のコンペサイトに参加することで他人のコードやモデル精度を上げるための考え方を参考にしていました(※3)。
そうこうしているうちに、ある程度自分でデータ分析や時系列予測モデルの構築ができるようになってきて、社内外のプロジェクトにも参画していくようになりました。しかし、力を少しずつつけている状況とは相反して、成長の頭打ちを感じていました。これは、個人が頑張ってどうにかできる限界を感じていたとも言え、同時に環境がやっぱり大事だと痛感し始めるときでもありました。その理由として、
・周囲に経験者がいないため、技術・仕事・キャリアに関する相談が気軽にできない。
・周囲に(ry、適切なフィードバック・評価がもらえない。
・経営層にデータサイエンス(IT技術や開発環境含む)に対する理解者や経験者がいない。データサイエンティストのビジネス活用(適切なプロジェクトへのアサイン)をうまく考えられない。
などがあり、職場という環境の中で仕事をしているにも関わらず、実際には独学で学んだことを仕事に活かしているだけという状況に陥っていました。そして、自分がやっていることや学んでいること、そして実務でやっていることと、外の世界で行われていることが大きく乖離しているように思えてきました。
段々と不安を覚えてきた僕は、結局仕事はそこそこやりつつ、自己成長の場を社外に切り替え、勉強会やセミナーなどに積極参加していくようになっていきました。
※決して独学や上記で紹介した教材等自体を否定するものではありませんが、独学だけだと理解力や成長速度に大きな個人差があるのと、環境という個人でどうにもできない要因によって個人の成長は良くも悪くもなる、ということを示したいだけです。また、未経験からDS転身させて頂いた職場にも感謝はしています。
自分の強みを作っていく
このような不安を覚え始めたのと同時に、普段の業務の中で感じていたもう一つのことが、データサイエンティストとしてキャリアパスです。先述した通り、僕は元々データサイエンティストを目指していたわけではなく、その時の選択肢の中でたまたま選んだという経緯があります。実務や独学を進めている中で一定の楽しさややりがいを感じていたものの、上へ行くための大きないくつもの壁を感じ続けていましたし、自分が得意にしていける分野なのか分からない状態でした。何よりも、そう遠くない未来に、AIやAutoML等のさらなる発展により、一部のテック企業が市場を占領し、PhDホルダーや豊富な実務実績などを残す一部のデータサイエンティストのみがデータサイエンス関連の仕事をしていき、他は淘汰されていくのではという危機感もありました。
このようなことを考えているうちに、中途半端な気持ちではこのままのキャリアをずっと続けられない、自分の強みをちゃんと作らねば、と思うようになります。
当時、社内ではデータサイエンスはおろかデータ分析の環境もろくに整備されておらず、一部の分析者が時々データベースからアドホック分析をするだけで、組織全体でもデータドリブンな意思決定はなされていませんでした。
また、僕もモデル構築や分析をする身として、扱うデータの質がかなり悪いことは実感していたため、「ゴミからはゴミしか生まれない」ではないですが、データ自体への不満やストレスが大きく、ここをまず改善しないと、データを活用した全ての仕事が台無しになる、と考えるようになりました。そこで、データ分析環境を整備していくことにしました。しかし、直接サービスで使われているデータベースをいじることは権限的に禁止されていたため、主に下記のことをしました。
・データ前処理をおこなうETL・ELTパイプライン構築
・分析用途のデータウェアハウス構築
・定期的に行うバッチ処理の作成(KPI抽出など)
・BIツールを駆使しながらダッシュボード構築
これらは全て難しいことはしていませんが、当時は分析業務自体も非効率的でしたので、一定の効果はありました。
なお、最初は全て1から開発して作る予定でしたが、あまりにも自分の進捗が遅いため最終的にクラウド(AWS)上で完結しました。当時はAWSはおろかクラウドの知識もほぼなかったため、独学や資格取得をしながら自分ひとりでやりました。フルマネージドサービスって便利ですね。
一方で、データドリブンな意識改革は一朝一夕でできることではないため、時間をかけて少しずつ分析担当者や営業などのステークホルダーにレクチャーをしたり、会議では作成したダッシュボードをもとに意思決定するよう促したりしました。また、まともなデータを作るためには、データ処理のパイプラインだけでなく、入力データの質の改善も必要だと感じていましたが、一般的にデータ入力が煩雑で時間がかかってしまうと、入力者からの大きな反発にあうため慎重に進めていきました。
そうこうしているうちに、データサイエンスよりも、データ処理や基盤構築などを行うデータエンジニアリングのほうが楽しいかもしれない、と思うようになっていきます。多分、比較的すぐに成果を出せたからというのもありますが、これなら自分のキャリアにもしていけるかも、と思えたのも大きいです。(※4)
また、クラウドを使った業務が増えてきたこともあり、自分の中の強みを明確に(少なくとも社内では)示せるようになってきました。データサイエンス1本でのキャリアよりも、データエンジニアリング×クラウド×なにか…といったように、複合的な要素をかけ合わせたキャリアのほうが面白そうとも思っていました。
そして次のフィールドへ…
ここまでいろんな不安と成長と不安と不安と…といった紆余曲折がありながらも何とか仕事をやってきた僕でしたが、もう1つとても大きな不安がありました。心の中にしこりのように残っていたものです。
コンピュータサイエンスの知識・理解不足です。僕はCSに関するバックグラウンドがないのにデータサイエンス的な仕事をしていたので、いわば基礎的な土壌が無いのに、その上に高層ビル建築の構想を進めている状態でした。
データサイエンティストに求められるスキルセットはIT技術の進展とともに増すばかりですが、それとは別にデータサイエンティストもITエンジニアの一種であり、基礎的なソフトウェア開発経験や知識があって然るべきという考えが僕にはありました。具体的には、ウェブアプリケーション開発に求められるフロント・バックエンドの挙動、API、データベース、Git、Linux、ネットワーク、インフラ(クラウド)、コンテナ、CI/CD、開発手法などです。
また、僕のようなCSバックグラウンドを持っていなく、既にITエンジニアとして仕事をしている人の中で、CSに関する知識や素養があることにより、ITエンジニアとしての応用力やさらなる成長ができると見込んで、社会人からCS学士や修士・博士を目指す人は結構見られます。(最初は僕も学校へ通い直すことを考えましたが、後述する年齢のこともあり、まずは転職を優先しました。)
更に、繰り返しになりますが、ここまで自分が進めてきたことはほとんど独学や自走によるもので、これが続いてしまうと、変な癖がついて正しいフォームで素振りできなくなってしまったかつての野球部時代の僕のように、ある時取り返しがつかなくなってしまうのでは、と感じていました。
それならば、素晴らしいプロダクトを世に送り出す組織的な開発チームと優秀な開発者がいる環境に行き、しばらくは自分に基礎を叩き込みながらしっかり土壌をつくっていきたい、と思うようになりました。僕は30歳手前であり、そういった育成込みでポテンシャル採用されるギリギリの年齢です。年齢がすべてではないかもしれませんが、僕がもう少し上の年齢だったら、転職でリスクを取るのではなく、今の職場で成果を残すほうを優先すると思います。
そんな中で転職活動を開始し、幸いにも複数の企業から内定をいただきました。(※5)
多くは自社サービスのデータ分析者としてのポジションでしたが、
①CS含むITエンジニアとしての基礎を学びたい、②データエンジニアリングの仕事をしたい、③いつか海外で働きたい、④待遇、⑤クラウドサービスがすき、といった理由から、最終的に外資系ITベンダー企業のクラウドサポートエンジニアとして働くことを選びました。担当はビッグデータ処理・パイプラインやSQLアナリティクス、データレイクなどのサービスです。
結果的にデータサイエンティストとしてのキャリアを諦め、別の道を歩むこととなりました。これからもとても大変で紆余曲折なこともたくさんあるかもしれませんが、この選択に後悔しないよう精一杯頑張っていきます。
さいごに、この1年で学んだことを書き記して終えたいと思います。
学んだこと
・実務で得られること・学ぶことは多いため、早くDS職に就けるに越したことはない。
・とはいえ環境は非常に大事で、周囲に経験者やメンターがいて、適切な評価を貰える上司がいて、組織全体でDSチームのビジネス・事業応用が考えられている環境に行けると個人の成長にレバレッジをかけられる。ただし、未経験歓迎と謳うAI系企業などの多くはこういった環境が未整備で、逆に多くのDSが活躍されている企業は限られ、かつ面接時に高い技術レベルや職務経験を求められるため、難しい問題でもある。個人的には最初はリスク承知で未経験歓迎企業へ行ってチームを変えるか、対外的実績を少しでも得て後者のような企業でポテンシャル採用されることをオススメします。
・リモートワーク中の転職活動は比較的楽。メリットもある。(スクリプトを読めるなど)
・何が得意不得意かはそんな簡単には分からないけど、何が好き嫌いかはわりとすぐ分かる。
・自分の年齢に応じて次の行動を考えるべき。
・その時の潮流に踊らされすぎない。自分の心の声には常に耳を傾ける。
・自分の市場価値確認のため、定期的なレジュメ更新と面談・面接は受けたほうがいい。
※1 この辺のエピソードは機会があればまた書き記したい。
※2 厳密な定義はないかもしれないが、特に参考としていたのは、データサイエンス協会のスキルセット表や、TJOさんの実務の現場で求められるデータサイエンティスト・機械学習エンジニアのスキル要件など。
※3 結局自分はこういったコンペにどっぷり浸かれなかった。機会があれば今度は気楽に挑戦したい。
※4 データサイエンティストの中には、データエンジニアリングの仕事も内包する場合があるが、一般的にはそれぞれは別職種
※5 転職や面接に関するエントリはまた別の機会に
この記事が気に入ったらサポートをしてみませんか?