皆さん、こんにちは!Akerun事業開発部のプラットフォームチームでエンジニアを務めている島田です。
私たちのチームは、日々変化する技術やビジネスの要求に対応しながら、高い生産性と健全なチーム文化を維持することを目指しています。その実現のために、私たちは「ワーキングアグリーメント(WA:行動規範)」をチーム全員で作成し、運用しています。
本記事では、このWAがなぜ必要で、どのような内容になっているのか、そしてそれが私たちのチームにどのような変化をもたらしたのかをご紹介します。自律的なチーム作りや、リモートワーク環境下でのコミュニケーションに課題を感じているエンジニアリングマネージャーやリーダーの方にとって、ヒントになれば幸いです。
なぜ、あえて「ワーキングアグリーメント」を決めるのか?
「ルールで縛るなんて、自律的なチームとは逆行しているのでは?」と思われるかもしれません。しかし、私たちのWAは「最小限の制約で、最大のパフォーマンスと心理的安全性」を得るための共通言語であり、チームメンバー全員の「働き方や価値観の尊重」を土台にしたものです。
私たちがWAに込めた3つの願い
- コミュニケーションの質の向上と摩擦の軽減: 価値観が多様化する中で、「暗黙の了解」は対立の種になりがちです。WAは、意思決定や相談の「型」を定めることで、議論を建設的にし、無駄な衝突を減らします。
- 自己組織化の基盤作り: エンジニア一人ひとりが自律的に動くためには、「この状況ではどう動くべきか」という共通認識が必要です。WAは、その判断基準を提供します。
- 新メンバーのスムーズなオンボーディング: WAを読むだけで、チームの文化、コミュニケーションのスピード感、緊急時の対応優先度がわかるため、新しいメンバーがすぐにチームに貢献できるようになります。
私たちのチームを支える3つの柱:ワーキングアグリーメントの内容
私たちのWAは、チームメンバー同士の議論を重ね、他社の優良事例も取り入れながら作成しました。また、四半期に一度は必ず見直し、形骸化を防いでいます。最初に決めた内容から大きく変わることはありませんが、微調整を続けることで、常にチームの「今」にフィットさせています。
1. 「コミュニケーション」:ストレスフリーで円滑な意思決定のために
| 項目 | 具体的な内容と意図 |
|---|---|
| 意思決定の基本はラフコンセンサス | 全員が完全に賛成でなくても、異論を唱える人がいなければ進めるというルール。「完璧な合意」を求めないことで、意思決定のスピードを上げます。 |
| Slackへの返信は4時間以内 | コミュニケーションの「速度」に関する期待値を合わせることで、相手の不安を解消し、ボールが停滞するのを防ぎます。 |
| Slackへのリアクションルール | 👀(確認した)、✅(OK/賛成)など、絵文字で意思表示を統一。文字を打つ手間を省き、「見た/見てない」の無用な確認をなくします。 |
| やりとりはオープンに(基本的にDM不使用) | 透明性を高め、情報格差をなくします。DMを使うべき特別な理由がない限り、すべてパブリックチャンネルで行います。 |
| アジェンダの共有は前日まで | 参加者が事前に準備し、質の高い議論をするための最低限のマナーとルールです。 |
2. 「業務の進め方・開発プロセス」:生産性を高め、常に前に進むために
| 項目 | 具体的な内容と意図 |
|---|---|
| Fail Fast, Learn Fast(素早く失敗し、素早く学ぶ) | 完璧を目指してリリースが遅れるよりも、小さく試して市場やユーザーからフィードバックを得ることを推奨する姿勢です。失敗を恐れない心理的安全性の醸成に繋がります。 |
| 詰まっている時は、すぐに相談 | 抱え込みによる開発の遅延を防ぐため、専用チャンネルやメンションで「助けを求めることの推奨」を明文化しています。 |
| タスクや返信には期限を明確にする | タスクの優先順位付けと計画的な対応を促します。期限がない場合は「翌営業日対応」とすることで、無期限のタスクを発生させない仕組みです。 |
| Pull Request(PR)/チケットの概要にTODOや進捗を記載 | 状況を可視化し、誰でもすぐに引き継ぎやレビューができる状態を作ります。属人化を防ぎ、相互サポートを容易にします。 |
| エラー/ワーニング通知は最優先調査 | サービス品質維持のため、アラートチャンネルへの通知を最優先業務と定めます。これにより、緊急時の判断基準を統一しています。 |
3. 「ワークスタイル」:お互いの存在を感じ、一体感を維持するために
| 項目 | 具体的な内容と意図 |
|---|---|
| オンライン会議はカメラオン or エフェクト | リモートワークでも「そこに人がいる」という感覚を大切にするため。全員の表情やリアクションが見えることで、発言者は安心して進められます。 |
| 音声やリアクションでの応答 | ファシリテーターの進行や発言内容に対するフィードバックを明確にすることで、議論の停滞を防ぎ、参加意識を高めます。 |
| 朝会は参加必須 or Slackで日報共有 | チームの同期を維持し、お互いの状況を把握するための最も重要な接点です。不参加の場合の代替手段(日報)を定めることで、情報共有の漏れを防いでいます。 |
コードレビューのWA
さらに、「Looks Good To Me」を参考に取り入れたコードレビューのチームワーキングアグリーメントがあります。
コードレビュープロセスにおける目標、ワークフロー、責務、およびレビューの焦点となるガイドラインを定めています。
1.コードレビューの目標
- バグの発見
- コードベースの安定性とメンテナンス性
- 知識移転・共有
- 記録の保持・作成
2.私たちのワークフロー
| フェーズ | 主なルール・責務 |
|---|---|
| 準備 | GitHubとSlackを連携し、PRの通知を受け取れるように推奨。 |
| レビュー前 (レビューイー) | ローカルでの動作確認、CI(単体テスト、Lint)のパス、PRテンプレートの使用、レビューアーを2名以上アサイン(AIレビューアーは1名にカウントしない)。 |
| レビュー中 (レビューアー) | チーム目標である「オープンからレビューまでの平均時間」以内に応答、レビュー観点に基づいたレビュー、修正済みならconversationを解決、問題なければ承認、修正依頼はコメント。 |
| レビュー後 (レビューイー) | 指摘事項には要・不要に関わらず返信、修正した場合はコミットハッシュを記述、全て対応後に再レビューを依頼。 |
| マージ | 2人以上の承認がある場合、PRをマージ。マージ後のCI通過を確認。 |
| PR作成者の責務 | 自分自身が最初のレビュー担当者になる、PRを管理しやすくする(理想は20ファイル未満、500行未満)、エゴを捨てる、フィードバックに焦点を当てる。 |
| レビュー担当者の責務 | エゴを捨てる、開発者ではなくコードに焦点を当てる、建設的なフィードバック、影響力を濫用しない(迅速な完了)、徹底的にレビューする(通過したコードはレビュー担当者の責任となる)。 |
3. 私たちのレビューの焦点(観点)コードレビュー時に特に焦点を当てるべき主要な項目として、以下のものが挙げられています。
- 複雑さ: コードが理解可能で、将来的に変更しやすいか。
- 整合性: 既存の設計パターンやプラクティスに従っているか、再利用可能な既存コードはないか。
- 規約: 業界やプログラミング言語の規約を守っているか。
- ドキュメント: ドキュメントの不足や更新の必要性。
- エラー処理: エラーと例外処理の明確なガイドラインと一貫性。
- 命名: 変数名などが明確で理解しやすいか。
- リソース管理: メモリやネットワーク接続などのリソース管理が適切か。
- 拡張性: リファクタリングや書き換えが容易で、将来のシナリオに対応できるか。
- セキュリティ: 明らかな脆弱性やセキュリティ基準の遵守。
- テスト: テストの不足やカバレッジに関する許容範囲。
4. ブロッキング問題 vs 非ブロッキング問題
- ブロッキング問題 (PRの承認を止めるべき問題):
- 要件未達、CIの未通過、セキュリティの問題、パフォーマンス問題。
- 非ブロッキング問題 (PRの承認を止めるべきでない問題):
- スタイルの好み、軽微なフォーマットの不一致、ドキュメントの細かい指摘、任意の機能の欠如、軽微なリファクタリングの機会、無関係な改善。
まとめ:WAは成長するチームの「OS」である
私たちのワーキングアグリーメントは、単なるルールブックではなく、チームがスムーズに動くための「オペレーティングシステム(OS)」のようなものです。
この共通認識を持つことで、私たちは余計な摩擦にエネルギーを使わず、ユーザーへの価値提供という最も重要な活動に集中できています。また、メンバー全員で作り、定期的に見直すプロセス自体が、チームのオーナーシップを高め、自律性を育んでいます。
もし皆さんのチームでも、コミュニケーションのすれ違いや意思決定の遅さに悩んでいるようでしたら、ぜひ「メンバー主導」でワーキングアグリーメントを作成し、運用することをおすすめします。それは必ず、チームの心理的安全性と生産性を飛躍的に向上させる第一歩となるでしょう。
株式会社フォトシンスでは、一緒にプロダクトを成長させる様々なレイヤのエンジニアを募集しています。 photosynth.co.jp
Akerunにご興味のある方はこちらから akerun.com