ご挨拶
初めまして。フォースタートアップス株式会社(以下「フォースタ」という)のエンジニアの田畑です。2024年の春に加わり、自社サービス「STARTUP DB」の開発に携わっています。
私はフォースタでインターンを経験したのち、入社しました。 今回は技術的な話よりも、自分が感じたことやチームの雰囲気に焦点を当て、フォースタでインターンを経験した時に感じたことや、フォースタのエンジニアチームの雰囲気などをお伝えできればと思います。
目次
1. インターンの内容
インターンの内容はソースコードを書く「機能開発」と、ミーディングなどの「機能開発以外」に分かれます。
機能開発
インターンの初期段階では、社内向けの既存サービスに研修用の新機能を追加するという課題に取り組みます。主にRuby on Railsで開発し、機能を実装できたらGitHubでプルリクエストを作成します。そして実装したソースコードを正社員の人にレビューしてもらい承認をもらうと研修用のブランチにマージする流れになります。
研修完了後は、実際に社内で使われているサービスやお客様に使っていただいているサービスの開発に参加します。開発に入る前段階として、まずスプリントプランニングを実施します。スプリントプランニングとは、チームで集まり、1週間単位で期限を設けそれまでに何を優先して実装するかを決めたり、実装予定の機能を小さいタスクに分割したりします。タスクにはそれぞれ難易度に応じたポイントを設定し、選ぶ際の判断基準になっていたり、成果が可視化されるようになっています。
そしてチームメンバーは、スプリントプランニングで決めたタスクを優先的に担当し、いよいよ開発に臨みます。もし他に優先して取り組みたいタスクがある場合はチームに相談して優先順位を決めるなど、柔軟な動きをする場合もあります。
機能開発以外
機能開発以外で言うと、毎週開催される勉強会、スプリントプランニング、最近ではChatGPTを用いて新サービス立案などをしています。エンジニアというと機能開発にフォーカスが置かれがちですが、設計をチームで話し合ったり、個人的に学習している内容を勉強会で発表したり、PCと見つめ合う時間以外にも取り組むことはあります。
また最近では「バリューズカード」というゲームでチームビルディングを試みました。参加者はエンジニアチームの正社員6名、業務委託1名、インターン1名の計8名で行いました。簡単に説明すると、価値観が書かれた89枚のカードを一人5枚ずつ最初に配ります。そして順番に山札から一枚引き、同時に自分にとって最も重要ではないと感じるカードを一枚捨てます。このプロセスを繰り返し、最後に自分の核となる5枚の価値観を見せ合うことで相互理解を深めるゲームです。
私はこのゲームで「思考」を捨てたのですが、その際周りからは「思考を捨てるの!?」と言われ、意外だったみたいです。私は最後まで「平穏な人生」を残したのですが、「刺激」を残した人もいて、自分の価値観とのギャップが面白かったです。また、普段からストイックな人が「プロフェッショナル」を最後まで手札に残していたり、自分が得たいものとして「自律」を残していたり、三者三様でした。
普段、他人の価値観に触れる機会は少ないと思います。そのため、各ターンでメンバーがどの価値観を残し、手放すのかを見るのは予想外の発見があり、とても盛り上がりました。
2. フォースタのインターンを通して感じたこと
裁量が大きい
皆さんはエンジニアインターンと聞いて、どのような仕事を想像しますか?私は最初、エンジニアと言っても単調で規則的な業務がメインだろうと心配していました。
しかし実際にはそんなことはなく、ChatGPTを使った新規プロジェクトに参加させていただいたり、お客様に使っていただいているサービスの開発に関わるなど、想像以上に重要な仕事を任されました。この経験から、インターンでも積極的に挑戦すれば、新しい企画を立ち上げたり、正社員と同様に裁量の大きい役割を担うことが可能なのだと感じました。
3. フォースタのインターンに来るからこそ得られる・得られたこと
フォースタのインターンで得られたことは、「機会」です。フォースタは特に、提供される「機会」の多さが際立っています。
具体的には、業務外だと東京ビッグサイトの展示会ブース運営への参加、オープンオフィスでの他部門の人や幹部とランチ、さらには会社イベント用のアプリを自分で1から開発できる機会などがあります。業務内だと、Ruby on Rails、Vue、React、Elasticsearchなど幅広いスキルを身につける機会があります。このようにフォースタでは業務内外ともに多岐にわたる活動に取り組むことが可能であり、新しいアイディアを試すことに対しても非常に寛容です。開放的で受容的な環境がフォースタの魅力の1つだと思います。
ただ正直に言うと、私は研修課題に夢中で前述のような機会を上手く活かすことができませんでした。振り返ると、色々なことができたなと少し勿体無いことをしたと感じています。しかし研修課題に注力したからこそ、正社員として入社した際はスムーズに開発に参加できたり、技術の基礎を身につけることができました。結果として、研修を通じて自信とスキルを得ることができました。 正社員として入社した現在は、個人で社内イベント用のアプリを個人で開発しています。インターンの時に色々な機会を活かしたいという思いを、
4. 個人開発とのギャップ
チーム開発を経験し、個人開発とのギャップとして「ソースコードの読み手目線が必要」「視点が広がる」「限界が広がる」の3つを感じました。
ソースコードの読み手目線が必要
ソースコードを書く際は、他の誰かがそのソースコードを読むことを前提に変数名などを決めていく必要があります。チームで開発するということは、自分のソースコードが読まれ、使われるということを意味します。そのため、個人開発では動くソースコードを優先しがちですが、チーム開発ではそれがどのようなソースコードで、どのように機能するかコードを読む相手が理解可能かが求められます。
ソースコードの読み手目線を意識することは、チーム開発においてスムーズな開発や効率的な問題解決において必要です。
視点が広がる
例えばソースコードを書いていて何か問題が発生した際、どの部分で困っているのか、何を解決したいのかを明確に伝える必要があります。なぜなら、他の人は自分が何に取り組んでいるのか、どのファイルが関係しているのかを知らないからです。そのため、自分の状況を相手に伝えるために、文脈を意識して詳細に説明することが重要になります。具体的なエラーメッセージや問題が発生した部分のコードを見せ、試したことやその結果を伝えることで、他の人が問題を理解しやすくなります。
限界が広がる
チーム開発をしていると、思わぬ発見が日常的にあります。例えば、私が完璧だと思ったソースコードでも、チームメンバーがもっといい実装方法を提案することがよくあります。これにより自分1人では気づかなかった技術を学ぶ機会が増え、結果的にコードの品質も向上します。自分の限界は自分が実装できるところまでですが、チームとして開発することでその限界を超えることができます。
自分の限界が広がることで出来ることが増える感覚が楽しく、私のモチベーションにつながっています。
5. まとめ
この記事を最後まで読んでいただき、ありがとうございました!今回は技術的な話よりも、自分が感じたことやチームの雰囲気に焦点を当てました。これにより、私たちの開発環境をより身近に感じていただけると思ったからです。
もし具体的な技術スタックに興味がある方は、ホームページもしくは、自社サービスの技術スタックを紹介している別の記事があります。ぜひそちらもご覧ください!