Medley Developer Blog

株式会社メドレーのエンジニア・デザイナーによるブログです

メドレーで初めての技術職インターンシップを実施しました

※本投稿はMEDLEYオフィシャルブログから転載したものです。元記事はこちら。

info.medley.jp

医療介護の求人サイト「ジョブメドレー」の開発を担当している新居です。 10月になり肌寒い季節になってきましたが、メドレーでは今年の夏の8月から9月の間で技術職インターンシップ(以下、技術インターン)を実施しました。

最初に少しメドレーのエンジニアについて紹介すると、メドレーにはエンジニアが所属する開発本部があり、昨年2015年7月にCTOの平山が参画してから整備されてきました。弊社自体は2009年創業ではあるものの、正式に開発本部が立ち上がってからは1年弱です。開発本部には10月現在14名が所属しており、こちらの記事でも紹介しましたが医療xITという領域でプロダクトの開発をゴリゴリ進めています。

このようにまだまだスタートアップフェーズを走っている段階であり、教育や技術インターン開催に使える時間も限られている中ではありましたが、その中で最大限の成果を出せるよう、実施に向けて取り組むことになりました。自分自身としてもインターン生のメンターをするのは初でしたが、インターン生とメンターである自分、そしてプロダクトを通じて社会のため(それが会社のためでもある)にしっかり価値を残せるようチャレンジしました。

ということで少し前置きが長くなりましたが、今回はメドレーで行った技術インターンの取り組みをひとつの事例として紹介してみようと思います。

f:id:medley_inc:20161017184047j:plain

【企画1】まずはインタビュー

今回のインターン生は某大学の3年生1名で、まずはどういう流れで進めていくかを決めるために簡単にインタビューを行いました。 インタビューの内容は

  • 「なぜ技術インターンをやりたいのか?」
  • 「大学ではどういう勉強をしてるのか?」
  • 「技術スキルはどれくらいか?(どの言語を書いたことがあるかとか)」

といった内容で、今回は受け入れ前提だったので技術試験などは行っていません。 インタビューの結果、細かい内容は伏せますが今回のインターン生は大学の授業でプログラミングや簡単なUNIXコマンドに触れたことがあるというレベル感で、「将来エンジニアの道に進むかどうか悩んでいる」「開発の流れをひと通り経験してみたい」という要望を持っていました。

【企画2】ゴールと内容の大枠を決める

インタビューの結果を踏まえて、技術インターンで行う内容を決めていきます。インタビューによってインターン生が求めていることがわかったので、それを満たせるようにゴール設定をします。今回だと「開発の一通りの流れを経験し、インターン生本人の今後の進路決定のための判断材料やヒントを得てもらうこと」というゴールを設定しました。

また、冒頭でも述べましたが、スタートアップフェーズで少人数でプロダクト開発を進めている最中なので、メンターである自分の開発業務も疎かにできません。実際に開発・運用しているプロダクトでしっかりアウトプットを出し続けることが大切なので、インターン生のレベル云々に関係なく、技術インターンでもどうにか実際に稼働しているプロダクトでアウトプットを出せるような企画を考えました。

そこで以下のような企画の大枠イメージを定義しました。

  • インターン生、自分、社会(会社)に価値を残すために、実プロダクト上でアウトプットをしっかり出す
  • 実プロダクト上でアウトプットを出すことで得られる達成感や喜びを感じてもらう
  • ひと通りの開発フローを経験してもらう
  • メンターである自分にも開発業務があるのでOJT形式で行う

【企画3】詳細な内容を決める

ゴールと大枠を決めた後は、企画の詳細な内容を決めていきます。 以下のようなフェーズ1〜4を定義してみました。

フェーズ1「基本的なウェブアプリケーション開発のフローを経験する」

今回のインターン生のレベル感を踏まえて、まずはRubyRailsを使った基本的なウェブアプリケーション開発のフローを経験してもらうことにしました(RubyRailsは今回関わる実プロダクトで使っているため)。そこで教材としてRuby on Rails チュートリアル:実例を使って Rails を学ぼうを使用しました。ご存知の方も多いと思いますが、RubyRailsを使いながらウェブアプリケーション開発を体系的に学べるとても良い教材です。RubyRailsはもちろんのこと、Gitの使い方、デプロイ、テストといった実プロダクトの開発で必要不可欠な要素も含まれており、手厚いフォローがなくとも手を動かしながら進められるということで今回採用することになりました。

フェーズ2「実プロダクトでウェブアプリケーション開発のフローを経験する(小〜中規模)」

フェーズ1で流れを掴んだら、ここから実プロダクトの開発に関わってもらうことにしました。まずは文言の修正や追加などを通じて実プロダクト上での開発フローを経験してもらいます。

フェーズ3「実プロダクトでウェブアプリケーション開発のフローを経験する(中〜大規模)」

フェーズ2で慣れてきたらできる範囲で徐々に規模を大きくしていきます。 (小〜中、中〜大など抽象的なところはありますが、細かい定義は省略します)

フェーズ4「難しい課題解決にチャレンジしてアウトプットを出す」

フェーズ3の上位として実プロダクト上での難しい課題解決にチャレンジしてもらいます。ここは必須ではないですが、一応設定しておきました。

このような感じでフェーズに区切って定義してみました。

【企画4】ゴールと内容を共有し認識を合わせる

ゴールと内容が決まったら、それらをインターン生に共有し、インターン生のやりたいこととズレがないようしっかり認識を合わせました。問題がなければ開始日からどういう流れで進めていくかのスケジュールもすり合わせし、開始日を待つことになります。

【実施】実際に実施した流れを紹介

いよいよ当日です。当初の計画通りにフェーズ1から実施しました。 実際にどういう流れで進んでいったか紹介してみます。

初日から4日目

5日目

  • ここから実プロダクトの開発環境構築を行った
  • 早速実プロダクトの文言調整などを行った(ここでブランチ操作やPRの出し方なども経験)

6日目から9日目

  • 実プロダクトで小さい開発業務を数件こなした
  • 表示まわりの調整が中心だが、データベースから必要なデータを取得したり、条件による出し分けをしたり、プロダクト開発で考えないといけないことを経験した
  • ここまでで実プロダクト上でのひと通りの開発フローを経験した

10日目から13日目

  • 実プロダクトの中規模な開発業務を経験した(内容はメディア系のプロダクトの新規ページの追加)
  • ルーティング、コントローラ、ビューなどのページ遷移に必要な処理を実装した
  • 新規ページに表示する情報の取得、情報の整形や表示まわりの処理を実装した
  • データーベースへのデータのインサート、アップデートなども経験した

14日目から17日目

  • テストコードを追加した
  • 普段手動で行っていたことの自動化をするスクリプトの開発をした(後回しにしていた課題などの解決)
  • 日程の都合もありここで技術インターンは一区切り

こんな感じで一気に紹介してみましたが、随所で適宜フォローを入れつつ短期間で実プロダクト上でアウトプットをしっかり出すことができました。もちろんインターン生の成果物はしっかりコードレビューと品質レビューをした後、本番にリリースされました。

f:id:medley_inc:20161017184012p:plain

【実施】感想

今回の技術インターン終了後、企画していたフェーズ3くらいまでは到達でき、インターン生からも当初の目的を満たせたという感想を頂くことができました。ひと通りの開発フローを経験できたこと、実プロダクト上で作ったものが本番環境にリリースされるドキドキや達成感を感じてもらえて、良い経験になったのではないかと思います。

スタートアップということで普段の開発業務と並行し、数日ガッツリ時間をとってフォローするなどはできませんでしたが、インターン生の目的を満たせたこと、そして実プロダクト上で新しい機能を追加してリリースできたり、普段の自分の業務で手が回らず後回しになっていた課題なども解決することができ、インターン生と自分、社会(会社)のために価値を残すことができたのではないかと思います。

さいごに

ということで、今回はメドレーで実施した技術インターンの事例を紹介してみました。スタートアップというフェーズらしく、意思決定も柔軟で、今回のような技術インターンの企画・実施という突発的な業務であったり、会社の成長と共に生まれる様々な問題や課題の解決に奔走することも多々ありますが、それもまた醍醐味でしょう。働く環境の整備やエンジニアの文化形成も徐々に進められており、大変なこともありますがスタートアップフェーズでしか経験できないような濃い仕事がたくさんあります。集まっているメンバーは豊富な経験を持った30代が中心ですが、もちろん20代でも、医療xITで挑戦したいやる気ある方を募集中ですので、興味のある方はぜひご連絡ください!

www.wantedly.com