こんにちは!
元Yahooエンジニアで、今はPRUMという会社の社長を務めています、岩本です。
今回は「要件定義ってそもそも何なの?」というテーマで、なるべく分かりやすく書いてみようと思います。
現場でもっとも重要で、トラブルの原因にもなりやすいのが、実はこの「要件定義」というフェーズです。
開発は家を建てるのと似てる
システム開発のプロセスは、家を建てる流れとすごく似てます。
家を建てるときって、まず「どんな家にしたいか」を詳細に話しますよね。
- 間取りはどうするか
- リビングは広くする?
- 収納は多め?
- キッチンは対面式にしたい?
- 壁や床の素材はどうする?
などなど、細かいことまで擦り合わせてから、図面を引いて、OKが出たらやっと建築に入っていく。
このプロセスは、システム開発もまったく同じです。
要件定義=「どんなシステムを作るか」を決める時間
開発でも最初に、
「どんなシステムを作りましょうか?」
という話から始まります。
このときに、必要な機能や画面やルールなどをとことん明確にしていきます。
ここが曖昧なまま開発に入ると、かなり高い確率でトラブルになります。
システムは「見えないところ」が多すぎる
家づくりとの一番の違いは、システムって目に見えない部分が多すぎるということ。
建物なら図面があるので確認しやすいですが、システムって裏側の処理とか、エラーパターンとか、同時にアクセスされたときの挙動とか…
**「え、そんなケースもあるの?」**っていう見えない分岐が無数にあります。
だから、あらかじめちゃんと全部洗い出しておかないといけない。
考慮漏れをいかに少なくするか、
これが要件定義の一番しんどいところ。
要件定義が甘いと、トラブルの元になる
たとえば開発の途中で、
- 「あれ?この機能足りなくない?」
- 「これも必要だったよね?」
となると、そこから追加対応が発生します。
これによって、
- 見積もりが大幅にズレる
- 納期が伸びる
- クライアントと揉める
という事態に繋がります。
そしてさらに厄介なのは、こういう要件定義の漏れは、開発会社側の責任になるケースが多いです。
「要件定義漏れは開発会社の責任なので、見積もり金額は変えられませんが、対応はお願いします」
というパターンがよくあります。
めちゃめちゃ頑張って開発して納品したのに、
「利益、ほぼゼロやん…」
みたいなことも普通にあります。
エンジニアの「提案力」が最重要
要件定義の難しさはもう一つあって、
クライアント(依頼主)がシステムに詳しいとは限らないという点です。
だからこそ、エンジニア側がプロとして、
「本当に必要な仕様になっているか?」
「抜け漏れはないか?」
「こういう機能もあった方がいいのでは?」
と、相手に寄り添いながら適切な提案をしていく力が求められます。
要件定義は難しい、これができるエンジニアは少ない
この要件定義の力は2〜3年ではなかなか身につきません。
たくさんの案件を経験して、いっぱいやらかして、ようやく「あ、こういうの見落としがちだな」って感覚が養われていくもの。
だからこそ、
目の前のことをコツコツやる
一つひとつの案件をちゃんと振り返る
っていう積み重ねが大事です。
まとめ
- 要件定義は、システム開発の「設計図をつくる時間」
- 家づくりと似てるけど、システムは“見えない部分”が多くてむずい
- 要件の漏れがあると、だいたい揉める(お金的にもスケジュール的にも)
- エンジニアとして「適切な提案」ができる人は、めちゃめちゃ価値が高い
- でも、そこに行くには経験が必要。まずは目の前の仕事をやり切ろう
要件定義ができるエンジニアは本当に価値が高いです。
焦らず、まずはコツコツ目の前のことを積み重ねていく。
その積み重ねが、いつかあなたを「信頼されるエンジニア」に育ててくれます!
PRUMのエンジニアの95%以上は、未経験からの採用です。
ぜひ、求人をチェックしてみてください!
▼ Wantedly求人
https://www.wantedly.com/projects/626662
▼ コーポレートサイト
https://prum.jp/
VISION 『日本で一番エンジニアが成長する会社を創る』
ご応募お待ちしておりますー!