はじめに
以前、日記で「ソフトウェア開発の一つ一つのタスクが大きすぎることについて悩んでいる」と書いた。
作業量を見積もりたい
今回は、その話について、少し書いてみようと思う。例えば、ソフトウェア開発って、ある機能を開発する、ってタスクがあったときに、それがどれくらいで終わるか?というのがなかなか見積もりにくい。
例えば、「A機能の開発」とか「デバッグする」と言ったとき、その中に何が含まれているかわからないとき、3時間と見積もるかもしれないし5時間と見積もるかもしれない。3日と見積もるかもしれない。3ヶ月かかるかもしれない。ソフトウェア開発を生業としていくには、それがどれくらいでできるかどうか、という見積もりはすごく大切な気がする。
というか、作業見積もりができないと、色々困ることがある。
見積もれないと困ること
とにかく見積もりができないということは、その作業がいつ終わるのかよくわからない。作業がいつ終わるかわからないということは、また色々困ることがある。
それが終わった後に、別のことをやろうとしていたとしてもいつ終わるかわからないから、いつ着手できるのかわからない。
それに、そもそも来週までに終わらないと意味がないこととかって結構あるんだけど、作業量が見積もれないということは、そこまでに終わるのかどうかもわからないということ。
そこまでに終わらないんだとしたら最初からやらないほうがいい感じがすることって結構ある。というか、最初からできないんだったら、別の人にやってもらうとか、他の人に手伝ってもらうとか、そういう話も色々ある。
だから作業量を見積もりたいという話になる。
逆になになら見積れるの?
何でもかんでも時間を見積れないわけじゃなくて、時間が見積れる時もある。日常的な話で言えば、自宅から、最寄駅までの道のりにかかる時間は見積もることができる。
ソフトウェア開発にかかる部分で、見積れることもある。例えば、指定されたファイルを指定されたフォルダリストにコピーするとか。でも、ソフトウェア開発の時間で見積もることができないことは多い。
なんでだろう。
見積れることと見積もれないこと
今のところ、僕の考えているイメージでは、見積れることって今までやったことがあること。今までに全く同じことをやったことがある場合は、見積れる。
自宅から駅まで歩いて行くとかは、そのイメージ。
でもソフトウェア開発って、基本的に新しいことばかり。
というか、新しいことをしないとどんどん後ろに下がって行く気がする。
(新しいことをしない人もいるけどね)
本当に見積もる必要あるんだろうか
こんなことを考えていると、そもそも本当にソフトウェア開発って、時間を見積もる必要があったっけ、と思う。
なんで、そもそも時間を見積もっていたんだっけ?
時間を見積もろうとした理由
時間を見積もろうとしたのは、以下のような点が困ったから。
- 次のことがいつ着手できるかわからない。
- いつ完成するかわからない。
- その人がやるべきなのか他の人がやるべきなのかわからない
- 人を増やすべきなのかどうかわからない。
そこで次のようなイメージが浮かんだ。
- 次のことにいつ着手できるかわからなかったら、終わったら着手したらいいのでは?
- いつ完成かわからなかったら、いつ完成するかわからないという話にすればいいのでは?
- 誰がやるべきかとか考えずに、やりたい人がやればいいのでは?
- そもそも人を増やすべきかどうかを考えるのがなんかおかしいのでは?
うーん。
なんか色々ずれているようなずれていないような、なんなんだろうか。
どういうことかというと、行動を管理するためには、一つ一つのアクションアイテムが、少なくとも30分、短ければ5分、で終わるようなレベル感になっていないといけないと思っている。でもソフトウェア開発のタスクは30分で終わらないようなことがたくさんある。
30分で終わらないと行動の管理が難しい。というか、基本的に僕は、いくら集中力が続いたとしても30分以上集中できない。だから、30分以上、例えば1時間のアクションアイテムは、あんまり管理している意味がない。それはアクションアイテムというより、消化すべきタスクリストになっている。それじゃあ、行動を管理している意味がないような気がする。
まあ、確かに、今の僕が3時間かかるようなタスクも5時間かかるようなタスクも3時間かかるようなタスクも、全て10分で終わるようになれば、いいのかもしれないし、そのようにスキルを磨いていくのは大切な気がする。
とはいえ、自分がやっていることにあとどれくらいの時間がかかるのかわからなければ、行き当たりばったりのクオリティのものしかできないし、それって仕事としてどうなんだろうなあと思う。
じゃあそのでっかいタスクの中でやることを、プロセス化して、取捨選択すれば、もう少しクオリティの高い仕事ができるようになるんじゃないかなあと思っていたりもする。
とはいえ、プロセス化して、それしかやらなくていいという話になるとかなりおかしい話になるから、自分のためにプロセス化するだけなんだけど。