generated at
Management 3.0 - Improve everything

まとめ
環境はシステムの影響を受ける (新しいものを導入すると環境が変化しうる)
人は変化に対して抵抗しやすい
継続的改善へのアプローチは、適応、探索、予測の 3 つ
変更が難しいのは、アトラクタに捕らわれているからかもしれない
環境を変えることで、アトラクタを変えることもできる
適応度地形適応歩行しやすくするため、プロジェクト内の要素の相互作用は小さくしておくとよい
非線形システムを改善していく際、場合によっては一時的に悪くなることもある
段階的な変更で少しずつ登るのと、根本的な変更でジャンプするのを組み合わせていく
変化を推進するためにマネジャーができること
適応度地形で適応していくために、環境を変える (そして適応度地形を変える)
メンバーが変化を望ましいものとみなすようにする (停滞を苦痛にする)
パフォーマンス向上の戦略
自分たちの何かを変えて探索してみる
以前のトップパフォーマーたちのベストプラクティスを混合してシステムを作る
他のシステムからベストプラクティスを学ぶ
いずれにせよ、継続的に変化していく必要がある

Chapter 14 : The Landscape of Change
システムを環境に導入すると、環境は変化する
nobuoka 観察者効果と似たような話だ
なので、現在の環境を基に新しいものの導入を計画するのは困難 (導入したら環境が変わるので)
複雑系における不確実性に寄与する 2 つの要因
確実性を達成しようとすると、意思決定できなくなりうる
人は、意思決定の際に、機会を求めるよりリスク回避したがる
nobuoka 正の結果より負の結果の方を過大に評価する、みたいなやつだ
成功したソフトウェアは、多くのメンテナンスが必要
2 つの理由
人々は予期せぬ使い方をしたりする
成功したら長く使われるので、ハードウェアやソフトウェアの要件が当初より変わってくる
ソフトウェア進化の 8 つの法則 (Meir M. Lehman)
要は、変更しなければ徐々にユーザーを満足させる能力が低下する (そして複雑さは (明示的に減らさないと) 増えていく) ということ
適応させるために変更する労力は、ソフトウェアの生涯を通して一定
成功とは、失敗するまでのこと
種について考えるとき、生物学者は適応度 (fitness) を考慮する
適応度は、その種自体の特性ではなく、環境にいかに適合するかで決まる
製品の適応度も同様に、その製品が意図したとおりに動く能力で決まるのではなく、特定のコンテキストで利害関係者にもたらす価値によって決まる
変化を受け入れるには?
継続的プロセス改善 (continuous process improvement) の概念が広く使われている
プロセスに焦点を当てるのは、変化に対応するにあたって狭すぎる
プロセスだけでなく、システム全体の考慮が必要
11 章で説明したソフトウェアプロジェクトの 7 つの側面 (機能、品質、ツール、人、スケジュール、プロセス、およびビジネス価値) が改善の候補になるはず
アジャイル手法における学習
アジャイルの重要な要素として適応 (adaptation) に言及されることが多いが、探索 (exploration) と予測 (anticipation) も忘れないように
ソフトウェアでも、ユーザー満足度を維持するためには改善し続けなければいけない
狩野モデルにも反映されており、魅力的な機能もやがては標準的な機能とみなされるようになる
複雑さ (complexity) の計測は可能か?
いろいろな尺度が提案されているが、標準的なものはない
定義できなくても見ればわかる
nobuoka WTFs/m もこれに近い考えっぽい
n 個の変数を持つシステムを n 次元の位相空間 (phase space) 上で表現
安定した状態を、それに引き込まれる周りの状態にとってアトラクタ (attractor) という
アトラクタに繋がる軌道の集合をアトラクタの引力圏 (basin of attraction) という
取りえる状態は大量であっても、安定した状態は少ない
ソフトウェアプロジェクトについても、その環境でうまく機能するものが安定していることを確認する必要
安定しているからといってうまく機能するとは限らない
安定している状態から別の状態に移そうとしても、なかなか難しい
安定性 (stability) あるいは恒常性 (homeostasis) は複雑系の重要な特性
少し変数を変えたぐらいでは、同じアトラクタに収まってしまう
良い状態で安定しているなら良いが、悪い状態から抜けられないということも多い
アトラクタは環境によって変わるので、環境を変えるという発想が必要
例 : TDD を導入しようとしても、チーム内の努力では無理だった → 別の環境では簡単にできた
ソフトウェアプロジェクトでは、機能、品質、人、ツール、スケジュール、プロセスを繰り返し変更することで、適応歩行を実行
適応度地形はシステムと環境によって異なるので、あるシステムでうまくいった変更が他のシステムでうまくいくとは限らない
システムは、環境やシステム同士で適応する
2 つ以上のシステムが、適応度地形全体で互いの動きに適応し続ける場合 → 共進化 (coevolving)
環境の変化とシステムの共進化により、適応度地形は変化していく → 戦略を何度も評価しなおす必要がある
複雑系では、システム内部の要素同士の相互作用があるため、適応度地形は小さなピークが多数ある形
complexity catastrophe (複雑性地殻変動……みたいな感じか?) と呼ぶ
システムが最適な適応度 (fitness) に至ることを阻害しうる
要素同士の相互作用の大きさが影響するので、相互作用が小さいほど適応度地形で適応歩行しやすい
ソフトウェアプロジェクトの機能、品質、人、ツール、プロセスの間の相互依存関係を中程度にすること
無向適応は、適応探索
有向適応は、予測
チームは基本的には有向適応を行うが、無意識的な変化 (無向適応) も起こす

Chapter 15 : How to Improve Everything
世の中の改善モデルを統合して、SLIP という改善モデルを著者が開発
多くの改善モデルは、線形の改善を想定している = 局所最適になってしまう問題を避けられない
complexity catastrophe により、複雑系では、改善しようとすると一時的に悪くなることが往々にしてある
段階的な改善ではなく、急激なジャンプを数回行うことが賢明な場合もある
革新的なビジネスには漸進的な革新ではなく根本的な革新も必要 (『イノベーションマネジメント 成功を持続させる組織の構築』)
リーンソフトウェア開発の文献では、カイゼン (段階的改善 (gradual improvement)) を説くものはあっても、カイカク (根本的改善 (radical improvement)) を説くものはごくわずか
改善するにはまず現在地を知ること
マネジャーは、自身の目で問題を確認する必要がある
適応度地形が変化しうる中で、どう改善していくか?
把握しておくべきこと
谷にいるとより良い状態が見えない
山への移動に時間がかかるほど、山が消える可能性がある
最良の山がどこかを直接見ることはできないが、大体どの範囲にあるかは把握すること
どれか一つの山に登って初めて、他の山がより高いかどうかがわかる
具体的には? (ひどい状況にあるという想定で)
まずは小さな改善 (より良い規律やコーディングガイドラインなど) を行っていく
作業方法を、いくつかの段階を経て大きく変える (スクラムや XP、カンバンの導入など)
最初からうまくいくとは限らないが、振り返りなどの段階的改善で徐々に良くなるはず
うまくいったら、そこからさらにジャンプすることも検討
一時的にパフォーマンスが悪化することは、Virginia Satir Change Curve で説明される
適応度地形を変えて、山を近づけることもできる
マネジャーには、チームのパフォーマンスを向上させるために環境を変える力がある
組織構造も環境の重要な側面
変化に対する意欲が最も重要
組織の変化を定常的なものにする (ジョブローテーションとか)
組織の変化に名前を付けたりはしない (そうすると、組織変更が特別なものというメッセージになってしまう)
人々は、変化を望ましいものだと思った時に、変化する
変化を望ましいものに紐づけると良い
組織内の人のネットワークから広げていくという手も
ハブやパルステイカー、コネクタ、セールスマンらと協力するとか
Innovation Adoption Curve を参考に、革新者から広めていくという手もある
価値は主観的なので、変化に対して感じる価値も人によって違う
変革に置く価値は、ビジネス価値とは相関せず、それをしなかった時の痛みの大きさに比例する
痛みを感じた経験があると、痛みを防ぐための変化に大きな価値を感じる
苦痛を与えて変化したいと思わせる作戦
過ちがあっても、そこから学ぶことがある
突然変異 (mutation) は、何が機能し、何が機能しないかを学ぶことを促す
過ちは回避すべきものではなく、学習機構としてみるべき
間違いを犯さないようにしようとするとほとんど学ばない
焼なまし (annealing) と同様のことが複雑系でも起こる
環境によって引き起こされるエラーとノイズが、システムをかき混ぜて、最適ではない状態から抜け出させる
ソフトウェア開発においても、低い完全性と実行時のノイズにより、同様のことを起こせる
2 つのシステムの交叉 (cross-over) により、新しいより良いシステムを生み出せる可能性
実証済みのベストプラクティスを再結合させる自然な方法
突然変異と交叉の他に、遺伝子の水平伝播 (horizontal gene transfer (HGT)) という戦略もある
nobuoka ソフトウェア開発チームにおいては、交叉遺伝子の水平伝播も同じな気がする? (チームは個体ではないので、2 つの間の差異はない気がする)
交叉ががっつり 2 つのシステムを組み合わせるのに対して、遺伝子の水平伝播は一部のみ取り込む、って感じかな
最近の調査では、アイデアのコピーが最も成功している戦略
コピーのために、他の観察 (他からの学習) に多くの時間を費やす必要がある
コピペの改善 (copy-paste improvement) をしないように
他システムからの取り込みをするにあたって、自分たちの状況に適しているかどうか判断する必要がある
実用的なヒント
定期的なレトロスペクティブの実施
組織の様々な階層で実施可能
適応だけでなく、探索予測
書籍 『Agile Retrospectives』 が参考になる
チームや様々な階層で改善バックログ (improvement backlog) を維持し、公開する
明示的な多段階の改善モデルを使用する (SLIP やその他のもの)
改善バックログの項目を、これらのステップを列に持つカンバンで管理すると便利
組織変化の促進とサポートを行うチーム (Enterprise Transition Community (ETC)) を設定する
カンバンについて学ぶ : 継続的改善のための優れたフレームワーク
プロジェクトをまたぐトピックについての独自のコミュニティを作ることを組織メンバーに提案
自己組織化のことを考えると、マネジャー自身が作るのは避けた方がよい
アジャイルであることは、生存についてである
変化する環境や、共進化するシステムの赤の女王のレースにおいて、適応度地形は変わり続ける → システムも変化し続ける必要
安定した環境ではシステムはしばらく安定だが、変化を忘れてしまってはやがて環境変化に追随できなくなる
変化を理解し、変化を受け入れ、変化し続ける必要がある