仕様理解度を可視化した話
石坂 達也
この記事は、リクルートライフスタイル Advent Calendar 2019の18日目の記事です。
こんにちは。 リクルートライフスタイルの飲食領域の開発マネジメントグループに所属している石坂です。 飲食プロダクトの中でもAirレジ ハンディとAirメイトを担当しています。 、別記事で紹介されていたLT大会で「ドキュメントと戦う技術 -暗黙知の育て方-」というタイトルで発表し、得票数で同率優勝しました。 タイトルは少し攻めていますが、内容は仕様を記憶に定着させるための以下の施策の紹介です。
- ペアプロ/モブプロ
- チーム内勉強会
- 仕様クイズ
- 仕様理解度マップ
この記事ではその発表内容の中から"仕様理解度マップ"について取り上げます。
仕様理解度マップとは
プロダクトの機能一覧に対してチームメンバーがどれくらい理解しているかをレベル化したものです。 スキルマップの仕様版だと考えると想像しやすいかと思います。 スキルマップの導入事例としては弊社グループ会社のQuipperの記事がわかりやすいです。
背景
担当プロダクトのチームでは、エンジニアメンバー全員が、実装を担当している機能かどうか関わらずにプロダクト全体の仕様/コードを理解しておこうという方針としています。 その理由は以下になります。
プロセスロスの低減
プロダクトマネージャーと要件や仕様について話し合っているときに頭に入っていないと、「持ち帰って確認します。」というステップが必要になります。 会議でもよく聞くフレーズではないでしょうか。しかし、頭に入っていれば即答できるので、その場で決定できることが多くなります。 新規プロダクトではスピードを重視されることがあるため、論点を素早く解消していくことも重要な要素となります。
見積り精度の向上
私の担当チームではメンバー全員でタスク分けと見積もりを実施しています。 そしてこの見積もりの時点で、設計も一緒に行ってしまいます。 というのも、見積もりをするときに「ここにこういう改修入るよね」のような会話しているだけで、いつのまにか設計が終わってしまうからです。
これはメンバーの脳内に既存仕様やコードがあってこそできることです。 要件が確定している前提では、設計/実装の不確実性の量が見積もり精度に依存します。 設計時に脳内コーディングによって完成形を描けているので不確実性が少なくなり、見積り精度も向上します。
課題
上記のような方針のため、ペアプロ/モブプロやチーム内勉強会を通して知識の伝搬は実施していました。 しかし、プロダクトが成長して人が増え、新規参画者の割合が高くなり、誰が何を知っているのか分かりにくい状態になっていました。
解決策
スキルマップから着想し、仕様に対して何をどこまで知っているかを数値化しました。 これが仕様理解度マップとなります。
運用方法
- メンテ周期は月次とし、毎月1日を更新日にしています。
- レベルが低い機能に対してチーム内勉強会の題材にし参加者で学んでいく。
- ツールはGoogleスプレッドシート
サンプルは実際に運用しているものをベースに変更しています。
レベル定義
レベル定義は以下としています。
レベル | 評価基準 |
---|---|
0 | 機能の存在を知らない(今知った) |
1 | その機能をアプリで触ったことがある |
2 | 機能概要を知っている |
3 | ロジックをなんとなく知っている ・データソースを知っている(どのテーブル/プロダクトに対しての操作か知っている) ・API エンドポイントとreq/res情報を知っている |
4 | ロジックの隅々まで知っている(脳内カバレッジ80%以上) ≒ 設計時に脳内コーディングできるか |
運用結果
チームとして仕様理解度を可視したことで、以下のような効果がありました。
- 仕様勉強会の題材に優先度をつけられるようになった。
- 自分が知らない機能の存在を認知できるようになった。
- 改修対象の理解度を考慮して案件アサインをできるようになった。
今後の展望
現状のレベル定義では開発チームのみしか最高レベルを目指せないですが、 役割ごとでレベル定義を変えてプロダクトに関わる全員の理解度マップを作りたいです。 誰が何知っているんだっけは開発に限らない課題です。
まとめ
仕様の理解度を数値化するツールを紹介しました。 このツールはあくまで可視化ツールでしかないため、どう取り組んで数値をあげていくかが重要となります。 冒頭で述べたように私の担当チームは ペアプロ/モブプロ、チーム内勉強会、仕様クイズなどを通してチーム全員の仕様理解度の向上に努めています。
とはいえ、誰も知らない仕様なんてないよね、という健康診断の位置づけで導入検討をされてみてはいかがでしょうか。
私たちと一緒に働くことに興味がある方は エンジニア採用ページ からご連絡ください。