はじめに
2024年の9月2日から9月13日の2週間にわたり、freeeの就業型サマーインターンに参加しましたので、その体験を振り返って記録に残したいと思います。
参加した理由
私がこのインターンに参加した理由は、以下の3点です。
- 普段からfreeeのプロダクト(特にfreee人事労務)を使用していること
- Railsを使った大規模なプロダクト開発に携わりたかったこと
- freeeのデザインが好きなこと
私が現在長期インターンをしている会社では、freeeのプロダクトを使用しており、お世話になっていることから、プロダクトに携わって貢献したいという気持ちがありました。また、大規模開発におけるRailsの使用については賛否があるものの、その課題にどう向き合っているのかを学びたかったこと、さらに、freeeのデザインが私の好みにピッタリ合っていることも理由の一つでした。
freeeのデザインにはこちらに詳しく記載されています。
また、自社のデザインシステム「vibes」も公開されています。
これらの理由から、インターンに参加する前からとても楽しみにしていました。
インターン内容
概要
私が配属されたのは、freeeサインという電子署名・電子サインが可能な電子契約サービスを提供する部署でした。
部署配属は事前に行われたアンケートで、10以上の部署から希望を出し、その結果を待つ形式でした。
インターンはオンラインとオフラインのどちらでも参加可能でしたが、私のチームは3人中2人が出社し、1人が最後の2日以外はリモートで作業を行うハイブリット型でした。そのため、情報共有のため、常にmeetをつないで作業を進めていました。
日程については、インターン初日で全体のPCセットアップを行いました。その後は、就業型なので配属先のメンバーと作業を行います。最終日には再度全体で集まって、成果発表会と懇親会が行われました。発表会では他のチームが何をおこなっていたのかも知れて、とても学びが大きかったです。
おこなったこと
day1はチームメンバーとの交流や環境構築、アプリケーションのキャッチアップを行い、day2にPdMさんとのMTGで現状の課題について説明を受けました。このとき、今回のインターンでのチーム目標として、説明を受けた「課題解決のために改善を進め、リリースをして実際にユーザーまで価値を届ける」ことに設定しました。
MTG後は、仕様の調整を行いながら、Design Docsの作成を進めました。この過程で、課題の疑問点を解消するために何度もPdMさんとMTGをセットさせていただけたことで後の開発がスムーズに行うことができました。
Design Docsの作成はday2〜day4までかかり、開発を始めたのは、day5からでした。QAさんの作業時間を考慮すると、リリースするために開発に割ける時間は残り5日間でした。
開発段階では、最初にペアプロを行い、みんなでアプリケーションのコード理解を深め、前提知識を揃えてから、タスクの分担をしました。
最終的には予定よりも少し開発の時間が伸びてしまい、QAさんのスケジュールで期間中のリリースは間に合いませんでしたが、リリースフラグを立ち上げる以外のfreeeにおける開発プロセスを体験することができました。
インターン振り返り
ユーザー価値と実装コストを天秤にかけて要件を絞ることが非常に難しいと感じました。いいものを作りたいあまり、要件を絞れていなければ爆死するところだったので、Design Docsに時間をかけてよかったです。また、タスクの進捗に応じて優先順位を柔軟に変更したことも、開発効率の向上に繋がったと思います。
学んだこと
freeeにおける開発前準備からリリースまでの流れ
実際にリリースまではできなかったもののメンターさんから開発の流れの95%は体験できたとおっしゃっていただけたので、見出しでは「リリースまで」と記載することにします笑
開発前の準備やRailsによる大規模アプリケーションの運用方法を体現することで、インターン参加の理由を達成することができました。
また、社員の方々には運用方法や実装の背景について多くの質問に答えていただき、感謝しています。
特に大切だと感じたのは、適切なマニュアル整備の重要性です。プロジェクトの規模が大きくなると全体を把握するのが難しくなりますが、ドキュメントを整備することで生産性が向上します。しかし、詳細に書きすぎると管理コストが高くなるため、freeeではそのバランスがうまく取られており、感動しました。
timesチャンネルはチームメンバーへの情報共有にもなる
私は学びをアウトプットするためにtimesチャンネルを作り、それをチームメンバーに共有していました。本来は自分のためにつらつらと投稿して、知識を貯めていましたが、振り返り会でメンバーから「timesから学ぶことがたくさんあった」と言って頂き思いがけない効果があることに気づきました。また、他の部署のインターン生からも情報を共有してくれることもあったので、これからtimesチャンネルはみんな作るべきだと思います(過激)
ハイブリットの難しさ(対面コミュニケーションは偉大)
3人のうち2人がオフィス出社、1人がリモートという形式で作業を進めていましたが、最後の2日間、全員がオフィスに揃った際の作業効率は格段に上がりました。社員の方も、ハイブリットは難しく、フルリモートやフル出社の方が作業が進めやすいとおっしゃっていました。今回初めてハイブリット形式を行えたので、チームのパフォーマンス向上のために、いろいろ考える機会になりました。
改善すべきこと
ハイブリットチームの難しさ(学んだことに対比して)
会議室が使えないときは、オフィス側でハウリング防止のためにイヤホンのマイクを1つのみオンにするため、リモート組に音声が聞き取りにくかったり、meetをつなげる前後でのちょっとした会話によって、情報格差が生まれてしまっていました。
メンターの方と話す機会もよくあったので、2週間のインターンでは今回同様の作業方式でよいと思いますが、もっと慣れたチームだとオフィス組も部屋を別にしてみんなの環境を揃えたほうがチームとしての開発効率が上がるのかなと感じました。
要件詰めの甘さ
PdMの方と何度も打ち合わせを行いましたが、それでも要件が十分に詰められておらず、PRのレビュー段階で新たな課題が発覚することがあり、コードを書きなおすことが起きてしまいました。ドメイン知識による気づきもあるかもしれませんが、実装途中でも仕様について再考することで、この問題を防げるのではないかと考えています。
最後に
今回参加してみて、freeeの素晴らしさをたくさん吸収できました!また、ノベルティもたくさんいただき大満足です!
(もっと欲しかったので、Sweee(スイー)のキーホルダーとストラップを購入しました)
オフィスもコンセプト満載で、freeeにはたくさん社外公開ができず伝えられないところあるので、興味がある方はぜひ参加してみてください!