今の会社に入ってからは前の会社よりも相対的に立場が上がり、見積を出すことが多くなった。
厳密には実際に金額を出すのは営業ないしはディレクターのため、工数算出というかたちにはなるのだが、いずれにしてもクライアントに提示するこちら側のリソースを算出する機会が増えたため、書籍やWeb上で調べ自分なりの考え方というのがいい感じに融合されて固まってきつつあった。
だが先日偶然見た記事で「ああ、こういう観点があったのか」と割と感化されたので、自分なりに考察した記録を残す。
私の現在の工数算出方法
基本的には3点工数式をベースで算出している。
3点工数とはその名の通り、3種類の工数を算出することである。
最小がこれくらい、平均がこれくらい、最大がこれくらい、、といった感じである。
これは元々営業にどれくらいのバッファを見て見積を作ればいいか。つまり値下げを希望された場合、弊社が損益を受けない最小の工数はどれくらいか。また一般的な額、営業ベースの最大額をどれくらいで提示すればいいか、という相談を受けた結果、常に3種類の幅を持たせた工数を提示するようになったのである。
- 最小:損益を受けない最小の工数
- 最大:お客様に説明可能な最大の工数
- 平均:最小と最大の中央値
このやり方は案外しっくりきていて、長い間使用していた。
実際の作業工数は着手時にしかわからないというのもあり、バッファを持たせるやり方は算出者(私)からしても気楽で、営業としても金額のコントロールにおけるコミュニケーションリソースを消費しないという側面からそんなに物議を醸したことはなかった。
入ったばかりの営業には「3点出されると逆に決められないよ、、」という人もいたが、時間が経つとそういった声を聞くこともなくなった。
だがあるとき、3点出す意味がわからないと尋ねられたことがあった。
このときの説明としては、これはエンジニアがこの作業にはこれくらいかかるよと説明できる幅だよと伝えたところ納得してもらった。
わたしも当時はこれでいいと考えていたのだが、先に言及した記事でこれは考え直さなくてはいけないと感じてしまった。
今後やっていくであろう工数算出の方法
まずその記事を紹介する。
※ 前提として、会社とフリーランスの見積は違うのは承知のうえだ。動く人数も違えばクライアントの種類も違う。単価感も違う。そのうえで、こういった観点を身に付けた工数が算出できれば、会社にもクライアントにもよりよい見積を提示できるのでは、と考えた次第である
この記事のポイントは4つの評価軸で見積を算出するということである。
具体的には
- 効率性:実働時間、リスク管理込み
- 緊急性:期限の短長
- 専門性:どれほど専門性を問われるか。ピカソの絵と同じで、その技術を会得するために支払った労力分を加味
- 有効性:いわゆる付加価値。ブランド物のバッグの同じで、会社のブランディング力を加味
この4軸である。
具体的にわたしの意見を交えつつ解説していく。
効率性
これは客観的な工数のことである。自分なら何日かかるか、ではなく一般的にどれくらいかかりそうかということだ。
普通は3週間かかるのを1週間で終わらせられる人であれば、その人の作業は3週間分の価値がある。また例えばデザイナーとエンジニアどちらもこなせる人の場合は、それぞれの職種のコミュニケーションコストが低くなる。この分もその人の価値に値するため、その分も含めて算出するようにする。
これを出すには当人の経験と環境(例えばWeb制作とシステム開発の現場では見積相場が違うため)がものをいう。
リスク管理工数(予期せぬ事態を想定した工数)もこの評価軸となる。
緊急性
期限の短長を加味した見積にする。いわゆる特急料金。
期限の短さはリスクの高さを意味するため、割増にする必要がある。
専門性
その作業内容がどれくらいの専門性を伴うかを図る。
できる人が少なければ少ないほど、受けられる人が少ない。
自分にとって簡単にできるかどうかは関係なく、その技術を会得するために支払った労力分を加味した工数にする必要がある。
有効性
「ただ動くモノ」を最低ラインとして、実際に制作するものにどれくらい付加価値を与えられるかを加味した工数にする。
例えばバーグハンバーグバーグ社であれば、フフフと笑えるような話題性のあるものを作ってくれそう。とか。
要件を満たす以外に与えられるその会社の価値を付加した見積にする。
この4つの評価軸をベースに「この仕事をいくらくらいで受けたいか」というのをざっくり決める。
この4軸は見積を上げていくための成長指針ともなり、常に意識することが重要というのを説いているのが上記の記事の内容だ。
この記事の感銘を受けた理由としては、まさにこの4軸の考え方である。
先に紹介した私のやり方は、「自分がどれくらいかかるか」という主観的考察により工数を算出することが大半だった。
思い返すと前の会社のスタンスがそうだったのだが、見積の指標を立てておかないと、「効率性」「専門性」は個人によって大いに変動することになり、またそもそもこの評価軸そのものの捉え方が違うことによって、稼働時間での計上や技術工数で計上したりなど一律ではないため、作業者によって見積が大きく変わることを許容してしまうことになる。
「緊急性」の軸は3点工数などでは算出できない要素(というか考えていない)で実担当しか知り得ない情報だし、「有効性」の軸に至っては、実際に見積を算出する営業が決めた一時間あたりこれくらいというのを謎ルールとして認識してしまうだろう。
こうなってしまうと優秀なエンジニアほど工数が少なくなり、未熟なエンジニアほど工数が高くなるというパラドックスが発生してしまうが、この4軸はそれを解消し、今までの根本軸を一切考慮しない考え方となる。
また基準を明確にすることによって、作業分割を行うこともできるようになるため、エンジニアの工数は「効率性」「専門性」から算出し、残りの「有効性(ベース金額)」と「緊急性」については別に見積を作成いただく方にお願いするなど軸で見積作業の分割を行うこともできる。
いままでは働いた分だけ、もらえる。というまあ常識的な考え方だった。汗をかけばかくほどお金はもらえるが、なんか寿命が削られていくような感覚。
ちょっとそれだと会社にいるのは後々とても辛くなりそうなので、この4軸を参考に自分の新しい指針を見つけて、定量化・効率化に役立てていこうと思った。
ちょっと長文になりすぎたため後半肝心な結論のところがだれてしまったが、まあそんな感じ。
新しい軸も考慮して見積から経営にコミットしていこう的な。
実工数と見積額は違う。けれどもそれをクライアントに説得できる材料を見つけて行こうと思う。
追記:
内部的には技術工数で算出できるものがあれば、技術工数を算出し、技術工数が図りかねる場合は実工数(稼働時間)で算出するのがいい。
ただお得意様からの値引き要求は最低限の利益だけ取れればいいので、実工数まで下げるのがベストな方針であると思う。
余談だが、この記事のタイトルが「週休7日で働きたい」。
私も同感だ。
大学時代に「あなたは将来働きたいですか」という問いをテーマに作品を作る授業があって、全員が「働きたい」という答えとともに作品を作っていたことに衝撃を受けた。
私自身はその授業を受けておらず、その作品の展示を友人と2人で見ていて、お互いが「絶対嘘やろ!」と失笑していた記憶がある。
その友人は今は自由気ままなフリーランス生活を送っているのだが、一方の私はというと。。
不確実性コーンという言葉があるらしい。
以下のように、プロジェクトのスケジュールが進捗するにつれて工数のブレが収束しながら完了していく様子をグラフで捉えたものである。
つまり、プロジェクトの初期と中期では見積に関わる工数が大きくずれる可能性がある。
このように概算で見積を早急に出さなければいけない場合、不確実な工数を考慮にいれて見積もる必要がある。
また技術的負債にも考慮だ。
開発初期と開発中期、開発後期では機能追加のハードルが異なる(もちろんなるべくその差をなくすのがよいエンジニアであるが)。
その都合に応じた工数の差も意識しておくとよい。
良いエンジニアというのは複雑な問題にたいしてコードをシンプルに提示することができるが、よくないエンジニアは、簡単な問題でもコードが複雑になり、技術的負債が大きい場合がある。
これがあるから、よいエンジニアほど工数が低く、よくないエンジニアほど工数が多くなるというパラドックスが発生するのである。