チームでプランニングポーカーをやってみた学び
最近チーム内で締め切りがギリギリになったり、スケジュール超過が発生するプロジェクトが連続で発生していました。 現在のチームではスケジュール見積もりフローが確立されてなく、ユーザーストーリーをもとに PdM が大まかなスケジュールを引いて、アサインされたエンジニアが PdM のスケジュールにプラスマイナス(大概にしてプラスになりますが…)でスケジュールを決めるという属人化されたスケジューリングを行っています。 もちろん、それが必ずしも悪ではなく、良い点もあるのですが、結果として特に長めのタスクで前述のような問題が頻発していました。 その解決策の一つとして、見積もり手法である「プランニングポーカー」をチームでやってみたら気づきが多かったので記事で共有させて貰えればと思います! プランニングポーカーとは? プランニングポーカーはプロジェクト開発における期間をチームで見積もりする手法の一つになります。 具体的なやり方はググって貰えればと思いますが、一言でいうと下記のような見積もり手法です。 1. ユーザーストーリー(開発タスク)を読み上げる 2. チームメンバーが各々でそのストーリーに対する見積もりを表明する 3. 各々の出した見積もりに関して「なぜその数値にしたか?」の議論を行う 4. 3で出た議論をもとに再度見積もりを行う (4の結果がチームの合意になるまで繰り返す) なぜわざわざこのような手法を行う必要があるのか? それは、プロダクト開発における見積もりが困難だからです。 プロダクト開発における見積もりでは下記の「不確実性コーン」という図でも示されるように、最大4倍のスケジュールのズレが発生すると言われています。 不確実性コーン (引用: アジャイルサムライ 達人開発者への道) このように見積もりは難しいという前提があるため、見積もりの目的は「正確な開発期間を定めること」ではなく「このプロジェクトはやり遂げられそうなのか?」を判断することに価値があります。 プランニングポーカーは、チームメンバーでの議論・対話を主軸においた手法であるため、 複数人の知見によって考慮漏れを防いでより詳細なタスク把握ができる 他プロジェクトへの影響度やスコープの切り分けに対する共通認識の把握ができる 上記メリットをもとに「このプロジェクトをやり遂げられそうなのか?」という問いに対して複合的な判断を行う事ができるようになります。 前フリとしてプランニングポーカーや見積もりに関して触れてみましたが、これらは多くの記事で語られているので、今回は実際にやってみた気づきをピックアップして共有します! 気づき タスクには人によって「見えているタスク」と「見えていないタスク」が存在しており、それを認知することが正しい見積もりに寄与する 今回は「Ruby アップデート」を題材にプランニングポーカーを行ってみました。 みなさんは「Ruby アップデート」と聞いてどんなタスクが頭に思い浮かびますか? Ruby のバージョンをアップデートする 上記アップデート後の動作確認 上記の二つのタスクでしょうか? ではこの二つの見積もりをやりますね! はいストップ!!! 確かに上記で Ruby のアップデート自体はできるかもしれません。 しかし、多くの場合上記だけでは Ruby アップデートで得たかった結果は得ることができないと思います。 Ruby のアップデートに伴って廃止予定になる機能の Deprecated Warning も潰しておかないと、適切に使えない機能が生まれます。 また、関連する gem のアップデートも必要になりますし、CircleCI で CI/CD を実現している場合は CI のベースイメージの更新も必要になります。 このように、一言に「Ruby アップデート」と括っても、細かく切り分けるとその中には色んなタスクが含まれていることがわかります。 勿論、プランニングポーカーを行う際に上記を把握していなくても、見積もりはできますし、開発も進められます。 しかし、これでは適切な見積もりは出来ません。上記を認識していないということは、上記が見積りの期間に入っていないということです。この場合、設定されるスケジュールが恐ろしい結果に繋がるのは明白ですよね。 プランニングポーカーでは、複数のメンバーで対話を行いながら見積もりを進めるため、その開発に必要な「見えているタスクと見ていないタスク」をチームの知見で洗い出す事ができます。 タスクの完了定義をチームで揃えることが正しい見積もりに寄与する 先程は見えているタスクと見えていないタスクに関して触れましたが、見えているタスクにも「完了をどこにするか?」というスコープの概念があります。...