元人事がデータエンジニアの研修を受けてみた

はじめに

はじめまして。FLINTERS BASEに入社した8期生の山口です。

先日3ヶ月間の入社研修を無事終えることができましたので、感想をお話しできればと思います。

同じような立場のデータエンジニア志望の方の参考になれば幸いです。

経歴

前職は人事を5年ほど、合計2社経験しました。

その中で人事システムの導入や人事データの社内活用のプロジェクトに関わるうちに、もっとITの方面をメインにした仕事にチャレンジしてみたいと思うようになり、エンジニアを志すようになりました。

前職を退職してプログラミングスクールで初めてプログラミングを学び、その後の転職活動でご縁があり、2024年1月からFLINTERS BASEに入社し、現在に至ります。

研修内容

印象に残った研修を3つほど挙げてみたいと思います。

中間演習

研修の中盤に実施します。PythonやSQL、Dockerなど、研修の前半までの講座の内容を総合的に取り入れた内容で、個人的には非常に良い力試しになりました。

中間演習に限りませんが、演習や課題の目的は正解することというよりは学習内容を理解することなので、ひとつひとつの内容に理解できるまで向き合うのが大事だと感じました(特に配属先で使用場面の多い分野は)。

SQL研修

SQL研修は前半と後半に分かれます。前半で基礎的な操作(DDL、DML、サブクエリ)を学び、後半ではよりレベルの高い関数や実務に近いテクニックを学びます。

リファクタリング

コードが動作するかどうか、という段階の一歩先の「綺麗で読みやすいコードかどうか」という観点の学習です。大文字・小文字の使い分け、改行やインデントの法則など、コードの見た目を整える術を学びます。

WINDOW関数(分析関数)

集約関数(GROUP BYによる集計)と同じ動作を、行をまとめずに行う関数です。より高度な分析や複雑な集計結果の出力を行うことができます。

データ整形

データの欠損や、データ項目の運用ルールとの不整合があった場合の対処を学びます。

SQLチューニング

実際に業務でSQLクエリを実行する際、処理リソースやサービスの利用料金を抑えるようなSQLの書き方・考え方を学びます。

ETL(Digdag + Embulk)

Embulk

Embulkとはファイルやデータベースからデータ抽出を行い、別のストレージやデータベースにデータ転送するためのツールです。

研修では、csvファイルの内容をBigQuery(Google製のデータウェアハウス)にアップロードするハンズオンを実施します。

Digdag

Digdagとは複数個のタスク間の依存関係からなるワークフローを定義し、そのワークフローの実行及び管理を行うワークフローエンジンです。

以下のようなタスク(やりたいこと)を設定して自動で順番に実行させることができます。スケジュール実行の設定も可能です。

  • PythonでAPIからデータを取得し、CSVに出力する
  • EmbulkでCSVのデータをBigQueryにアップロードする
  • SQLでBigQueryにアップロードしたデータに対してクエリを実行する

ETL研修ではこれらのタスクを組み合わせてデータを整形したり、目的の場所まで転送する方法を学習します。

※Airflow(Digdagとは別のETLツール)についても学習・ハンズオンを行いますが、ここでは割愛

入社前に勉強しておくといいこと

PythonとSQL

プログラミング言語の書き方・読み方は基礎知識の汎用性が高く、独学で勉強しやすいので、事前学習に向いていると考えます。

Python

Pythonは配属後もメインで扱うことが多いプログラミング言語です。問題集がついているテキストなどで手を動かしつつ学習するのがおすすめです。

研修中は特に「pandas」というデータ解析ライブラリをよく使いますので、基本の文法を学んだ後はこちらについて学習するのもいいと思います。

SQL

SQLはデータベース言語と呼ばれるものです。立ち位置は異なりますが、重要性や勉強法はPythonと同様です。

特に(自分もそうでしたが)RailsなどSQL文をあまり書かなくてもプログラミングができる言語でプログラミングの学習をしてきた方は、データベース操作のイメージを掴むためにもSQLの学習をしておくのが効果的だと思います。

「データパイプライン」について知る

こちらは面接を受けた時に実際に先輩におすすめしてもらった勉強になります。

まずは「データパイプライン」や「ETL」といった関連用語について調べて、こういうもの・概念があるんだな、という認識を持つのがいいと思います。

また、前職で購買管理や生産管理、工数管理などのシステムにデータ入力をしたり、経費や勤務時間の申請をしたことがある方は、その時入力したデータの行方を思い返してみるといいかもしれません。データがどういう流れで社内のどこに行き着いていたか、レポートなどでどのように可視化されていたか、具体例があるとイメージがつきやすいと思います。

(おまけ)研修開始後に力を入れた方が効率的かもしれないこと

GitDockerです。未経験者(自分も含めて)が苦手意識を持ちやすい領域なので、例として挙げています。

苦手なら事前にやっておいた方がいいんじゃないの?と思うところですが、個人的には研修中のハンズオンで実際に触ってみた方がテキストベースの独学よりかなりイメージが持ちやすくなると感じました。

GitやDockerに限らず、研修前にツールやサービスに関して勉強してよくわからなかった場合でも、研修でカバーできるのでそんなに不安になる必要はないと思います。

会社に入ってみての感想・雰囲気について

リモートでも顔を合わせて話せる

研修中はフルリモートでの学習になりましたが、朝昼夕方とカメラオンで進捗や連絡事項を共有する短いMTGがあり、同期や社内の方と顔を合わせるタイミングは毎日ありました。

雑談になる場面もあり、なんでも話せる雰囲気と感じます。

密なコミュニケーション

配属後も多くの場合はリモートや派遣先での勤務になりますが、FLINTERS BASEでは勉強会やイベント、サークル活動も活発で、社内の接点も多そうだと思いました。ちなみに、行事の参加は任意なので予定の合う時に参加できます。

また、個別のコミュニケーションとして月に何度か1on1があります。上長との面談の他、先輩社員の方との面談もあり、幅広い立場の人に相談することができます。

成長できたこと

エラーの解決力がついた

講師の方に質問をする前に、Slackの中を調べる習慣やネットでの検索力がつきました。

※Slackは実際に現場でも多く使われているチャットツールです。プロジェクト内で既知のエラーであれば、過去に解決した際の方法がSlack内で見つかる可能性があります。

また、時折エラー文に書いてある内容がエラー原因の本質でないケースがありました。このような場合でも、自力で関連部分を連想してチェック・修正することで解決できたエラーもあり、ちゃんとプログラムの構造を理解してコードを書けていると成長を実感しました。

知識をまとめて共有する意義を理解できた

Slack内に研修中に学んだこと・調べたことを投稿してよいチャンネル(LINEでいうグループのようなもの)があり、私は参考にした記事をそこにメモしていました。

自分用のメモのつもりでしたが、時々同期が「自分も参考になった」といってくれることがあり、周囲に見える場所に知見を共有することで他の人たちの役にも立つと実感できました。

また、自分も同期の共有してくれていた記事や質問・解答のやりとりからエラー解消のヒントを得ることもあり、大変助かりました。

これからの抱負

  • 研修後も自分の興味関心のある分野の深掘りを続ける
  • お客様や社内から求められるスキル・知識を身につけていく
  • 上記2つを合わせて、自分のやりたいことで人の役に立てるようなエンジニアになる