学習のためのチーム開発をうまく進める5つのコツ

# はじめに
この記事はDeNA20新卒Advent Calendar2020の22日目の記事です。
最後は新卒らしい記事を書こうと考え、今回は研修や授業など学習のためのチーム開発をする際のコツをまとめます。

# 対象読者
- 技術研修や授業で複数人で開発をする方
- ハッカソンなど複数人で短期間の開発をする方

# 題材
今年のDeNAの新卒の技術研修の最後に行ったチーム開発で行ったことをまとめます。
チーム開発の課題は、自分たちで作るものを決めて、役割を決めて、設計を行い、実装を行い、発表するというものでした。ハッカソンなど多くのチーム開発に当てはまる流れだと思います。また、今年の研修はリモートだったためオンラインでのコミュニケーションのチーム開発を前提としています。

では早速コツを並べていきます。

# 1. 目標と目的を互いに理解する
この2つチームで共有します。

1. チームとしてどんな学びを得たいか、何を試したいか、どうありたいか
2. 個人としてどんな学びを得たいか、何に挑戦したいか、どうありたいか

## メリット
1. 役割決めの際に納得できる意思決定をできます。
2. 目標と目的をお互いに理解することで「自分の、相手の学びをどう最大化できるか？」ということに意識を向けやすくなります。
3. 迷った時に立ち戻る基準ができます。

## 実際の例）
### チームの目標

![スクリーンショット 2020-12-21 23.38.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222499/4531f882-a259-92a8-1f6a-260d24d543cd.png)

### 当時の私個人の目標

![スクリーンショット 2020-12-21 23.39.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222499/568cb7a7-600c-67d2-5a12-3b528917241c.png)

# 2. 時間で場を作る
質問はガンガンしていこう！など共有をしても実際には「相手の迷惑になっていないか」など遠慮が出てしまうことが多いです。そこで時間で場を作ります。私たちはポモドーロを利用しました。

## メリット
1. この時間は「これ」をしていいんだ！と遠慮がなくなります。
2. 雑談など学びや仕事以外のコミュニケーションが活発になります。チームの雰囲気が良くなります。
3. 一定の間隔で作業のメリハリがつくため工数見積もりが簡単になります。
4. 一定の間隔で共有が必ずされるため誰かが詰まる時間が大きく減ります。
5. 質問の場を限定することにより、全員の手が止まること時間が大きく減ります。

## 実際の例）
私たちはポモドーロを取り入れました。同じタイマーをブラウザで共有できる https://cuckoo.team/ というものを利用しました。
### 当時のルール
1. 25分を1タームとして1ターム終了ごとに５分の休憩(雑談など)を取りました。
2. 夕方に1回は長めの15分の休憩をとることにしていました。
3. 各タームの最初を質問タイムとしていました。

# 3. 共有する際は図を描く
口頭やテキストだけでは前提の認識はあっていても頭の中の想像の細部がズレていることが多いです。そのため図を書きます。

## メリット
1. 細部の違いにすぐに気づくことができます。
2. 発言者自身が図を描く中で意見を整理できます。
3. 議論の過程を図として自然に残すことができます。
4. 意見は異なっていても大事にした部分は似ているなど議論の核を見つけやすくなります。

## 実際の例）
私たちは https://cacoo.com/ja/ を使用していました。サービスの構成図やシーケンス図を書き、その場で書き足しながら議論をしました。
### サービスの構成図
![スクリーンショット 2020-12-22 0.00.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222499/a6a94610-6854-775e-9598-958451350583.png)

### シーケンス図
![スクリーンショット 2020-12-22 0.00.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222499/da901ea3-5baf-8dc7-c4f3-51f11ab16899.png)

# 4. 全体設計、外部設計まではチーム全員で行う
役割を決めたらすぐに役割ごとに分かれて作業を始める場合もあると思いますが、今後の議論のためにもまずはチーム全体で作業を行います。

## メリット
1. 大枠の前提が共有されるので議論の質が高まる。勘違いによる戻りが大きく減ります。
2. 自分の役割でない箇所の大枠の設計は想像できるため早い段階で懸念点を洗い出すことができる。戻りが大きく減ります。
3. 外部設計を共有することでサーバ、クライアントを切り分けた並列作業が可能となります。

## 実際の例）
私たちは、全体設計は3で述べたcacooで行い、サーバ、クライアントそれぞれのプロジェクトのディレクトリ構成図も共有しました。またAPIの外部設計はSwaggerを利用しました。

### プロジェクト構成
![スクリーンショット 2020-12-22 0.09.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222499/bdd4b9bb-984e-f9b8-6b7e-dd8cb7b75416.png)

### swagger
![スクリーンショット 2020-12-22 0.11.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222499/0afe30a2-1a63-c6f8-e248-2f15a0b2e4e4.png)

# 5. 正直に振り返る
正直に意見を言われることが1番学びに繋がります。また、自分が弱みと思っていた部分は実は気にされてなかったり、自分が普通だと思っていたことが強みだと思われていたりなど新たな自分の発見につながります。相手の直した方が良いところはむしろ贈り物！くらいの気分でガツガツ言い合った方が雰囲気も良くなります。

## メリット
1. 自分の認識と客観的な認識の差に気付けます。
2. 人の強み、弱みを探す中で自分への戒めを発見できます。
3. 最初に立てた目標、目的を再確認できます。
4. ありたい姿との差から改善すべき点、挑戦すべき点が明確になります。
5. 人に褒められるのは素直に嬉しいです。だから改善点も素直に受け止めることができます。

## 実際の例）
私たちは週末に2S2Bという相手の良いところと直したらもっと良くなるところを2つずつ挙げる仕組みを行なっていました。また個人にだけでなくチームの目標の振り返りも行なっていました。
### ある週の私へのメンバーからの2S2B
![スクリーンショット 2020-12-22 0.18.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222499/36cfed71-e8cf-8037-224a-5d0a52b28bb5.png)
### ある週のチーム目標の振り返り
![スクリーンショット 2020-12-22 0.21.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222499/16dd6dc9-e1ab-6fec-360e-1b612dff0ef8.png)

# まとめ
この記事では今年の技術研修のチーム開発がうまくいった大きな要因5つをまとめました。「良いもの」にチームで向かっていけるのは本当に楽しく気持ちが良いです。この記事が皆さんの学習のためのチーム開発に少しでも役立てたら嬉しいです。


この記事を読んで「面白かった」「学びがあった」と思っていただけた方、よろしければ Twitter や facebook、はてなブックマークにてコメントをお願いします！
また [DeNA 公式 Twitter アカウント @DeNAxTech](https://twitter.com/DeNAxTech)では、Blog記事だけでなく色々な勉強会での登壇資料も発信してます。ぜひフォローして下さい！

# 参考リンク
- [2S2Bについて キャッチボール感覚で客観的なコメントをもらうチームの振り返り（研修振り返りレポート）](https://engineer.dena.com/posts/2020.07/20-new-graduates-training-retrospective-3/)
- [DeNAの技術研修について 【研修編】願いドリブンで新卒の成長環境を考え続けている話](https://engineer.dena.com/posts/2020.10/20-new-graduates-training-summary-1/)