30歳からのプログラミング

30歳無職から独学でプログラミングを開始した人間の記録。

『ゾンビスクラムサバイバルガイド 健全なスクラムへの道』を読んだ

スクラムのように見えるがスクラムではない、機能していないスクラムを「ゾンビスクラム」と名付け、なぜそれが発生するか、いかにそこから回復すべきかを説いた一冊。
ゾンビスクラムという、上手くいっていない状態を題材にすることで、本来はどうあるべきなのか、どのような状態を目指すべきなのかが、自然と理解できるようになっている。

www.hanmoto.com

スクラムガイドの内容がシンプルすぎることが、スクラムフレームワークの実践の難しさの一つになっていると思っている。
PBI には何を書けばいいのか、リファインメントはどのように行うのか、各種スクラムイベントはどのように進めればいいのか、具体的な方法はほとんど記述されていない。
組織や事業によって状況は異なるのだから、具体的なことが書かれていないのは当然だとは思う。
それに、何か具体的な方法論を書いてしまうと、どれだけそれを「一例である」と断ったところで、それが独り歩きしてしまうのは目に見えている。そしてそれさえやっていればいいと誤解されたり、逆にそれ以外のやり方は許されないと解釈する人たちが現れたりしてしまう。
だから、スクラムガイドがシンプルなものになっていること自体は、妥当なことだとは思う。

しかしシンプルにすると今度は、別の問題を生む。
具体的にどう実践していいのか分からないし、都合の良いように解釈できてしまう。
結果的に、スクラムガイドに書かれている「プロダクトバックログ」や「スクラムイベント」、「スプリント」といったものを形式的に導入しただけで挫折してしまう。あるいは逆に、形式を満たしただけで満足してしまう。
また、スクラムガイドが具体的な指示をしていないことをいいことに「これが俺たちのスクラムだ!」と都合の良い解釈をして、スクラムもアジャイルも関係ない何でもありの状態になってしまうこともある。

ちょっと前にバズっていた以下の記事にもあるように、スクラム風だが中身は全く違う、スクラムっぽいだけの何かになってしまうというのは、本当によくある事象なのだと思う。

zenn.dev

本書ではそのような状態をゾンビスクラムと名付けている。
遠くから見るとスクラムなのだが、近くで見ると全く違う。脳はあまり動いていないし、何より心臓の鼓動がない。

ゾンビスクラムにありがちな症例を紹介していくと同時に、本来はどうあるべきかも語られていくが、これが本書の核だと思っている。
スクラムガイドだけだと理解しづらかったり見失ってしまいがちだったりすることについて、具体例を交えながら分かりやすく説明している。
「○○であるべき」という説明だけでなく、「××になっていてはいけない」「××は危険な徴候」という説明もあることで、より具体的にイメージできるようになっている。

タイトルに「サバイバルガイド」とあるように、ゾンビスクラムから回復するための方策も書かれてはいる。
しかしテクニカルなものはほとんどなく、透明性やより有益な対話を生み出し、チームの学習を促すためのものが大半を占める。
本書にも書かれているが、組織によって状況は異なるのだから、よその組織の事例をただ単にコピーしても上手くいかない。
そのため、出来合いの方法論を引っ張ってくるのではなく、学習できる組織になることが大切である。

本書が主張していることはシンプルで、ステークホルダーにとって価値のあるものを速く届けよう、ということに尽きる。
いくらたくさんのアウトプットを生み出しても、それらが価値を生み出していなければ意味がない。
しかしプロダクト開発は複雑な仕事であるため、何に価値があるのか事前に知ることは不可能。しかも、ニーズや市場環境は常に変化していくため、「何に価値があるのか」は常に変化していく。だからこそ、実際に動くプロダクト、スクラムの言葉でいえばインクリメントを、短いサイクルで提供しステークホルダーからフィードバックを受けることが大切になる。プロダクト開発という複雑な仕事においては、事前の予測は不可能であり、失敗は避けることはできない。そのため、とにかく速く小さく失敗し、そこから学習していくことが求められる。速く届けることはビジネス上のアドバンテージにもなる。
そしてそれは簡単にできることではない。チーム内外に様々な阻害要因がある。そのためチームは、仕事のやり方や環境を継続的に改善していく必要があるし、そのためにはチームは自分たちのことを自分たちで決められる状態になっていなければならない。

本書では上記の内容を「ステークホルダーが求めるものを作る」「速く出荷する」「継続的に改善する」「自己組織化する」の 4 つに分類し、それぞれの分野でゾンビスクラムではどのような症状が出るのか、そしてなぜそうなってしまうのか、説明していく。
そのどれもが、ありがちというか、耳が痛いものばかりだった。読んでいて何度も、「やめろ、もうやめてくれ」という気持ちになった。
最後に、耳が痛かった本書の指摘をいくつか載せておく。

  • ゾンビスクラムに苦しむチームは、スプリントの最後に価値のあるものを届けるのに苦労している。多くの場合、動くインクリメントすらない。(中略)この症状はスプリントレビューで明らかになる。ステークホルダーは作成されたプロダクトを自分で直接さわり、検証する機会がない。チームはプロジェクターの電源を入れて派手なプレゼンテーションをしたり、スクリーンショットを見せたり、スプリントバックログにあった内容をただ話すのみである。プロダクトが検査されたとしても、「次のスプリントで終わらせます」とか「おっと、まだ動かない」などのコメントが付けられるか、非常に技術的な話かのどちらかだ。 p20-p21

  • 腕がもげても文句を言わないゾンビのように、ゾンビスクラムチームは、スプリントが成功しようが失敗しようが何の反応も示さない。他のチームが毒を吐いたり喜んだりしていても、彼らは感情もなく諦めたように虚ろな目でじっと眺めているだけだ。チームの士気は低い。スプリントバックログアイテムは、何の疑問もなく次のスプリントに持ち越される。 p22

  • 目的や戦略がなければ、スクラムチームは何でもありのイケイケ開発に行き着いてしまう。そこでは、すべての作業が優先度「高(または低)」になる。その結果、肥大し続ける巨大なプロダクトバックログを抱えてしまうことになる。 p54

  • スプリントからスプリントへとアイテムを持ち越し続けていくと、問題はさらに大きくなり、スプリントは出荷はおろか、実際には何も完成できない意味のないタイムボックスであると感じるようになってしまう。 p117

  • 開発チームが獲得すべき重要なスキルの 1 つが、大きなアイテムを小さなアイテムに分割するスキルと創造性だ。開発チームは、コードを書くことから作業を始めるのではなく「多くのことを学び、届けるものの価値を高めるために、構築してデプロイできる最小のものは何か」と問い、挑戦し続けることを学ぶべきである。 p118

  • スクラムチームが学ぶべき重要なスキルに、何を改善すべきかを具体的にする方法、改善を小さく分割する方法がある。大きなプロダクトバックログアイテムを小さなアイテムに分割して完成しやすくするように、大きな改善を小さく分割すると改善が成功しやすくなる。ゾンビスクラムに苦しむチームは、「プロダクトオーナーはもっと大きな権限を持つべきだ」というような、やる気をなくすような大がかりな改善で身動きが取れなくなったり、どこから始めればよいのかわからない漠然とした改善に途方に暮れる傾向がある。 p170

  • 従来の管理では、チームや部署、従業員の仕事が、組織で定められた計画や目的、戦略に沿っていることを確実にすることが、管理職の主な仕事とされてきた。(中略)自己管理チームは、作業を調整し、チーム内およびチーム間の自己組織化を促進するために、これとは異なる仕組みを使う。専任の役割(管理職)や標準化された構造(階層や方針)の代わりに、人を奮い立たせるゴールと惹きつける目的によって自己調整を行う。p229-p230

  • 成功するために他の人に求めることをはっきりと言葉にするのは簡単ではない。また、そのような要求を受けたときに明確な対応をするのも簡単ではない。曖昧なコミュニケーションは不満や非難に繋がりやすい。それでは上手くいかない。自己管理するチームが成功するためには他の人からの協力が多く必要だからだ。 p251

『熊とワルツを - リスクを愉しむプロジェクト管理』を読んだ

「リスク」をどのように捉え、どのように向き合っていくべきなのか説いた一冊。
用語や概念の整理をしつつ、具体的にどのように取り組むべきかを論じていく。
2003 年頃に出版されたということもあってか、ソフトウェアの受託開発を念頭に置いた説明が多いが、基本的な考え方はそれ以外のプロジェクトにも適用できるはず。

bookplus.nikkei.com

リスクを取らずに済むのであれば、そうすればよい。わざわざ危ない橋を渡る必要はない。
だがリスクと利益は切っても切れない関係にあり、成功を掴むためにはリスクを避けて通ることはできない。
著者らは、「リスクのないプロジェクトに手を出してはいけない」とまで言う。
しかし同時に、リスクを無視するのも愚かな行為であると主張する。

不確定性を数量化し可視化すること、過去のデータを活用すること、あたりがリスク管理の中心的な考え方なのかなと読んでいて思った。

未来は不確実であり、誰にも分かりはしない。「このシステムはいつになったら完成するんだ、正確な納品日を教えろ」なんて聞かれても、分かるわけない。
だが、分からないなりに分かることだってある。「どんなに早くても来年の 3 月までに完成する可能性はゼロだろう。だがさすがに 12 月には完成しているはず」。
こうすると、依然として未来は不確実ではあるが、不確定性の範囲を示すことができる。

また、未来は分からないが過去に何が起こったのかは分かる。そして過去の実績は未来を予測するための貴重なデータになる。これまでのプロジェクトはどのようなリスクを抱えていて、それはどの程度実現し、プロジェクトの結果はどうだったのか。
それを記録しておくことで、より詳細に不確定性を数量化できる。

そして不確定性を可視化することで、どの程度の不確定性があるのかを正確に表現し伝えることができる。
本書自身がそれを実践・証明しており、図を使って説明してくれることで内容がすんなり入ってくるし、齟齬も生まれない。
視覚的に表現することで分かりやすくなるんだということを実感すると同時に、同じデータであってもそれをどう表現するかで得られる示唆は変わるんだなということも感じた。
本書では不確定性を漸増図と累積図で表現している。どちらも同じデータを違う形で表現しているだけだが、どちらを使うかで得られる示唆が変わってくる。知りたい内容に応じて適切な可視化方法を選ぶ必要がある。

可視化した不確定性のなかから特定の日付を選んでコミットメントするのは望ましくなく、可視化された不確定性そのものをスケジュールの約束にすべき、というのも尤もだなと思った。
確かにそれが望ましいとは思う。

とはいえ、そう簡単にはいかない。
本書を読んで一番強く感じたのが、リスク管理を行うためにはそのための土壌が必要だということ。著者らによれば「リスク管理は大人のプロジェクト管理であり成熟の証」とのことだが、まさに成熟した組織でないと不可能な取り組みだと思う。
本書でも何度も言及されているが、リスクを直視できない組織は多い。

リスク管理を行うためにはまず、不確定性やリスクの存在を認めることが重要なのだが、それがそもそも難しい。
不確定性やリスクの存在は「怠け」や「弱気」の印である、と見做す価値観や文化は確かに存在する。魅力のない結果ではなく魅力のない予測を罰する文化、失敗することは許されるが「失敗するかも」と口に出すことは許されない文化。
そういう文化においては、致命的なリスクからは目を背けるようになる。そのようなことについて考えるのが恐ろしいので、存在しないものとして扱ってしまう。そして、約束を守ることより、とにかく大きな約束をすることが大切になってしまう。
そのような環境では、リスク管理を実践するのは不可能だろう。

結局は文化や組織風土の話であり、「リスク管理」に限らず何事もそうだと思う。文化は組織の土台であり、それが腐っていては、その上にどんな立派な制度や仕組みを載せたところで上手くいかない。