海と山が好き

海と山が好きだけど埼玉に住むおっさんが遭遇したアジャイルとかのはなし

計画ってなんだろう

計画ってなんだ?

仕事だけでなくスポーツでも教育でも必ず耳にする 「計画」 という言葉

アジャイルと計画って言葉は密接に関係していると思う。

密接ではあるが表裏では無いのがミソ。

とりあえずググると、、

計画(けいかく、英語: plan)とは、何らかのものごとを行うために、方法や手順を考え、企てること。また、そうして考え企てた内容のこと。

計画とは、何かのものごとを行うために、あらかじめ、その方法、手順などを考えること(この場合「計画する」などと述語、動詞的に用いる)、およびそうして考えた方法や手順のことである。

ブリタニカ国際百科事典によると、計画とは、将来 実現しようとする目標(目的)と、この目標(目的)に到達するための主要な手段や段階とを組み合わせたもの、とのことである。

だそうだ。

要は 「目標」 と 「実現方法」で構成されている。

大抵の場合、実現方法(実行計画)を無視して突撃すると上手くいかないか、多大なコストを支払う羽目になる。

ちょっとずつやってるから大丈夫!と思っても夏休みの宿題が終わるかは分からないからだ。


だからママは聞く。 「夏休みの宿題終わるの?」と。

「算数の15ページ目だよ!」と言われるとツライ。

ママにとって気になるのは終わるかどうかであって何をやってるかどうかでは無いのだ。

って話は進捗管理の話なので今回は置いといて…


「計画」 が立てにくい状況にはアジャイルが効くと言われている。

1つは、「目標」が不確実・不安定な場合があるから。

  • 後になったらもう要らない、というもの

  • とりあえず言ってみたけどそんなに重要じゃないこと

  • その時は必要だと思っていなかったけど、後になって必要になったもの

とか。

そういう状況では「目標」に向けて計画を立てたとしても、目標そのものが目指すべきものでないので、悲惨な結果になる。

だから、間違いなく必要、というところは達成したいので、精緻に計画を立てる。

逆に、多分必要かも〜レベルの内容であれば、そのうち目標として明確になったらやる、と言った程度で、粗く見積もる程度にしておく。有名なのがストーリーポイントとか、T シャツのサイズとか。

やるかどうかもわからんものに計画を立てるのはただの無駄だ。

どうせ作っている間に陳腐化したり、新しいものが必要だと気づくので、先の詳細は先に考えるのが良い。You ain't gonna need it だ。

逆に、ウォーターフォールなんかで要求定義をするということは、

「これを作ります」という宣言の裏で、
「これ以外は作りません」という宣言をしているのと同じなのだ。

IT のプロセスの問題の不都合をビジネス側に押し付けるのは、流石に傲慢では?という感がある。


もう一つ、「実現方法」が不確実・不安定な場合がある

わかりきった、枯れきった技術でやるのと、新技術や出たばかりの OSS なんかでやるのとでは、同じことをやるのにもリスクが全然違ってくる。

ある程度試行錯誤して泥沼にハマって進まないといけない。

こんな場面で実現可能な「実現方法」を計画として建てろと言われてもアホなだけだ。

全く未知の場合は、ある程度ジャブを打って Shure な状態にしてから着手したりする。

スクラムで言えば「技術的スパイク」とかいうやつがそれに当たるか。

(以下、例えがすごく怒られるやつ)

要は、幼馴染とご飯に行くのと、街中で出会った女の子とご飯に行くのでは途中のプロセスは全然事前に読めないし、ある程度試行錯誤が必要なのと同じだ。

前者であれば、いつ何食べに行こうぜ、って誘えば来るな、って計画が立つけど、

後者であれば、何が好きか?何が嫌いか?そもそも初めまして、、、とか色々やらないといけないし、具体邸に何をやるかは計画できない。

ある程度の「構え」的なものを持っておいて、柔軟に対応するしかない。

そして当たるものを試行錯誤するために、頻繁に手を替え品を替えてご飯に誘うしかない。

そう、ナンパとはアジャイルなのだ

(以上、すごく怒られるやつ)


というわけで、不確実な目標や手段を必要とする場合には、試行錯誤のサイクルが勝負につながるので、アジャイルなやり方が性に合っている、ということになる。

(というか、計画駆動を選んだ時点でほぼ ”負け” になる。)

そのやり方で、本当に意味のあるものを作れますかね?勝てますかね?っていうは、開発手法を考える上で、必ず考えておきたい。