N予備校エンジニアインターンシップ体験記🌟

初めに

初めまして、「教育学習サービス『N予備校』サーバーサイドエンジニアインターンシップ」に参加した落合大輔です。 私は大学院の修士1年生の秋頃にインターンシップに応募しました。内容はTypeScriptによるバックエンドの開発です。私の場合は期間は4ヶ月程で1週間あたり16時間程のシフトです。

参加をおすすめする人

ドワンゴのインターンシップは下記の様な人にお勧めです。特に「ものづくりが好き」という人にお勧めです。

  • ものづくりや技術が好きな人
  • 自分の手でコーディングを行い開発がしたい人
  • チーム開発のノウハウを学びたい人

開発環境

ドワンゴのインターンシップでは各自にPCが支給されます。OSはMacかWindowsが選べて、私はMacを選びました。

技術スタック

  • 言語・フレームワーク
    • TypeScript/NestJS/TypeORM
  • 開発プラットフォーム
    • Docker/JFlog/AWS
  • バージョン管理
    • GitHub(Enterprise Server)
  • ドキュメント管理
    • Jira/Confluence
  • コミュニケーションツール
    • Slack/Google Workspace

応募しようと思った理由

下記の様な動機で申し込みました。

  • 日本のインターネット文化を支えてきた会社
  • N高等学校に通っていた友人が優秀
  • 技術力が高い

インターン中の様子

1日の流れは下記の通りです。

時刻 仕事内容
11:00~11:15 デイリーミーティング
(メンターと1on1)の準備
11:15~11:45 デイリーミーティング
(メンターと1on1)
11:45~15:30 コーディング
15:30~16:30 デイリーミーティング
(チーム全体)
16:30~19:00 コーディング

デイリーミーティング(メンターと1on1)

メンターとの1on1ミーティングです。1日の始まりに行い、前日の進捗状況や疑問点などを解消します。 Googleドキュメント上にお困りごとや今後のTODOをメモしています。

デイリーミーティングの議事録

デイリーミーティング(チーム全体)

開発に関するミーティングです。チームでアジャイルボードを見ながらそれぞれの進捗報告を行い、疑問点や懸念点があれば相談をします。

デイリーミーティングのアジャイルボード

インターンシップで凄いと思ったこと

全体的に心理的安全性が高く、メンテナンスが行き届いていると感じました。 技術とチーム開発の2つの観点から、ドワンゴのインターンシップの凄いと思った事を下記にまとめました。

技術

品質の高いソースコードを書くことの大切さを実感できた

私はこれまで「動けば何でもいい」という姿勢でプログラムを書いていた過去があります。具体的には「TypeScriptなのにany型を多用」「テストコードは書かない」「lintは無視」などです。品質の高いソースコードを書くことが大切であるという事を机上では理解しているものの、小規模な開発経験しかなかった私は品質の高いソースコードを書く重要性が実感できていませんでした。

しかし、大規模なシステムにおいてこの様な姿勢は許されません。その為、ドワンゴの開発環境にはソースコードの品質を担保する為のCI(Continuous Integration)が設定されています。結果として品質の高いソースコードを書く習慣を学び、だからこそ得られる開発効率の高さを実感しました。ちなみに、このブログにもCIが導入されており、textlintが走っています。

blog.nnn.dev

技術で躓いた際の立ち直り方を学べた

インターンシップでは、4ヶ月という長期間にわたってプログラムを書く機会に恵まれました。その期間に多くの疑問点が生まれ、メンターの方に質問をしました。質問を通してどの様に要件を整理して伝えれば自分の考えが伝わるのかを考える機会が多くありました。また、回答の際にはしっかりと自走ができる様に、ログの見方や問題の切り分けを意識しながら教えていただきました。加えて、現状のソースコードとの対応点や、アーキテクチャに関する説明を交えて教えていただいたのが印象的でした。

ドキュメントの大事さを学べた

開発に際してドキュメントを残すということの大切さを身に沁みて実感しました。私が所属していた教材入稿システムの開発チームにはオンボーディング用のドキュメントがあり、それを読めばプロジェクトの概要を理解できる様になっています。GitHubのREADMEも非常に正確で端的に書かれており、インターン生である私でも自立して環境構築をできました。

開発プロジェクトのREADME
開発プロジェクトのオンボーディング資料

チーム開発

デイリーミーティングというノウハウを学べた

私が所属したチームでは、デイリーミーティングを1日1回ビデオ会議する習慣がありました。 個人的な体験談ですが、完全なリモートワークでは難しいタスクを1人で抱えて進捗が出ない事や、メンバーの進捗が把握できない事が起きがちでした。デイリーミーティングがあることで必ず1回はチームメンバーと話し、状況を確認できます。これによってチームの進捗管理を把握できるという側面があり、良く出来た仕組みだと思いました。

要件の整理と意思決定の現場を垣間見る事ができた

今回のインターンシップでは、純粋な技術力だけではないコミュニケーション能力や調整力の重要性も学べました。開発することだけでなく、スケジュール感やビジネスのことも考える事が大切であると学べました。例えば、教材を開発するコンテンツ開発部からの要望による機能改善に対して、要件を整理し柔軟に対応していたのが印象的でした。

ドワンゴのエンジニアの働き方が本当に柔軟であることを知ることができた

ドワンゴのエンジニアが自由に働いているということは知っていたものの、少し穿った考え方ですが「どうせ広報用に言ってるんでしょ?」と疑っていたこともあります。実際はエンジニアのほぼ全員がリモートワークで、非常に柔軟に働いています。1日の業務時間は決まっておらず、ミーティングがある場合においてもチーム内で柔軟に調整できます。

デイリーミーティングにおいてチームメンバーが「明日用事があるので午後休いただきます」と言ったところ、チームリーダーの方が「必要だったら午前中のミーティングも調整するので1日休めますよ」と言っていたのが印象的でした。

業務内外のイベントを知る事ができた

会社として業務内外の催し物があります。私は予定があり参加できませんでしたが、インターン生でも必要に応じて柔軟に参加できる環境が整えられています。 外部のカンファレンス・勉強会への参加、社内ハッカソンなどの技術的な取り組みに加えて、忘年会といった社内行事があります。これらのイベントの存在もインターンシップに参加したからこそ知るこたができた学びです。 www.wantedly.com

会社として多くの人々が関わっている事を実感できた

ドワンゴのインターンシップでは実際の開発組織のミーティングに参加できます。個人開発とは異なり、1つのプロダクトの開発に多くの人が関わっていることや、それぞれのサービスにおいて責務があることが学べました。そして、エンジニア以外にも情シスや人事や企画といった方々が関与しており、それらの方々の存在も感じる事ができました。1つのサービスでも多くの人々が関わっており、会社の発展を支え合っていることを実感できました。

最後に

エンジニアを志す学生にはドワンゴに限らずインターンに参加してほしいと思います。
『インターンに参加したいけど技術に自信がない😭』と思っているかもしれません。しかし、仮に受からなくても面接やESの練習になります。受かれば給料を貰いながら非常に大きな学びを得る事ができます。目の前に開発するべきタスクがあるのでモチベーションも維持できます。わからない事は技術に詳しい先輩に質問し放題です。しかも、社会人エンジニアとしての業務を知る事ができ、業界理解にも繋がります。

1人で技術を学んでいるだけでは知り得ない事がたくさんあります。エンジニアを志す学生には積極的にインターンに参加して様々な学びを得てほしいなと思います。

謝辞

ドワンゴは技術が好きな人が多いと感じました。インターンシップの内容自体も多くの学びが得られる様に設計されていると感じました。個人としても大幅なステップアップができました。 関係者の皆様に感謝申し上げます🙇。