チーム開発の難しさ。(情報系学生)
はじめに
授業の一環で、学内のイベントに出展する作品をチームで制作しています。
その中で学んだチーム開発の難しさを雑に書き残しておきたいと思います。
前提として
チーム開発における私の状況
- チーム開発の知識や経験がほぼない(授業のみ)
- 授業におけるチームのリーダーが初めて
- チームの中ではプログラミングへの理解は深い
- チームの中ではGitの理解が深い
その他私の経験
- アルバイトでの新人教育の経験
- ゲームのコミュニティ、大会の運営経験
- 部活のリーダー、副部長の経験
チームメンバーの状況(特徴)
Aさん
- プログラミングへの理解が深い
- Gitの理解が浅い
- 役割を理解していて、指示に忠実
- 簡単なタスクも冗長になりがちで時間がかかる
Bさん
- プログラミングへの理解が浅い
- 理解が浅いためにChatGPTに頼りがち
- Gitの理解が浅い
- 役割を認識しているが、他のメンバーの領域も侵してしまう
- 簡単なタスクは素早くこなすが雑さが目立つ
ツール等(一部)
- VSコード
- GitHub
役割
私
- 設計
- 進捗・タスクの管理
- コーディング
Aさん
- コーディング
Bさん
- スタイリング
- 雑務
チーム開発の難しさについて
正直なところ
Aさんは役割を理解しているためコミュニケーションも取りやすい。
Bさんは自己判断でタスクに干渉したりコードを改変したりすることがあるため、扱いが難しい。
特に難しいと感じた点
自己判断と生成AIの使用方法。
自己判断
自己判断が良い方向に転べば結果オーライなのですが、Bさんはプロジェクトの全体像を把握しないままに他の領域に手を出してしまっていたので、ブランチをマージした際に正しく動作しない場面が出てきてしまいました。
生成AIの使用
生成AIの使用については何も決まりを設けていませんでした。そのため、Bさんはコードを全てChatGPTにぶち込んでタスクを完了させるという荒技をしていました。この結果、Bさんのタスク要件を満たすために必要なコードだけが優先されて、全体に必要なコードが削除されたり、改変されたりしました。(もちろんブランチは分けていますが、マージする際にコンフリクトを起こしてしまう。)
私の反省点
- もう少し全体像や役割について共有しておくべきだった。
➔自分の作業領域を理解してもらうように。 - Gitの使い方、コミットのタイミングやメッセージなどを明確にしておくべきだった。
➔Gitのメリットを活かしきれるように。 - 生成AIの使用について話し合うべきだった。
➔開発効率が上がるというメリットもあるため、具体的な使用ルール(コードを全部ぶち込まないなど)を話しておく必要があった。
難しいをまとめると、、
- メンバーそれぞれの特徴や技術力を考慮しながら柔軟に進めないといけない難しさ
- 同じイメージを持ってもらう難しさ
学べたこととして
開発におけるルール作りが大切だなあ
初期段階である程度のルール作りをしておくと、思い違いや理解不足によるミスや問題は発生しにくくなるのかなと思います。
なんでもいいから記録を残しておくべき
それぞれがどのようなイメージを持って取り組んでいるのか、どのような作業を行ってどのように進んだのか、問題は何かなど、都度記録を残しておくと一つにまとまるように誘導できたのかなと思います。
報連相大事
作業前に何をやるのか確認したり、作業後に進捗はどうだったかを確認したりする報告と連絡をリーダーが主導して行いながら、詰まってそうなところは相談を受ける体制を整えるべきだったなと思います。
まとめ
全体的に私の力不足、知識不足が目立ったと思う。
今回の失敗や難しかった点を次回のプロジェクトに活かせるように、ドキュメント化して残しておきたいと思います。
Discussion