見出し画像

「まずはとにかくドメイン知識!」スタートアップがエンジニアインターン生を即戦力に導く戦略

こんにちは!株式会社 dinii (ダイニー) / Data team テックリードの kimujun です。
ダイニーのエンジニアリング部では、今年から学生インターンの受け入れを始めました。
現在ジョインから半年ほどですが、全員が十分にタスクを任せられるような状態まで成長してくれたため、初年度の受け入れは今のところ大成功です!
この記事では、リソースの少ないスタートアップが最速でインターン生を戦力化するための戦略と、実践の記録を記します。

ちなみに…スタートアップでインターンをすることの意味について

戦略の話に入る前に、そもそも学生さんがスタートアップでインターンをすることの意味について触れたいと思います。
自分は超アーリーステージのスタートアップだったダイニーでインターンをしていた経験と、それとは別に Web 系メガベンチャーでインターンをさせていただいていた経験があり、スタートアップでのインターンには以下のようなメリットがあると考えています。

1. あらゆる領域の開発を経験できること

スタートアップのステージにもよりますが、開発領域が分かれておらず全員がフルスタックな開発をしていることが多いです。そのような環境に飛び込むことで、フロントエンドやバックエンド、インフラに至るまであらゆる領域の開発を経験できます。
まだ自分の専門領域を決めかねていたり、そもそもどのような領域があるのか分からないといった悩みを持つ方にはとてもおすすめです!

Culture Deck for Engineer より。特にダイニーでは技術スタックが統一されていることによってあらゆる領域の開発に携わることができます。

2. ビジネス側との距離が近いこと

スタートアップはそもそも人数が少ないので、すぐそばにビジネスサイドのメンバーがいます。
ビジネスサイドのメンバーと日常的に会話・議論することによって、ビジネスそのものに対する解像度がとても高まります。ビジネスに理解があるエンジニアは市場での価値が高く、その後のエンジニア人生において財産になるはずです。
ダイニーでインターンをしてくれている学生さん達には、上記のメリットを存分に享受してもらうような動きを積極的に提案しています。

戦略1: まずはとにかくドメイン知識!データ出しから始めるドメインキャッチアップ

スタートアップでは 1 エンジニアの開発領域が広範囲に渡る一方で、ドメイン知識が体系的にまとまっていないことが多いです。
そもそもデータベースのテーブルやカラムが、現実世界やアプリ上のどの物体と対応しているのかについて、普段開発しているメンバーにしか分からないケースもあるはずです (本当はドキュメンテーションされているべきですが……)。
この状態のままいきなり開発を始めても、開発の速度やクオリティがなかなか上がらず、頻繁に手戻りが発生したりします。まずドメイン知識を身に着けてもらうことが重要です。

データベースレベルの知識から始まり、アプリケーションが解決したい課題を理解するレベルまで最速で到達してもらうため、ダイニーではインターン生にまずデータ出しから始めてもらうようにしてもらいました。
以下のようなステップで取り組んでもらいます。

Step1. SQL の習得

様々なプログラミング言語をオンラインで学習できる Progate で基礎を学んだあと、BigQuery 上で SQL を習得してもらいます。
ここではドメイン知識を必要としないように、対象テーブルやカラムは細かく指定した上で SQL を書いてもらいます。

BigQuery 入門の課題例

Step2. データ出し

SQL を学んだら、今度はいくつかのテーマに沿ってデータ出しを行ってもらいます。
このプロセスを通して、プロダクトが重要視しているドメイン知識とその表現方法について理解することができます。

テーマ例1: ある店舗の 7 月の売上を集計してください。
テーマ例2: ある業態で 1 年間に注文されたメニュー上位 100 個をリスト化してください。

データ出し入門の課題例

Step3. データの可視化

Step2 まででかなりキャッチアップは進みますが、そこから更にプロダクトの解きたい課題について意識するため、データの可視化に取り組んでもらいます。
ダイニーでは Looker Studio によるデータダッシュボードを利用しているので、Looker Studio ダッシュボードを作ってみるという課題を用意しています。

可視化入門の課題例

SQL, BigQuery, Looker Studio は基礎の習得がそこまで難しくない技術のため、ここまで実働 2 週間ほどで到達することができます。

ダイニーの Data team では、普段ビジネスメンバーからサクセス目的の様々なデータ分析依頼を受けています。内容は店舗でのプロダクト活用度や、業態ごとの商品・売上分析など、多岐に渡っています。
ここまでの課題をクリアすれば上記のようなビジネスメンバーからの要望に答えることができる状態になり、インターン生はもうすでに立派な戦力です!

戦略2: キャッチアップ力を鍛える課題づくり

スタートアップがやる気のあるインターン生に求めること。 それは圧倒的なキャッチアップ力の成長です。

ダイニーでは、基礎から学べるような教材を用意するのではなく、最初から実践的な課題を数多く用意しています。それらの課題を通じて、未知の技術をキャッチアップする能力を鍛えてもらうのが狙いです。
例えばダイニーで標準的に使うことが多い PostgreSQL についての課題では、テーブル設計を 1 から実行してもらうような課題を出しています。このような課題を通じてリレーショナルデータベースについてキャッチアップし、アウトプットをメンターと議論することによって理解を深めていきます。

PostgreSQL 課題の一部

戦略3: 急がば回れ!開発効率向上にコミットする

エンジニア始めたてのインターン生にとって、日常的に自身の開発効率向上にコミットするのは当たり前ではありません。長くエンジニアをやっている方にはちょっとした開発効率の向上が生産性の向上に大きく寄与する感覚があると思いますが、この感覚を得るためには自発的に開発効率の向上を実践する必要があります。
そのため、ダイニーでは最初から開発効率向上へのコミットを積極的に促しています。

開発効率への意識を身につけるのが早ければ早いほど、トータルの恩恵はどんどん大きくなっていきます。
ダイニーでは以下のような項目をインターン生に一通り試してもらっています。

PC スキル (Mac が前提です)

  • Mac の設定

    • キーボードの入力速度

    • マウスの反応速度

  • キーボードショートカット

    • Mac のデフォルトショートカット

    • カスタムキーバインド (Karabiner)

  • アプリケーションショートカット

    • Google Chrome (Vimium etc)

    • Slack

    • Notion

  • その他日々の PC 操作を楽にしてくれるツール群

    • Alfred

    • Raycast

    • Contexts

    • AltTab

開発環境

  • VSCode

    • デフォルトショートカット

    • Function Key (特に F2, F12!)

    • カスタムキーバインド

    • Extension

  • Shell

    • iterm2, Warp 等のシェルアプリケーション導入

    • コマンド履歴の参照、コマンドの補完 etc

おわりに、そして We’re Hiring!

インターンのカリキュラムや課題を考える過程で、言語化できていなかった開発に対する考え方のようなものが見えてきたような気がします。
インターン生の受け入れも始まり、ダイニーのエンジニア組織はさらに拡大 と進化のスピードを早めています。これからさらにインターン生を増やす & 新卒採用も進めていく予定です。
開発効率を重要視しながら急成長するチームで働きたい方はぜひ、一度お話しましょう!

事前にダイニーのカルチャーを知りたい方はこちらも↓


この記事が気に入ったらサポートをしてみませんか?