つよいタイトルを付けてしまいました。そんなつよい話じゃないです。
エンジニアの成長曲線と見積もりの相関関係について です。
見える範囲が変わる
ある言語の1年目と、3年目の人が、同じ機能の開発を任されるとします。
先に完成させるのはどちらでしょうか?
当然3年目・・・と言いたいところですが、おそらく1年目の方が先に完成させるでしょう。これはするべきタスクの洗い出しが甘いからゴールラインが違っているんです。
中身を見ずに判断すると「この1年目は天才かもしれん」となりますが、リリースしてからバグが出たり不都合が生じます。
と言っても、それでもどうにかなるプロジェクトもありますが。
このように、我々は学習し経験を積むほどに見えるするべきタスクが増大していきます。
経験値と、実際のタスク量と、見積もり量の変遷
以下のような過程を経ると思います。
図が雑ですが。
最初のうちは、知識と経験量が足らずに少ない見積もりで少ないタスク(低品質+不足)をこなし、「完成しました」と言ってしまいます。もちろんバグが沢山出ますが、テストが疎かなら気づかずにリリースしてしまいます。
経験値が溜まっていき、ようやくまともに仕事をこなせるようになり始める頃。やらなければならなかったタスクに気づき始め、見積もりも大きく上振れます。
ここまでは問題ありません。
更に学習し、経験値が溜まっていくと、やらなければならないと考えるタスクは更に増大しますが、見通しが立つようになって工数は一定か減らすようになります。
過剰に自信がある状態、いわゆる「完全に理解した」状態です。
しかしタスク量は増えているので、見積もり通り行くことは稀です。
この時点を老害と起きました。
でもこれ結構初期段階ですよね。若いのに老害(矛盾)
老害と言うか、詳しくてうるさい人ってやつですね、何て呼べば良いんでしょうか?イキリマウントエンジニア?
その後、反省して品質やタスク量を上手くコントロールする人と、そのまま若年性老害を続けて本当に老害になる人に分かれると思います。
どっちが多いですかね?半々くらい?
ベテランでも良いですが、「おっさん」と呼んでも良いと思います(何が)
若年性老害エンジニア vs おっさんエンジニア
おっさんには若年性老害の気持ちがわかるのですが、若年性老害におっさんの気持ちはわからないので、おっさんは特に何も言わないようになると思います。
どちらがリーダーになるかによっても非常にプロジェクト内の温度感が変わります。
まあでも遠目で見れば誤差だと思いますけど。何が違うかと言えば、残業時間と仕事の辛さくらいですかね?
何でそれしか違いが出ないのかと言えば
品質 → どちらも必要以上の品質になる
工数 → おっさんは100と見積もって100やる。若年性老害は100と見積もって120やる
だからです。
おわりに
過剰品質の話とか書こうかと思いましたが長くなるのでやめました。
ところで、非エンジニアのPOがエンジニアに見積もってもらった際、エンジニアがどのフェーズの人間かで見積もりは大きくブレますよね。
おそろしいです。
違うフェーズのエンジニア同士も見積もりの議論がうまく噛み合いません。
「数人に聞いて一番大きい値を採用する」みたいな方法良いですよね。
あと、「エンジニアを経験した経営者!」みたいな謳い文句良く見ますけど、大抵おっさんフェーズまでは到達していないので悪い方に働くリスクも大いにありますよね。
ディレクション経験もあれば良いんですけど。
ということがあるので、見積もりは何かしら客観的なものから経験的に割り出すようにしたほうが良いと思います。画面数やER図や複雑度など。
まあそれ自体の妥当性も説明がつかないので結局話は平行線なんですが(諦観)