はじめに
本記事は、現在開催中の「新人プログラマ応援 - みんなで新人を育てよう!」の記事です。直接的なTipsではないですが、過去「見積もりってどうすれば良いの〜!?」と思っていた私がちょっとできるようになるための記事を書きました!
それでは最初に結論です。以下の3点を実施してみましょう!
- まずは概算で良いから見積もってみる
- 作業を細かく分割してそれぞれの時間を予測し、合計値を出す
- 作業を行った後にふりかえって実測値を確認する
あと、心構えとして「今まで経験がないものは簡単に出来ないよね!」と思っておくと心理的に良いと思います。
著者について
- プログラマ(エンジニア)経験3年目(2020年3月〜)
- IT業界に来て初めてQCDという単語を聞き、今までの仕事でも作業見積もりを行った経験がない(=見積もり、納期という意識が弱い)
- それまでのプログラミング経験も細かい納期はなく見積もる必要がなかった
- これはどのくらい時間がかかりそう?という問いに答えを出せず、絶望していた
対象読者
見積もりがよく分からない、出来ないよ〜と困っている新人のエンジニア・プログラマ
書いた動機
見積もりは個人の経験・勘で実施されているのが主だと感じており。ネットでググっても情報が少ないので、記事を書こう!というのが動機です。
見積もりについて
見積が出来ない1番の理由は「自分が行う作業を正しく認識出来ていない」からだと思っています。
そして「今までやっていない・やったことがないから出来ていない」とも思っています。
誰しも経験がないものを最初からできるわけがないと思います。
はじめに、でも書きましたが気楽にいきましょう!
前提条件
- 1人で1, 2週間程度の時間をかけて開発できるタスク
- 開発〜テストまでを担当する
- これさえすれば絶対に作業を見積もれるぞ!という銀の弾丸でもありません!
具体例
では、実際に考えてみたいと思います。
- 求人情報の検索サイト
- 検索画面で検索できるプラスアルファの条件に「リモートワーク可能かどうか」を追加してほしいと言われた
- 既にプラスアルファの条件として、未経験可能、残業少なめといった条件のチェックボックスが存在している
まずは概算で良いから見積もってみる
今までやったことのない作業であればどのくらい時間がかかるか、わからないと思います。
その状態で不確実なものを出したくない・・・という気持ちが芽生えるかと思うのですが、やったことのないものはやったことがない!ということで開き直って「このくらいかな」と見積もってしまいましょう。
作業を細かく分割してそれぞれの時間を予測し、合計値を出す
え?流石にざっくりし過ぎだろう?
・・・そうですよね。でも、まずは1歩目を踏み出してみたということで、もう少し具体的な方法を述べてみます。
- 検索画面で検索できる条件に「リモートワーク可能かどうか」を追加してほしいと言われた
この条件で、実際に行うことは何でしょうか?例えば以下のようなことが挙げられると思います。
- 影響調査
- フロントエンド/バックエンドがどう組み立てられているのか調査する
- フロントエンドの修正
- リモートワーク可能かどうかのチェックボックスの追加
- 入力値チェック(変な値を送信された場合の挙動はどうするか?)
- 検索後へ遷移する画面での条件保持ロジックの追加(複数ページにまたがる場合でも検索条件を維持する仕組み)
- バックエンドの修正
- フロントエンドで追加した値を受け取れるように取得ロジックの追加
- 異常値かどうかバックエンドでも確認をするロジックの追加
- 値を受け取った後、SQL/ORMへの条件追加
- テスト
- テストコードがあるならテストコードの作成、追加
- テストを実施する内容の洗い出し、仕様書の作成
- テスト実施
と、こんな感じになるでしょうか。ここまで洗い出してみると、概算見積もりにもう少し具体性が出るのではないでしょうか?
段落ごとに分けた1つの作業=1時間にすることでも、なんとなく全体でxx時間!とするのよりも具体的ではないかなと。
より具体的に見積もるなら、フロントエンドはあまり触ったことがないから時間がかかりそうだな、バックエンド側のロジックはある程度理解しているから、あそこに追加すれば大丈夫そうだな、という具合に時間を算出するのが良いと思います!
作業を行った後にふりかえって実測値を確認する
そして最後に、ふりかえりです。見積もるだけ見積もってやった気になってはいけません。
自分が実際に考えていた時間よりかかることがあればちょっとメンタルにダメージがありますが・・・その場合は「今の自分だとこのくらい実際にかかるんだな」と客観視してダメージを減らしましょう。繰り返しですが、やったことのないものは全然出来ないものです。仕方ないか、という開き直りも大事になります。
また、思っていたよりも早く出来た、というのも無意識のうちに「バッファ」を設けすぎていた可能性があるのでもう少し減らせる余地があります。
(バッファとは、作業時間で想定していないことがあると仮定して予め設けておく予備時間のことです。)
終わりに
どうでしたか?少しは参考になったでしょうか?
私自身、出来ていないところがまだまだあるのですが、「作業見積もりってどうしたら良いんだ!」とずっと思っていました。
少しでも作業見積もりについて何か参考になれば幸いです。
参考文献
私が一方的に尊敬している方の伊藤さんの記事でタスクばらし、というワードがあり「全然出来てない・・・!」と当時思いました。言葉をそのまま真似させていただくと、大きなタスクを最初から食べようとしている状態ですね。
見積もりだけでなく、仕事の話全般について書かれているので、ぜひ伊藤さんの記事も読んでみてください!