なぜ計画通りに開発できないのか
先日、こんなブログを読んだ。
なぜ開発で見積り失敗して忙しくなりがちなのか(アジャイルな見積りと計画づくり読んだ) - $shibayu36->blog;
で、以前から思うところがあったので、ブログに書いてみる。
というのは、この手の話がされる時「どうやって精度の高い見積り・計画を立てるか」という点ばかりで、「どうやって計画通りに開発を進めていくか」という話が殆ど無い。そこにずっと違和感を覚える。(冒頭のブログ、書籍はタイトル通り見積り・計画について書かれているので当然といえば当然だけど・・・)
「そんなの(計画通りな開発の進め方)なんて基本だし、わざわざ話すことでもない」という暗黙のコンテキストなのかもしれないけど、自分が見聞きする限りでは、あまり分かっていない人が多そうなので上から目線で書かせてもらう。
いつも、「計画通りにいかないな、どうやったら精度の高い見積りができるんだろう」なんて言ってる人に読んで欲しい。
ちなみに、ここで書くセルフとは自分自身のことだったり自チーム・自プロジェクトだったりする。自分が制御・影響可能なもののこと。
また、自身に責任のない外的要因による計画遅れは対象にしていない。そういう場合は、まずその外的要因の発生源に負担してもらうのが基本であるから。例えば、顧客都合による仕様変更であればリスケするなど。
見積りと計画はそんなに悪くない
新人でもない限り、大体の人は概ね妥当な見積りと計画ができているように思う。
ではなぜ計画通りにいかないのか。
まず第一に、本人に計画通りやろうという気がないように思える。
これは、最初に見積りに基づき計画を立てて、それだけで終わってるパターン。
不可抗力な外的要因等で想定外のタスクが発生することがある以上、100%正確な計画なんて無理。だからその分のバッファを計画に組み込む。
しかし、なぜかそこで終わって、日々変わる状況を把握していない、ないしは楽観視している。
麻雀で例えると、半荘開始時に「2万点分和了ってトップとろう」と考えて、以降は点棒状況を把握していないようなもの。自分の点棒が減ればその分余計に和了らないといけないし、他家が2万点分あがるのもまた然り。
あと、元々の計画値とバッファを混ぜるのもあまり良くないと思っている。理由は
- 今バッファがどれだけあるのか、が分かりにくくなる。
- 次に見積りを立てる際に、実際の計画値とどのくらい乖離していたのかが把握しにくいので、見積り精度があまり向上しない。
状況を早く察知する
新人の頃に誰でも一度はリーダ等の管理的立場の人から「進捗遅れなどは早めにアラームあげてほしい」というようなことを言われたことがあると思う。
その一番の理由は、早期に把握出来ればセルフリカバリしやすいからだと思う。
麻雀で例えると、点棒が平たい状況で他家(子)に倍満を直撃された場合(点差が32,000点)、それがラス前だと絶望的だが、開局早々ならまだ希望が持てる。
一発逆転なんて期待しない
うすうす「予定より遅れている」と感じていても、「まだ何とかなる。」と楽観視するケースも多い。根拠があるならいいけど、大抵はそうではない。
早めに対応することが肝要。その場合も一発逆転を狙うのではなく細かく刻んでいく。
色々な可能性と、その場合の対応を常に考る
開発を進めていく上でも戦術があって然るべきだと思っているけど、あまり見たことない。淡々とタスクをこなしていくだけということが多い。
もっとタスクの順を有機的に組み替えたり戦術を立てればいいのにと思う。
麻雀で例えると、配牌開いた時点で「ココがきたらコレを切る。コレが出たら鳴く。ココが入ったらリーチ。」というように色々考えておく。それも自摸和に合わせて毎回考え直す。
ここで大事なのは確率に応じて優先度をつけること。毎回全パターンをシミュレートするのは難しいので発生確率(自摸和る確率、出る確率)が高いものから考えていく。
全体を見る
通り慣れたまっすぐな道路を車や自転車で通るとき、2・3個先の信号を見て、速度を若干調整すると思う。2個先の信号が今赤になったから、このくらいの速度で進めばあの交差点に差し掛かるくらいで丁度青になるかな、という具合に。他にも路側帯を自転車が走っていて追い越そうとする前には減速したり周囲を確認したり。例をあげればきりがないけど、開発も同じことだと思う。
車で例えたから麻雀の例いる?と思わなくもないけど。
他家の仕掛けが入ったら自分の手と場の状況など全体を見て、押すか引くかの判断したり。親リーチが入った際に他家が軽そうな仕掛けを入れたらその手助けをしてあげたり。
まとめ
そういうのが苦手な人は麻雀すればいいんじゃないかな