2泊3日で合宿を行った。これまで、チーム開発をしておらず、1サービス1開発担当者で開発を行ってきた会社さんと合同で、弊社で行っているチーム開発を共有することが目的の合宿だ。弊社からは4名が参加、合計7名で日光で行ってきた。その合宿で、チーム開発のメリット・デメリットについて改めてみんなで考え、議論したのでまとめてみる。チーム開発のメリットまずはメリットについて。技術的な幅が広がる自分が知らなかった設計方針、コーディング方法など、メンバー間でノウハウが共有できるので、エンジニアとして技術的な幅が広がる。使ったことがないライブラリやサービスなどの情報も共有したりするため、知見が広がる。障害対応が迅速にできるチーム開発をすることで、複数人でサービスの障害になりそうなポイントを把握できるため、障害発生時も調査や対応が速くできる。複数人で障害復旧作業対応ができるため、サービス復旧も速い。コードレビューによって品質向上が見込めるテストしやすい実装方法だったり、メンテナンスしやすい書き方などチームで「どうあるべきか」ということを議論しながら進められるため、一人で開発をしているより技術的に成長できる。チームでチェックするため、実装漏れやテスト漏れが少なくなる。リリース前にバグが発見できる可能性が高まる。必然的に、品質の向上が見込める。ビジネスの継続性チームで開発することで、属人化の撤廃が可能。仮に開発担当者が怪我や病気で入院してしまって長期で離脱してしまったり、退職してしまっても、その人以外の人が保守・継続開発が行える。ビジネスの継続性においても、チーム開発はメリットが大きい。得意な分野、苦手な分野を補完し合える自分が苦手な技術や分野について、得意な人に任せることができる。逆に、自分が得意な分野で他の人の苦手な分野を担当することで、チームに貢献できる。なにより楽しい!一人で開発を行っていると、なかなかうまく行かなかったり、煮詰まってしまうこともあるが、チームで開発を行っているとハマったときに相談できる。みんなで一丸となって1つのサービスを作り上げていっている一体感のようなものがあり、楽しい!チーム開発のデメリットチーム開発のデメリットは特にないような気もするが、あえて挙げてみる。チームメンバーが多くなった時に、情報共有のコストがかかる新しいメンバーが入ってくると、前提として共有している知識・背景に偏りができてしまうため、その前提の情報共有に時間がかかってしまうかもしれない。いった暗黙知をなくすためにも、社内の情報共有を頻繁に行う仕組みや雰囲気作りが必要。ブランチにマージしないという運用をしているため、メンバーが増えてくると他の人のレビュー待ちの状況が発生することもあるかもしれない。(例えば、「最速でお願いしたい」「なるべく早く」「お時間あるときでOK」など)を設けて、メンバー間で共有したり、「◯◯さん、コードレビューお願いします!」などメンバー間で密なコミュニケーションを取ることが必要。メンバーの構成によっては、他メンバーに引きずられて作業待ちなどが発生する恐れがあるメンバーによって、スキルの差があったり、作業効率の差があったりして、他のメンバーの作業待ちが発生することもあるかもしれない。その際は、コミュニケーションを取って、ハマっている箇所はないか、設計等で悩んでいるところはないかを随時確認することが必要。スキルトランスファーを行い、メンバー同士でスキルを向上させることで改善できるかもしれない。以上、簡単ではあるがチーム開発のメリット・デメリットについて議論したことをまとめてみた。メンバーの普段業務中には見ることができない一面を見ることができて、なかなか面白い合宿だった。採用メンバー紹介リモートワーク健康管理ソリューション・サービスお問い合わせ見積もり依頼や詳しいご相談など、クラウド・AWSに関する困りごとをお気軽にご相談ください。以下のお問い合わせ先から受け付けています。お問合わせはこちら※通常1営業日内にご回答いたします。