こんにちは。新卒1年目エンジニアのtakadaです。
4月に新卒として入社してから約4ヶ月間の研修があり、
その中で5月末から7月末までの約2ヶ月間をチーム開発研修として取り組みました。
チーム開発研修では、企画から仕様、設計、開発、リリースまでを一気通貫して同期のエンジニア・デザイナーと取り組んでいきました。
この記事では、初のチーム開発を終えて設計と開発で学んだことを主にお話ししていきたいと思います。
企画〜仕様までの学びを同期のエンジニアがこちらに書いてくれています。気になる方はぜひご覧ください。
目次
- チーム開発概要
- 設計
- 開発
- まとめ
1. チーム開発概要
改めて、チーム開発でどのような事に取り組んできたのかを簡単にお話し致します!
チーム開発では僕を含めてエンジニア2人とデザイナー1人の計3人で進めていきました。
そしてそのチーム開発の内容は、「googleスライドで管理されていた社員プロフィール情報のシステム化」です 👀
取り組んだ背景として、社員のプロフィールがgoogleスライドで管理されていた事から、読み込むのに時間が掛かることや見たい社員のプロフィールまでたどり着くのに部署ごとに管理をしているため一苦労であるという課題がありました…。
システム化することでこれらの課題を解決し、それに加えて社員のプロフィール検索機能を実装するなど、「心の距離を近づけるツール」をコンセプトにチーム開発に取り組んでいきました!
サービス名は「プロフっちょ」!僕たちが小中学生のときに流行ったプロフ帳が由来です。プロフ帳を交換したり、友達が書いてくれたプロフィールを読んだりという楽しさを、このサービスでも感じて欲しいという思いを込めています。
2. 設計
では、早速ではありますが「プロフっちょ」の開発に入る上で重要な設計で学んだことを3つお話ししたいと思います!
① 役割分担は慎重に!タスクからしっかり見極める!👀
まず1つ目は、「役割分担は慎重に!タスクからしっかり見極める!」です。
今回の設計において、主に取り組んだことはテーブル設計とページ遷移の際のフローチャート、システム構成図の3つでした。
エンジニアとして僕含めて2人いる中で、「テーブル設計」と「ページ遷移の際のフローチャートとシステム構成図」の2つに役割分担をして取り組んでいきました。僕が担当したのは後者です。
しかし、「テーブル設計」という開発において土台となる箇所を把握し切ることができなかったために後々の開発でエンジニア同士の認識がずれるなどの問題が生じてしまいました。
そのため、「テーブル設計」などの重要なタスクに関しては、2人で作成をするか認識をすり合わせるために積極的にコミュニケーションを取ることを心がけるなど、MUSTのタスクに対してどのようなアプローチを取るべきなのかを見極めることが重要であることを学びました!
② 設計レビューのイメージは関門より議論!
2つ目は、「設計レビューのイメージは関門より議論」です!
前提として弊社は、設計から開発に入るためには設計書の作成を行い、設計レビューを先輩にして頂いてOKをもらう必要があります。
そんな中で、僕自身が早く開発に入りたいという気持ちが強くあったために「質の良い設計書を作る!」というよりは「設計レビューを通す!」という方に気持ちが向いてしまっていました…。
開発をスムーズにできるようにするためには、設計書の作成をより入念にする必要があります。そのため、設計レビューをして頂く際はレビューを通すというよりも設計書のレビュワーと密にコミュニケーションをとり、「開発をスムーズにできる最高の設計書を作る!」という方向に気持ちが向いていなければなりません。
それを理解できていなかったために、設計レビューのレビュワーからOKを頂いて開発に入った際に同期のエンジニア同士で設計に認識のズレなどがあり躓いてしまう事が多々ありました。
この経験から上記の図のように設計レビューではレビュワーと「戦う」というイメージよりも「最高の設計書を作る」ために「議論」するイメージを持つ必要であるということを学ぶ事ができました。
③ 工数見積もりはより具体的に!!
最後は「工数見積もり」に関してです!実はこの工数見積もりが今回僕が1番躓いてしまった箇所となっております。
設計書作成において開発をするために「どのような実装をするべきか?」などの実装方法を同期のエンジニアと考えて作成していきました。
その実装方法から工数の見積もりをしていきましたが、その実装方法の粒度が開発をスムーズにできる段階まで細かくできていなかったために開発に入った際に全く工数の通りにいかないといった問題が生じてしまいました…。
また、具体的な実装方法が分かったとしても自分の「過信」や「早く終わらせなきゃ」という気持ちから時間の見積もりを思ったよりも短くしてしまっていました。そして、実際に開発に入った際に工数の通りに行かず、遅れてしまうと言うことに繋がってしまいました。
時間の見積りに対して遅れてしまうことは、チームメンバーだけでなくサポートして下さっている周りの先輩社員にも影響が出てしまいます。今回のチーム開発から視野を広く持ちながら自分の力量を把握して時間の見積もりをする重要性を学ぶことができました。
3. 開発
次に開発について学んだ事を3つお話し致します。
① 15分考えて分からなかったら即相談!!
まず一つ目は「15分考えて分からなかったら即相談」です。
設計書の作成が終わって開発に入った際に、エラーが発生したり上手く実装できなかったりするなど、壁にぶつかることが多々ありました。
開発をしていればこれらの事象は必ず起こり得ることですが、それに対してのアプローチ方法がすごく重要であることを今回のチーム開発研修で学ぶ事ができました。
言葉の通りですが、開発で躓いた際は15分などの時間を決めて調査を行い、解決できない場合はすぐに先輩に質問する事が重要です。
時間を決めないと、沼にハマって1人で考え過ぎてしまい時間を無駄にしてしまいます。チームで開発を行なっているため、時間を無駄にしてしまうとチームにも迷惑をかけてしまいます。
しかし、すぐに質問をしようとすると先輩の時間を無駄に奪ってしまう可能性や調べて解決する力もつきません。そのため、15分は必ず考えることが重要です。そして、15分以上は自分の時間を無駄にしてしまう可能性があるため、すぐに質問する事が重要であるということを学ぶことができました。
この方法はGoogleでも採用されているルールでもあるので、興味がある方は是非調べて頂けたらと思います!🙋
② チームを考えて判断・行動をする。
2つ目は、「チームを考えて判断・行動をする。」です!
一見当たり前の事ですが、実際に開発に入ってみるとチームを考えた行動ができてない事が多くありました…。
その大きな原因は、今までチームで考えてきた企画や仕様、設計と違って開発は担当部分が決まれば個人で行うようになるためだと考えられます。
開発の前半で、僕の担当部分の開発が予定よりかなり遅れている状況になる事がありました。その際にチームに助けを求める事を遠慮してできず、1人で巻き返そうとしてしまい、辛く感じてしまう事が多々ありました。
もちろん、1人で巻き返そうという気持ちや努力はすごく重要ですが、チームに助けてもらう事でより早く効率的に巻き返す事ができる可能性もあります。そのため、チームのために助けを求めることも必要であると学ぶ事ができました。
またその逆も然りで、自分自身の開発が予定より進んでいたり、スケジュールに余裕があったりする場合はチームのタスクを自ら進んで巻き取ることも重要です。
そのためには、自分の担当部分の開発進捗だけでなくチーム全体の進捗状況を把握するなど視野を広く保つ必要があります。チーム開発ならではの経験であり、とても良い学びになりました。
③ コンセプトを常に考えて開発する!💪
最後の3つ目は「コンセプトを常に考えて開発する!」です。
今回のチーム開発では、「心の距離を近づけるツール」というコンセプトを元に「googleスライドで管理されていた社員プロフィール情報のシステム化」に取り組んでいきました。
しかし、企画〜リリースまでの約2ヶ月間という長い期間でコンセプトを忘れてしまいそうになる時がありました。企画〜リリースをするにあたって優先順位などを決めて行動するなど何かを判断する場面が必ず多く訪れると思います。
特に開発においては、進捗状況によって「どの機能を削除するか?」「どの機能を優先的に開発するべきか?」を判断する場面が必ず出てくると思います。実際に今回の開発でもこのような場面が多々出てきました。
その際に「心の距離を近づけるツール」というコンセプトを軸に考えることで「MUSTで開発する機能」と「+αで開発する機能」に分けて優先順位を立てることができ、開発する意義からブレずにリリースまでする事ができました。
チーム開発当初はコンセプトがそこまで重要である事を理解できていませんでしたが、チーム開発を経験してコンセプトを常に考えて取り組む重要性を学ぶ事ができました。
4. まとめ
初のチーム開発を企画からリリースまでを一気通貫して取り組んだことによって、学生時代に行なってきた個人開発では経験できない多くの事を経験する事ができました。
特に企画書・設計書の作成などに関しては、初めて取り組んだということもあって不安ではありましたが同期のメンバーと試行錯誤しながらも完成させる事ができ、大きな自信になる事ができました。
チーム開発研修が終わって本格的に業務に取り組み始めていますが、チーム開発での経験がすごく活きていると実感しており「やって良かった!」と感じております。。今回のチーム開発での経験を大きな自信にして、これから多くの事に挑戦していきたいと思います。最後まで見て頂きありがとうございました🙇