目次
以下に当てはまる方に対して一つのサンプル程度に捉えていただけたら嬉しいです。
逆に以下のことを知りたい方にはあまり向かないかも知れません。
2023年度時点で情報系の大学を卒業したのですが、大学院試験に落ちてしまい、1年間の院試浪人中の者です。
自分の振り返りを兼ねてgithub pagesに色々書き連ねる予定です。
書き途中のプロフィール
開発歴
・趣味でAndroidアプリをjavaで開発
・アルバイトでRuby on Railsでサーバーを書く
きっかけは京都にあるプログラミングサークルCAMPHOR-のslackで回ってきたMIXIのイベントでした。2023年の9月くらい。
TDD Challengeという学生を対象にしたTDD(テスト駆動開発)についてのワークショップでした。
イベント詳細
https://mixi-recruit.snar.jp/jobboard/detail.aspx?id=k5ijcTsMvkO0VB1lao8WZQ
https://mixil.mixi.co.jp/culture/10143
という理由で抽選申し込み、無事当選し、参加をしました。
TDD Challengeは講義→実践という形で進み、テストを行う意義や実装の注意点など実用的なことを学べたと思います。また二人一組で行うペアプロという形をとっており、お互い技術的な知見の共有をできる良い経験が得られたと思います。
TDD Challengeを終えた後、人事の方とのカジュアル面談の機会がありMIXIのインターンも良かったから参加してみないかというお話をいただきました。
詳細を聞いたところ、僕の時は以下のような条件でした。
インターンといえば1~2週間で講義を受けたり、就活生同士でチームで何か開発を行うような物というイメージが元々あったため、長期でフルワークで実践投入されると聞いた時はかなり驚いた記憶があります。インターン選考に通れば、最初から現場でチームの一員として働くことができるというのは経験として非常に魅力的に感じました。アルバイトといった形での勤務はしたことあっても、実質社会人のように働いた経験はなかったので非常にいい機会だと思いインターン選考に申し込みました。
TDDがカジュアルなイベントのような雰囲気で進んでいたので、インターン選考もそんな感じで進むのかなって思っていたら、ESで思ったよりいろんなことを聞かれたり、面談くらいの気持ちで挑んだ面接がきちんと面接しており、私自身について深掘りされたので内心非常にてんぱった記憶があります。
趣味でしてきたアプリ開発のことや自分の中で大事にしていることを頑張って言語化して、それがうまくMIXIの理念や考え方に合致した様な形がしています。
何度かの面接をへて、部署選びになり、後述するみてねのチームに配属されることになりました。
主に小さいお子さんのいらっしゃる家族でパパママやおじいちゃんおばあちゃんを対象としたサービスです。
お子さんの写真や動画をみてねにアップロードすることで、気軽に家族全員でお子さんの成長や思い出を記録、共有することができます。みてねを通じて家族間のコミュニケーションの場としての役割を目指しています。
詳しく知りたい方はみてねの公式サイトをみてみてください。
普通の社会人と遜色ない(なんならとっても良い)雇用条件です。
学生が参加するインターンとしては破格だと思います。
みてねの開発チームではドメイン制を採用しており、私はその中でマーチャンダイジングドメインチーム(MERCHチーム)というところに配属されました。MERCHチームの目的は、みてねの商品である写真プリントやフォトアルバム等の売り上げ向上を目指すチームです。
エンジニアだけでなくプロダクトマネージャー、デザイナー、QA(Quality Assurance)などいろんな職能の方で構成された10~20人規模のチームです。二週間ごとにチーム内で売り上げ向上の為の施策を決めチームで協力しながら取り組んでいきます。
みてねの組織に関してはこの記事がよく参考になるかと思います。
主にみてねのバックエンド周りやweb viewについて仕様変更や機能追加を行いました。
基本ばRuby on Railsで開発を行いましたが一部swiftでiOS側の開発も行いました。
みてねの商品の売り上げを伸ばす施策の一つとして、ストアアイテムのアイコンを条件によって変えたり新しい種類のモーダルの実装などを行いました。
モーダルの表示条件が複雑であり、それをなかなか実装に完璧に落とし込むことができず、かなり苦戦してしまいました。
不完全な実装に対して、根気よくレビューをしてくださったチームの皆さん本当にありがとうございます。
自分が実装する箇所について、類似の機能がないか探す、周辺箇所を読み実装設計を考えるといったことから始めるため、
コードをよく読む力がついたと思います。web viewについても理解が深まった気がします。
また、業務を進めていく上で、デザイナーの方や、QAの方などと協力しながら進めていく機会があった為、自分が実装する箇所をきちんと理解して説明する能力が身についた感触があります。
インターンを通して感じたこと、学べたことについてつらつらと述べていきます。
一番最初に特筆すべきは社内の雰囲気が非常に良いことでした。
初めてのインターンだったので比較対象があるわけではないのですが、間違いなく働く環境の雰囲気は良かったと思います。
私は人間関係で気に病んだりしてしまいがちなタイプです。しかし、MIXIのインターンではそういったことがなく、
最初から最後まで人間関係で一切の不満や不安を覚えることなく、働きやすい環境であったと言い切ることができます。
部署によって異なるかと思いますが、僕が所属したみてねチームでは、スクラム開発を採用していました。
二週間のスプリントおきに、目標を定め、達成に向けてチームで進捗状況を確認しながら取り組んでいました。実装に際しては、トップダウン的に何を実装するのかを決めるのではなく、職能に関わらずどの開発メンバーでも機能の提案をすることができ、チーム全員で仕様などを話し合い、開発を行なっていました。そして、実装した後はその施策がどのような効果をもたらしたのか定量的に計測しフィードバックを行います。
スプリントの終わりには二週間でおこなった業務に対して振り返りの時間を設けており、実装した機能をレビューする場やこの二週間の働き方に着目して改善点を述べ合うといったことができました。
私は今までこういった、スクラム開発に携わったことはなかったので実際に参加してみてすごい衝撃を覚えました。
プロダクト開発において、基本的に実装すべき箇所などはトップダウン的に割り当てられるものだと思っていました。チーム個人個人がみてねの改善案を出し、それをチームみんなで検討していく為、チームメンバーのプロダクトに対する当事者意識が非常に強いと感じました。ただ単に与えられたものを実装するだけではなく、エンジニア自らチームの掲げた目標を達成するために、どんな施策を打てばいいのかを考えていくような開発体制になっていたと思います。
ユーザーに大きく影響を及ぼすことが想定される施策には必ず実装後の調査を行なっており、データに基づいたフィードバックを得て、それを元にまた新たな施策を打ち出していくといった開発サイクルが行われていました。
toC向けのプロダクトのエンジニアになるというのはある属性を持つユーザーがどの程度いて、どのようなことをすれば良い効果を与えられるのかというのを、数字に基づいて考えるスキルが求められるのだなという学びを得ることができました。今後、趣味でも仕事でもデータ分析や数値の視点を常に持ちながら開発に向き合っていこうと思います。
インターンが始まってから1日目で環境構築を行い2日目にしてみてねのコードに触ることができるくらい、実践機会に恵まれていました。
勿論最初から丸投げされるといったわけではなく、開発業務の流れに馴染むための簡単なタスクから始まり、徐々に難しい実装に移っていきました。
やはり、最初からプロダクトに携われるのは、インターン期間中常にやりがいがあり、働いている実感が得られて非常に良かったです。
みてね事業部で蓄積されてきたドキュメントなども自由に読むことができ、プロダクトの歴史や開発のあれやこれやを知ることができました。
ペアプロ
インターン期間中にペアプロの時間をとっていただきました。チームのエンジニアの方と30分~1時間の時間、一緒に実装を進めたり設計について話し合ったりしました。
実際に働いていらっしゃる方がどのようにコードを読み進めていったり、どんなことを考えていたりだとかを近い距離で学ぶことができたと思います。
あと地味に、便利な開発tipsをたくさん知ることができました。
ペアプロ中に自分がやろうとしていること、考えていることについて言語化する良い機会になったと思います。
朝会
毎朝開かれる、朝会でチーム全員と進捗確認などを行いました。チームが今どのようなことに取り組んでいるのかがわかるほかに、その時に困り事などを共有することができました。
デイリーリファインメント
一日の就業時間前に、メンターの方と15分前後の振り返りの時間がありました。
その日やったことの振り返りや、次の日にやるべきことの振り返り、気になったことの共有を行いました。
一日を振り返ることで、短いスパンで自分の課題に向き合うことができ、積み上がっていくタスクを計画的に取り組むためにどうすれば良いかを考える契機になりました。
MIXIの現在のオフィスは数年前にできたばっかりのため、設備がどれをみても綺麗でした。また働きやすい環境作りのために、予算が惜しみなく使われているのを感じる毎日でした。インターンに参加してみるとMIXIという会社が社員をいかに大事にしているかがよくわかるかと思います。
インターン期間は2ヶ月弱、その間にMIXIのいろんな方と交流する機会がありました。
部署やチームごとの催し事があったり、人事の方がインターン生同士の会を開催してくれたりしました。
また普段の勤務中にちょっとした雑談をしたり、社員食堂で交流することができて、
オフィシャルな感じでも会社の同僚としての感じでも交流することができました。
私は今まで、社会人やエンジニアとして働いている自分の姿が想像できていませんでしたが、今回のMIXIのインターンを通してだいぶイメージができるようになった気がします。それと同時に社会人になっていくにあたって、技術的な面でも、それ以外の面でもこれから身につけていかなければならない箇所がたくさんあることを知ることができた気がします。
技術的な面としては、新しい技術を積極的に取り入れていくことや、ドキュメントをしっかりと読む力、そしてよりクリーンな実装ができるようにコードを継続的に書いていくことが大事に感じました。
また、それ以外の面として、特に今後toC向けのプロダクト開発に取り組んでいくのなら、ユーザーの数やユーザーの持つ属性などを常に概算しながら、目標を達成するために、施策を打ち立て実行し、きちんと振り返りをできる力が求められると痛感しました。
振り返ってみてMIXIの社員の方は本当に優しく、物腰柔らかで、他者を尊重していて、プロダクトに情熱と強い当事者意識を持った方ばかりで、こんな社会人になりたいなと思える方ばかりでした。(というかお会いした社員の方全員がそうであると感じました。)
インターン生を受け入れるのもいろいろ大変であるはずなのに、開発メンバーの一員として受け入れてくれたことに対して感謝以外の言葉がみつからないです。
僕にとってこのインターン期間は大変代え難い貴重な経験であるとともに、充実した二ヶ月を過ごすことができました。
人事の方やみてね事業部の方々、MERCHチームの皆さん、そして、ずっと見てくださったメンターの方へ、本当にありがとうございました。