REDMINE JAPAN 2020 https://redmine-japan.org/
「チケット駆動開発がまわりはじめるまでの取り組み」発表スライド
スライドの詳細をテキストに起こした内容は下記を参照 http://d.zinrai.info/public/posts/okr-tidd-case/
チケット駆動開発がまわりはじめるまでの取り組み
View Slide
自己紹介
梅原 潤肩書はなく平社員です。「さくらの専用サーバ」にて Nomad + Consul によるアプリケーション実行基盤やPrometheus を中心としたメトリクス監視基盤などサービスを支える基盤を作ってます。
内容
前半「チケット駆動開発」導入の話マインドセットモチベーションチームの課題感チケット駆動開発の導入導入しての成果導入しての課題
後半チケット駆動開発だけでは足りない部分を別の仕組みで補った話課題解決のために欲しい仕組みOKR を使ったゴール設定チケット駆動開発との組み合わせゴールを目指すためのプロセスやってみてどうだったかまとめ
前半
マインドセット
チームでの目的とゴールの認識を合わせ明文化する「誰が」「何を」「いつまでに」「どこまで出来ているのか」がオープンになっている
何故そう考えるチームで同じゴールを目指して進むことができないどこまで何をするのかわからず混乱する成果物のイメージがメンバーごとにバラつく作業の全体が見通せず認識を合わせられない
モチベーション
2019年3月半ばに入社し、配属となったチームでの違和感が、チケット駆動開発を推進する原動力になっている。
「誰が、いつまでに、何をして、どこまで出来ているのか見える仕組みはなさそう」日次のミーティングは、その日何をしたかは聞き取れるが、それはゴールまでのどの地点なのかはよくわからない見えないので、状況を都度確認する必要があり、チームメンバーをとりまとめる人の負荷が高そう
「人事評価のシステムで、メンバーごとの期待されている役割は明文化されているが、チームで目指すゴールの認識合わせと明文化はされてなさそう」皆で目的を共有し、それに向かって進んでいくという部分がチームとして弱そう「自分達の取り組んでることって、いつまでにどういう状態を目指しているんだっけ?」という声をチームメンバーからよく耳にした
「ある仕事が個人に割り当てられ、その仕事を一人で行うという状況で、誰かの頭の中で情報が完結している」「この人と一緒にやっていってもらいたい」と言われても、「やっていくこととして具体的に何があるのだろう」となってしまった情報を持っている側にアウトプットしてもらうにしても、記憶を整理しながらの説明は負荷が高そう
「チームに馴染めるかは、配属された人のハングリー精神に強く依存してそう」何かを貪欲に吸収していこうとする精神は必要だと思うが、なにもかもそれに頼るのは違うのではないかと思う1から10まで丁寧に教えて欲しいとは思わないが、何もないのは辛いチームに人を受け入れるための準備はしておく必要がある
「これらの違和感からくる自分の中でのしんどさをなんとかしたい」たまに見掛ける「前職はこうで、本来はこうあるべきだ」と言うだけの転職組...みたいな構図は非常にダサいし、そうはなりたくないと心に固く誓っている転職先は前職ではないので、自分が本当に良いと信じたやり方があるならば、それを根付かせる取り組みを試行しなければ変化は無い
チームでの課題感
誰が、何を、どこまでやっているのかわからない皆の動きが見えるような仕組みはあったほうがよいとは思っている今まで何度もタスクを管理しようという試みはあったが、手段が先行してしまい目的を見失ったり、運用ルールがなく主導していく立場の人もいないためそのまま誰もやらなくなるを繰り返している
自分が良いと信じている前職でやっていた「チケット駆動開発」を導入し、違和感をなんとかしていく。
チケット駆動開発の導入
チケット駆動開発BTS のチケットを中心にプロジェクトを運営することです。Redmineによるタスクマネジメント実践技法https://www.shoeisha.co.jp/book/detail/9784798121628
チケット駆動開発の基本ルールNo ticket, no commit作業をチケットで管理する
導入のための戦略いきなり全員を巻き込まず、チームメンバーの半分くらいを上限に、小さくはじめ、様子をみながら、徐々にメンバーを増やしていくメンバーの行動を観察し「チケット駆動開発」と相性が良さそう、前向きそうな人を巻き込む3ヶ月を区切りに次のステップをどうするか決める
時系列2019年3月〜6月一人チケット駆動開発2019年7月〜9月チケット管理することに前向きな方がいるかの確認2019年10月〜12月自身の作業をチケット化することに慣れる2020年1月〜3月チケットをベースにチームメンバーと協力しながら作業を進める
一人チケット駆動開発チケット駆動開発がどのようなものであるかを見せられる具体的なものは無かった。まずは Redmine を準備し、見せられる具体的なものを自分一人でチケット駆動開発することで、作っていくことにした。
チケット管理することに前向きな方がいるかの確認監視基盤の整備を進めるにあたり、メンバーの協力が必要なタイミングがきた。関係者をチケットの担当者に設定し、どのくらい興味を示してもらえるか確認した。
前向きそうな人2名チケットの構造やタスク分解の考え方について質問してきてくれる方がおり、チケット駆動への前向きさを感じた。
相性が良さそうな人1名今日、何に取り組みどこまで出来て、明日はここに取り組む予定で、来週にはこのような状態になっているという報告を理路整然と日次のミーティングで話す方が一人おり、チケット駆動開発がハマるのではないかと思った。
「チケット駆動開発」を小さくはじめていくことが出来そうだなと思った。
自身の作業をチケット化することに慣れる上長に相談チームに対してのプレゼンテーション参加メンバーの決定チケット化する「タスク」というものを理解してもらうためのハンズオンRedmine でチケット駆動開発するためのルールを明文化Redmine の使い方をレクチャー週次でのチケット棚卸しを実施前の週なにをやって、今週なにをやるのかをチケットをベースに共有するチケット作成の困りごとを共有する
チケットをベースにチームメンバーと協力しながら作業を進める仕事が自分一人で完結することは少ない。自分の作業をチケット化するに加えて、チームメンバーにチケットで作業を依頼できるようになる。週次でのチケット棚卸しを実施チームメンバーの協力が必要になる作業を共有する前の週なにをやって、今週なにをやるのかをチケットをベースに共有するチケット作成の困りごとを共有する
導入しての成果1「誰が」「何をするか」「何をしているか」「どこまで出来ているか」がチケットとして少しずつ見えるようになってきた。日々の開発チームにくるエスカレーションベンダーへの問い合せ
導入しての成果2手を付けられていないこともチケット化され見えるようになったことで、新たなメンバーを受け入れるときにやっていきたいことを伝える材料として利用することができ、実際に他チームのメンバーを専用サーバチームに迎え入れることができた。
導入しての課題チームとして同じ方向に進むための仕組みはまだ無く、各々が自身の取り組みをチケット化しているという状態で、チームとしての一体感はまだ無い週次でのチケット棚卸しでは、前の週と今週の範囲でしか動きをとらえることができず、数ヶ月先のゴールを見据えた動きはできない
「チケット駆動開発に加えて、チームとして数ヶ月先のゴールを見据えて進んでいける仕組みを整備する」
後半
課題解決のために欲しい仕組み
チームで目指す方向を示すとができ、具体的な行動をチケットに落とし込めるようにしたい。チームで目指すゴールを設定できるチケット駆動開発と連携が可能方法論を覚えるだけでおなかいっぱいにならない
OKR というフレームワークが目に留まった。
OKR を使ったゴール設定
OKR とは「Objective(目的)」と「Key Result(主要成果)」という2つの言葉の頭文字を並べた言葉で、組織やチーム、個人のありたい姿を達成するためのツールです。最短最速で目標を達成するOKRマネジメント入門https://kanki-pub.co.jp/pub/book/details/9784761273996
OKR をチームに適用した場合Objectiveチームとしてのあるべき姿を明文化するKey Resultあるべき姿にどのように近づいているかという達成状況を測定するための主要成果を3〜5つ程度決める
チームで目指すゴールを Objective として設定し、 Key Result から具体的な行動をチケット駆動開発に落とし込めそうな気がした。
OKR の書籍をいくつか参照し、 OKR で課題に対する仕組みを整備していく旨を上長に伝え進めていくことになった。
参照した書籍最短最速で目標を達成するOKRマネジメント入門https://kanki-pub.co.jp/pub/book/details/9784761273996OKR(オーケーアール)https://www.nikkeibp.co.jp/atclpubmkt/book/18/P55640/本気でゴールを達成したい人とチームのためのOKRhttps://d21.co.jp/book/detail/978-4-7993-2461-5
四半期を OKR のサイクルとして進めていくことに決めた。
OKR 設定チームをまとめる役割、役職の方を混じえて叩き台を作成する叩き台に書かれている内容に誘導したいわけではないOKR をチームで決めていくための議論のとっかかりとして利用する叩き台をもってチームメンバーと OKR を決める叩き台の内容が一切採用されなかったとしても問題ないチームで納得した OKR が設定されることが大事
チケット駆動開発との組み合わせ
Key Result から具体的な行動をチケット駆動開発に落とし込む。
日々の開発は、親子チケットの構成で管理している。ストーリータスクの親チケットゴールを管理するトラッカータスクストーリーの子チケット具体的な作業を管理するトラッカー
チケットへの落とし込みOKR 用の対象バージョンを Redmine に設定するKey Result をもとにチームメンバーはストーリーチケットを作成し、対象バージョンを設定するチームで集まり、対象バージョンで集計し一覧されたストーリーチケットをベースに取り組むことを各々が宣言するマネージャーはチケットで宣言された取り組むことが、四半期の OKR に合致したものであるか確認する
ゴールを目指すためのプロセス
OKR を設定し、具体的な行動がチケット化されれば、四半期の終わりには OKR を達成できているという話にはならない。
OKR 達成のためのプロセスを日次、週次でまわし、ゴールに近づいていることを確認していく必要がある。
デイリーチェックインチームで毎日集まり、個人でそれまでの1日を振り返り、どのような行動をしたかを確認し、次の1日をどのように過ごすか共有する。チームメンバーが進めたチケットを Redmine のカスタムクエリで一覧する何に取り組み、取り組んだことについての「終わっている」「終わっていない」を共有するどうタスクにすればよいかわからなかったなどがあれば共有するタスクを進めるために障害となっているものがあれば共有する次の日の行動について共有する
ブリーフィングチームで集まり、 Key Result の達成状況をふりかえり、これからの一週間の行動を決める。祝日を避けるため、毎週火曜日に1時間半一週間の行動を各々でふりかえりチームメンバーに対して共有する次の一週間の行動を決める
ブリーフィング 事前準備ブリーフィングの参加者は、事前準備をしておく。ブリーフィングのタイミングにて取り組もうと考えている OKR に直結するタスクをチケット化するチケット化したタスクにブリーフィング日を「開始日」に設定するチケット化したタスクに「カテゴリ」 OKR を設定する自身の一週間の行動を KPT でふりかえりテキスト化する
ブリーフィング 当日「ふりかえり」からのアクションを決めるメンバー自身がふりかえった Try が妥当かチームメンバーと話し合うメンバー自身がふりかえった Problem に対して Try をチームメンバーと話し合う次のブリーフィングまでに取り組むことを決めるOKR カテゴリが設定されたタスクを一覧するメンバーに次のブリーフィングまでに取り組むことについて、一覧されたチケットをベースに話してもらうマネージャーは、メンバーの取り組むタスクを調整する
最終的な達成状況の評価
四半期の最終週に1時間半を確保し、OKR の最終的な達成状況の評価と四半期の「ふりかえり」を実施する。( やり方については、まだ手探りな状態 )
定量評価感覚的な議論とならないようになにかしらの事実を数字で共有したい。チームで積んだチケットが四半期でどのくらい進行したか Redmine のロードマップで確認メンバーごとにどのくらいチケットが進行したかチケットを集計し確認
定性評価OKR としてどうであったかメンバーに KPT を使いテキスト化してもらうテキスト化した内容を各自に発表してもらう次の四半期にどう生かしていくかの認識をメンバーと合わせる
やってみてどうだったか
2020年4月〜6月 ( 第1四半期 )手探りの取り組みのため「ゴールを目指すためのプロセス」に到達するまでに時間が掛かった。
OKR 設定、チケットへの落とし込みが完了したのは、5月末叩き台を作る前段の、チームとしてどうありたいかなどを整理し、明文化するところからはじめる必要があり、叩き台の作成に時間が掛かった。チームで OKR を設定することもはじめてのため時間が掛かり、具体的な行動をチケットに落とし込みが完了したのは、5月末で、ブリーフィングは3週間ほどしかまわすことができなかった。
ブリーフィングの設計に苦労した参照した書籍をベースにブリーフィングを設計したが、実際にブリーフィングをやってみると事前に設計した内容では全然チームにフィットしなかった。毎週のブリーフィングの結果をフィードバックしチームに馴染むよう内容を修正していき、四半期の終わりに、ようやくブリーフィングの内容を固めることができた。
Key Result に認識の齟齬が発生した四半期の「ふりかえり」にて、何を意味していて、具体的な行動として何をしていくのかが曖昧なまま進めてしまった Key Result があることに気が付いた。次の四半期では、 Key Result が何を意味しているのか、具体的な行動はどうしていくのかの認識をチームであわせるようにした。
2020年7月〜9月 ( 第2四半期 )第1四半期の実績があり、0からのスタートではなかった。
ブリーフィングは、7月中旬からはじめることができた第1四半期の知見のおかげで、OKR の叩き台作成、チームでの OKR 設定を第1四半期よりスムーズに進めることができた。
具体的な行動のチケット化が8月中旬まで掛かった7月中旬から開始したブリーフィングは一部のメンバーとで、メンバー全員ではない。他部署との調整が必要な開発は、具体的な行動が確定するのに時間を要し、チームメンバー全員でのブリーフィング開始は、8月中旬からとなった。
OKR を導入してみての成果何処を目指しているのかチームで認識を合わせられるようになった「これって何のためだっけ?」となったとき、明文化している OKR を参照することで目指すゴールを再認識できているOKR とチケット駆動開発の組み合わせにより、四半期に注力するタスクが見えるようになった
OKR を導入してみての課題「ゴールを目指すためのプロセス」がまわりはじめるまでに一ヶ月半くらい掛かっている「最終的な達成状況の評価」は四半期に一度なので、フィードバックサイクルが長く、会議体の設計が固まっていない「最終的な達成状況の評価」の「ふりかえり」を次の四半期に生かしきれていない
今回の取り組み
チケット駆動開発のための取り組みもチケット駆動開発で進めている。
梅原は、全てのチケットに時間を付けている。
いまのところ梅原だけでいうと稼動が 400 時間くらいと、根付かせるぞエネルギーが投入されている。
計算すると2019年3月〜2020年9月までの仕事時間のうち 18 % くらいは、チケット駆動開発のための取り組みに割いている結果となっている。
やってきた取り組みを忘れないようドキュメント化している。
まとめ
チームへの違和感とチームでの課題感がうまくマッチし、いまのところ、 OKR にてチームのゴールを管理し、具体的な動きをチケット駆動開発していくというところに落ち着いている。
引き続き、やってみた結果をもとに軌道修正しながら少しずつ形にしていきたいと思い行動してる。
おわり