for Startups Tech blog

このブログのデザインを刷新しました。(2023/12/26)

【フォースタ テックブログ】Tryを決めるだけでは意味がない。チームに成果を還元するための取り組み。

お疲れ様です。エンジニアのHur Junhaengです。
フォースタートアップス(以下、フォースタ)に今年の2月に入社しました。

今回は、スクラム開発を行っているチームが振り返りで決定するTryをどう管理するべきか個人的な見解を込めて、フォースタでどのように対応しているかについてご紹介していきたいと思います。

スクラムにおいての振り返り

そもそもの話になりますが、振り返りは何故必要なのでしょうか。

振り返りを行う目的は、組織ごと違いはあるものの「過去にあった出来事から学び、チームをよりよい方向に変化させる」という大枠は同じかと思います。なので、振り返りの結論としてはチームをよい方向に変化させるための次のアクションを決めることが必須不可欠になります。

スクラム開発を採用している組織において、振り返りそのものは珍しいことではありません。振り返りのフレームワークは数え切れないほど多く存在していますが、Keep・Problem・Try方式(以下、KPT方式)を使ったことがない組織は少ないでしょう。表現は少し変わってしまいますが、この方式の場合でも「続けるべきこと(Keep)」と「抱えている問題(Problem)」を洗い出して、最終的には「次のアクション(Try)」を決定するために振り返りをしていることが分かります。

どの方式が組織に適切なフレームワークかはさておき、他の振り返り方式を採用している組織においても、新しいTryを決定することは重要ではないでしょうか。ただ、Tryを決定するだけで終わってしまうと個人によって取り組みがズレてしまったり、継続的な管理ができないことが多いです。よって、一度決定されたTryはチームとして「Tryに対する評価」をすることで、その成果をチームに還元する必要があります。

チームが抱えている課題

私が働いているチームではKPT方式を含め、色んな振り返りフレームワークを実施しています。フレームワークごとに手法は異なりますが、最終的なアウトプットとしては複数のTryが決定されています。ただ、決定されたTryは体系的に管理されておらず、チームやメンバーの状況によって左右されるという問題が発生していました。

  • Tryによっては共通認識にズレがあり、メンバーごとの解釈が異なる
  • 目の前のタスクが優先され、新しい取り組みを忘れてしまう
  • 効果があっても、チーム全体の行動改善に繋がりにくい

明確なTryの評価フローがなかったので、Working Agreement(以下、WA)は存在しているが、良いTryだと評価されていても適切なタイミングでWAに反映されておらず、そのままフェードアウトしていくようなケースもありました。

振り返りを通じて、チームで議論して決定された方針が、知らない内に忘れられてしまうことは望ましくありません。チームとして、もう少しTryの扱いを改善する必要があると認識しました。

Try一覧とステータスを可視化

チームの問題を解決するために最初に取り入れたのは、決定されたTryを別ドキュメントにまとめることでした。今までは振り返りの時に作成した議事録の中で各Tryを記載していたので、Tryを確認するたびに作成された日の議事録を閲覧していました。スプリントを跨いでも一目で状況が分かるような仕組みを作り、Tryを取り組む際のフットワークをなるべく軽くする必要がありました。

専用の一覧ページには振り返りで決定されたTryを記載し、それぞれの進捗状況をステータスとして表示させます。 そのステータスは毎スプリントごとに再評価を行い、最終的にはチーム全体の行動を変化させるためにWAやチームのCultureとして還元することを目的にします。

In progress
: 最初にtryが決定されている時の状態
Keep
: Tryを継続し、今後も効果を図りつつ継続したい
Done
: 実施済み、または意識しなくても既にに達成されている
Close
: 実施できない、または実施する必要がなくなっている
WA
: Tryの結果、チームとして守るべき行動規約として決定されたもの
Culture
: Tryの結果、特に意識しなくてもチームに浸透している状態

Try一覧を作成してステータスを管理することは、常に最新状態であり、信頼できる情報元を1画面で提供することに意味があります。例えばメトリックス監視など、情報の可視化のためにダッシュボードにリソースの情報を集約させることを考えてみましょう。情報を集約し、現在のステータスを可視化することは継続的な管理手法の第一歩と言っても良いでしょう。

Tryのライフサイクル

先ほどご説明しましたが、Tryを評価することはTryを決定することと同じくらい重要です。リスト化されたTry一覧を管理することができれば、次は定期的な評価を行う必要があります。現在のチームでは2週間を1スプリントとして進めているので、スプリントの振り返りを行う際にTryを再評価を実施しております。

振り返りの実施結果としてTryが作られたら`In progress`として設定させ、1スプリントの実施時間を経て評価を行います。実行すること自体が目的であるタスクレベルのTryはこの時点でDoneに移行するケースが多いが、その他の場合はチームでそのTryを継続して取り組むべきかを検討する必要があります。

  • スプリントの中で、メンバーはそのTryを遵守して行動していたか。
  • 実施してみて、本来想定していた効果は得られたのか。
  • Tryの効果よりも、継続するためのコストが高くないか。

この中でTryをチームが継続して取り込む価値がないと判断されたらステータス`Close`に設定し、継続を中止します。また、1スプリントで評価できなかったTryに関しては次のスプントまで効果検証を継続します。数は多くないかもしれませんが、1スプリントで充分に効果検証を完了しており、チーム全体で今後も取り組みたいと判断する場合は`WA`や`Culture`に反映することもよいでしょう。

次のスプリントではこの`Keep`ステータスのTryを同じ方式で評価して行いますが、`Keep`状態として残り続けることは警戒する必要があります。評価のタイミングを先送りにし実施されないTryが残り続けることは、効果の判断ができないTryをチームとして意識し続けなければならいことを意味します。

私が働いているチーム場合、`Keep`ステータスから`Keep`ステータスに変化することは、最初Tryが決定から2スプリント(4週間)が経過していることを意味します。2スプリントが経過したにもかかわらずTryが残り続ける状況の場合、評価を阻害する要因が存在しているか確認する必要があります。その場合、阻害要因を無くすためにチームとして取り組むべきことを先に実施した方が良いでしょう。

最後にTryの結果をWAやCultureに反映することに決まった場合は、それぞれを専用のドキュメントとしてまとめ、常に最新の状態になるように管理しなければなりません。これはTry一覧を作成する際と同じく、継続的な管理を行うためです。チームが取り組んでいることを言語化することによって、メンバーの共通認識を促すことと同時に、新しいメンバーが参加する場合にもチームの働き方をスムーズに吸収することができます。

チームの今

全てのTryは一覧で管理されており、スプリントごとにその効果を検証しているので、どんなTryでもしっかり評価されるようになりました。また、Try一覧を作成してから3ヶ月間、22件のTryが作られましたが、`Keep`ステータスのTryは2件のみでその他は何からの形でチームに還元されています。

特にTryの結果、WAとCultureに4件の行動規約が追加されており、Tryのステータスが変更されたタイミングでWAとCultureを更新するので、常に最新の情報が反映されています。WAにはチームとして遵守すべき内容のみ記載することになってので、Tryの管理仕組みを取り入れる前と比べれば非常にコンパクトになっています。WAに収まらない項目はCultureに記載することによって、遵守すべきものとチームの文化を区別することができました。

WAの例 :
エラー対応を完了する際には、その根拠をコメントに記載する
Cultureの例 :
githubは1function - 1commitを原則とし、日本語でコミット内容の説明文を記載する

現在はTry一覧を朝会などでチームと確認する時間を作って、スクラムの一部として取り扱っています。今後チーム内で確認する時間を作らなくても、メンバーがTryを意識して働くような文化が染み付くようになったら、別途時間を作る事なくTryを継続していくことができるでしょう。