レストラン料理人から学ぶチームコミュニケーション

## 読み飛ばしてください
おはようございます、しなもんです。

タイトルからして意味が分からない記事ですが、内容は真面目です。
経緯はこうです。

最近、Youtubeのおすすめが[料理人のPOV動画](https://youtu.be/3_upA09AntU)ばっかりになってきました~~なんで？~~

それを見てると、どうやら料理人にも大量の注文（タスク）を大量の人数でさばいていく
**特殊なチームコミュニケーションがありそう**な気がしてきました。

洗い物（次の開発のための環境構築）とか、調理のコツを教えたり（知識共有）とか、注文の仕分け（タスク管理）とか...

難しく抽象化すると、
**高度なスキルを持つ専門家たち**が、
**時間的制約の中で複雑なプロジェクトを遂行**し、
**高品質な成果物を生み出す**ことが求められています。

**あれ？これエンジニアでも同じことできるんじゃない？**

ということでまとめてみました。

この記事では、レストラン料理人からチームコミュニケーションを学びたいと思います。

## キッチンマネジメントの基本

### 役割分担
プロが集まるレストランのキッチンでは、いろんな料理人が明確な役割を持っているそうです。

| 役割名 | 役割 | 責任 |
|:-|:-|:-|
| エグゼクティブシェフ | 全体の統括、メニュー開発 | チームの指揮、ビジョンの提示、最終的な品質保証 |
| スーシェフ | エグゼクティブシェフの補佐、キッチン運営 | シフト管理、在庫管理、日々の業務のスムーズな進行 |
| ソースシェフ、パティシエ、グリルシェフ | ソースやデザート、グリル料理担当 | - |
| ガルドマンジェ | 食材の下準備、最終的な盛り付けと品質チェック | 食材の品質管理、料理の見た目と味の最終確認 |
| キッチンポーター | キッチン設備の管理、清掃、効率化の提案 | 作業環境の最適化、衛生管理、新技術・設備の導入 |
| エクスペディター | オーダーの管理、各セクション間の調整 | 料理の提供タイミングの最適化、スムーズな業務フローの確保 |

**なんと驚くことに(?)ソフトウェア開発チームの構造と似ています** ~~(ごり押し)~~

| 役割名 | 役割 | 責任 |
|:-|:-|:-|
| プロジェクトマネージャー | 全体の管理、スケジュール調整 | チームの指揮、ステークホルダーとの調整、最終的な製品品質の保証 | 
| テックリード | 技術的な指揮、アーキテクチャ設計 | タスク割り当て、技術的な問題解決、開発プロセスの最適化 |
| フロントエンド/バックエンド/データベース開発者 | 専門分野の実装 | - |
| QAエンジニア/テスター | 品質保証、テスト | ソフトウェアの動作確認、ユーザー体験の検証 |
| DevOps エンジニア | 開発・運用環境の管理、自動化プロセスの構築 | CI/CD パイプラインの管理、インフラの最適化、新技術の導入 |
| アジャイルコーチ | 各チーム間の調整、プロジェクトの進捗管理 | スムーズな情報の流れの確保、チーム間の協力体制の構築 |

### ワークステーションの配置と動線
キッチンでは、効率的な動きを可能にするためにレイアウトが工夫されているそうです。
**そしてなんと同様に(?)**、開発チームでも、情報の流れを最適化するための物理的・仮想的な「レイアウト」が必要です。

例：

| キッチン | 開発チーム |
|:-|:-|
| 調理場、盛り付け場、洗い場の戦略的配置 | オープンなオフィスレイアウト、仮想カンバンボード |

### 時間管理とスケジューリング
レストランでは、前菜からメインディッシュ、デザートまでのタイミングがめちゃくちゃ考えられているそうです。
開発プロジェクトでも、要件定義から設計、実装、テストまでの適切なスケジューリングが不可欠なので共通点です ~~(ごり押し)~~。




## キッチンから学ぶチームコミュニケーション技術

さて、キッチンコミュニケーションとエンジニアのチームコミュニケーションが非常に似ているものだと分かりましたね(？)。
それでは、プロのレストランからその特徴を学んでみます。

### 「Yes, Chef!」文化

キッチンでは、指示を受けた際に「**Yes, Chef!**」と明確に応答することがあるそうです。
この習慣には重要な意味があります。

- **指示の受領確認**
指示が確実に聞こえ、理解されたことを示します。
- **責任の明確化**
タスクを引き受けたことを明確にします。
- **チーム全体への周知**
他のメンバーにも、誰がどのタスクを担当するかが伝わります。

#### 開発チームではどうか？
- タスク割り当て時に、「了解しました。このタスクは私が担当します」と**明確に応答する**。
- チャットツールでは、タスク受領時に**特定の絵文字（例：👍）で反応する習慣**をつける。
- スタンドアップミーティングで、**自分の担当タスクを明確に**述べる。

### 簡潔で明確な指示

キッチンは時間に制約があるだけでなく、ずっと騒音が発生する場所でもあります。
そのため、コミュニケーションは極めて簡潔かつ明確である必要があるわけです。

- **具体的な指示**
「もう少し塩を」ではなく「小さじ1/4の塩を追加」
- **時間の明確化**
「すぐに」ではなく「3分以内に」
- **優先順位の明示**
「急いで」ではなく「他の全てを止めてこれを優先」

#### 開発チームではどうか？
- バグ報告時に**再現手順を具体的に記述**する。
- タスクに**はっきりとした期限**を設定する（「できるだけ早く」ではなく「金曜日の15時まで」）。
- プロジェクト管理ツールで優先度を明確に設定し、視覚化する。

### 非言語コミュニケーションの活用

キッチンでは、言葉以外のコミュニケーション方法も多く使われるそうです。

- **ジェスチャー**
「もっと火を強く」「時間切れ」などのハンドサイン
- **アイコンタクト**
次のアクションの確認や同意を求める際のアイコンタクト
- **音や合図**
タイマーの音、鍋を叩く音など、特定の状況を示す合図

#### 開発チームではどうか？
- オンラインミーティングでの「手を挙げる」機能の活用
- チャットツールでの**絵文字やリアクション機能の積極的な使用**
- CI/CDパイプラインの状態を示す**視覚的なインジケータ**（ビルドランプなど）の設置

### ブリーフィングとデブリーフィング

キッチンでは、シフト開始前にブリーフィング（打ち合わせ）、
シフト終了後のデブリーフィング（振り返り）が行われます。

- **ブリーフィング**
その日のメニュー、特別注文、必要な準備を確認
- **デブリーフィング**
その日の反省点、改善点、成功事例を共有

#### 開発チームではどうか？
- スプリント計画のミーティングで、詳細なタスク確認と役割分担
- スプリントレトロスペクティブでの振り返りと改善点の抽出
- 日々のスタンドアップミーティングの効果的な実施

### 視覚的な情報共有

キッチンでは情報を素早く理解するために、様々な視覚的ツールが使われています。

- **オーダーチケット**
各テーブルの注文内容を明確に示す
- **プレップリスト**
その日必要な準備作業のリスト
- **タイムライン**
各料理の調理時間を視覚化

#### 開発チームではどうか？
- カンバンボードを使用したタスクの視覚化（Trello, Jirafなど）
- バーンダウンチャートによるプロジェクト進捗の可視化
- チーム全体で共有するダッシュボードの設置（Jenkins, Grafanaなど）

### 即時フィードバック文化

キッチンでは、料理の味や盛り付けに関する即時フィードバックが常に行われているそうです。

- **味の確認**
調理中の頻繁な味見と調整
- **プレゼンテーションチェック**
提供前の盛り付けの最終確認
- **客からのフィードバック**
顧客満足度の即時把握と対応

#### 開発チームではどうか？
- ペアプログラミングや頻繁なコードレビューの実施
- 継続的インテグレーション（CI）による早期の問題発見
- ユーザーテストや早期リリースによる実際のユーザーからのフィードバック収集

## ストレス管理とチーム文化

どちらも時間的制約の中で高品質なものを生み出す集団です。
ストレス管理や文化も学べることがありそうです。

### 高圧環境下でのパフォーマンス維持
キッチンもソフトウェア開発も、締め切りや高品質要求によるプレッシャーが大きい環境です。
ストレス管理テクニック（深呼吸、短い休憩など）の共有が重要だと思います。

### チーム精神の醸成
キッチンでの「ブリガード・システム」（階層的なチーム構造）は、各メンバーの役割を明確にし、チーム全体の結束を強めているそうです。
開発チームでも、各自の強みを活かしたロール分担をするべきでしょう。

### 継続的な学習と改善
一流のシェフは常に新しい技術や食材にチャレンジしています。
同様に、私たち開発者も新しい技術やツールの学習を継続することが重要だと思います。
また、チーム内での知識共有セッションの実施を大事です。

## さいごに

キッチンでのチームコミュニケーションと
エンジニアでのチームコミュニケーション
多くの共通点がありましたね(？)

効率的なワークフロー、明確なコミュニケーション、品質へのこだわり、そしてチーム精神の重要性は両者に共通していたわけです。

1. 役割の明確化とチーム構造の最適化
2. 効率的で明確なコミュニケーション
3. 視覚的な情報共有の活用
4. 継続的な品質チェックと迅速なエラー対応
5. ストレス管理とチーム精神の醸成

もし今後高級レストランに行くことがあったら、キッチンの中で

> 注文(issue)に対して皿(branch)に料理(code)盛りつけた(push)から出そう(pull request)と思ったのに味ちょっとおかしい(bug)って言われて(review)やり直しになった(Request changes)

なんてことを言っていると思うと楽しそう。知らんけど。

最後まで読んでいただきありがとうございました。