見出し画像

エンジニア3年目は見積もることを覚えた

1.はじめに

おはようございます。
ラクス フロントエンドチームのさねです。
2024年2月時点で社会人になってから2年と11ヶ月が経過しました。
まだまだ新米ですね。

この記事は私が今までエンジニアとして学んだ中から、見積りが大切だと気付かされたことを紹介します。正直好みの部分ではあるので、こうするべきだとは思いませんが、何か参考になれば嬉しいです。

2.見積りとは?

まずはじめに見積りとは何かについてですが、私の場合、割り振られた案件や要望に対して、どれくらいの工数で終わらせられるかを指しています。言い換えれば工数見積もりです。

ログイン画面

上記のようなログイン画面を開発する場合、エンジニア1年目の私は、
ログイン画面:180分
のように1画面何分と見積もりを行っていました。確かに、単純な画面に見えますし、技術力が高いエンジニアは頭でこの作業に必要な時間を整理し、おおよその概算を導き出せるかもしれません。しかし、私は経験が浅く、必要な作業を十分に整理出来なかったため、作業の漏れや遅れが発生した際にリカバリー案を考えるのに時間を費やし、かなり苦労しました。

3.1大雑把な見積もりで何が悪かったのか?

ログイン画面の実装において、私の見積もりでは、入力欄を2つ作り、ログインボタンを作成してデータを送信する、といったシンプルな流れでした。具体的には、3つのコンポーネントを作成し、1つあたり60分として総工数を180分と見積もっていました。しかし、実際には以下の通り、フォーム2つとボタン1つを作成するだけでも多くの作業が発生しました。当時のスキルでは1つを90分で完了させることは難しく、工数の見直しを行って何とかプロジェクトを終了できました。以下が見積もりに追加すべき作業内容です。

  • 各入力欄のバリデーション

  • APIのレスポンス処理(エラー処理)

  • ユーザーに応じた画面遷移(管理者権限・通常権限など)

  • ユニットテストなどのテスト関連

これらの要素を考慮せずに見積もりを行うと、実際の作業量を過小評価してしまい、プロジェクトの進捗に深刻な影響を及ぼす可能性があります。見積もりの重要性を再認識し、より正確な見積もりを行うことが必要であると痛感しました。

4.工数見積もり

添付した表が私が失敗を経て改善したログイン画面を実装する際の見積りになります。繋ぎこみ作業ではどのAPIを繋ぎこむか明記したり、MRの粒度を意識するため1MRの区切りを1行空けるなど意識しています。

$$
\begin{array}{|l|l|l|l|l|} \hline
\text{No} & \text{概要} & \text{ステータス} & \text{進捗率} & \text{標準工数} \\ \hline
\text{1} & \text{【実装】ユーザーID入力欄 コンポーネント作成} & \text{レビュー中} & \text{50} & \text{0.5} \\ \hline
\text{2} & \text{【実装】ユーザーID入力欄 バリデーション対応} & \text{着手} & \text{40} & \text{0.5} \\ \hline
\text{3} & \text{【MR】ユーザーID入力欄 MR作成} & \text{} & \text{} & \text{0.25} \\ \hline
\text{4} & \text{【MR対応】ユーザーID入力欄 レビュー対応} & \text{} & \text{} & \text{0.15} \\ \hline
\text{} & \text{} & \text{} & \text{} & \text{} \\ \hline
\text{5} & \text{【実装】パスワード入力欄 コンポーネント作成} & \text{} & \text{} & \text{0.5} \\ \hline
\text{6} & \text{【実装】パスワード入力欄 目アイコン 実装} & \text{} & \text{} & \text{0.5} \\ \hline
\text{7} & \text{【実装】パスワード入力欄 バリデーション対応} & \text{} & \text{} & \text{0.5} \\ \hline
\text{8} & \text{【MR】パスワード入力欄 MR作成} & \text{} & \text{} & \text{0.75} \\ \hline
\text{9} & \text{【MR対応】パスワード入力欄 レビュー対応} & \text{} & \text{} & \text{0.5} \\ \hline
\text{} & \text{} & \text{} & \text{} & \text{} \\ \hline
\text{10} & \text{【実装】 ログインボタン コンポーネント作成} & \text{} & \text{} & \text{0.5} \\ \hline
\text{11} & \text{【実装】ボタンが押された時の処理 API繋ぎ込み POST /login} & \text{} & \text{} & \text{0.5} \\ \hline
\text{11} & \text{【実装】画面遷移対応} & \text{} & \text{} & \text{0.5} \\ \hline
\text{12} & \text{【MR】ログインボタン MR作成} & \text{} & \text{} & \text{0.75} \\ \hline
\text{13} & \text{【コードレビュー対応】ログインボタン レビュー対応} & \text{} & \text{} & \text{0.5} \\ \hline
\text{} & \text{} & \text{} & \text{} & \text{} \\ \hline
\text{14} & \text{【実装】 ログイン画面 単体テスト 実装} & \text{} & \text{} & \text{1.5} \\ \hline

\text{15} & \text{【実装】単体テスト MR作成} & \text{} & \text{} & \text{0.75} \\ \hline
\text{16} & \text{【コードレビュー対応】単体テスト レビュー対応} & \text{} & \text{} & \text{0.5} \\ \hline
\end{array}
$$

5.見積もりを意識して得られた事

見積もり方法を変えた事で何よりも作業忘れが無くなった事が一番良かったと感じました。やる事を具体的に書き出す事でゴールもハッキリし、手戻りが無くなりました。また、案件を振り返った際に実装が遅れてしまったタスクの振り返りがし易く、弱点の改善にも繋がりました。エンジニアとしてのレベルが上がると、1人月から半年かかるような大規模な案件が任されることもあります。そのため、今後も細かい粒度で見積もりを続けていこうと思います。


採用情報

イベント情報

この記事が気に入ったらサポートをしてみませんか?