要件定義を簡単にするたった一つのシンプルな方法

ソフトウェア開発で一番難しいと言われている工程が、要件定義です。
なぜ難しいのか?を説明した上で、発注する側としてどうしたらいいのか?
要件定義する側としてどうすればいいのか?を今までの経験から考えてみます。

なぜ要件定義は難しいのか?

ソフトウェア開発では1つとして同じプロジェクトが存在しません。
少しでも条件が変わると、全く別物を作らなくてはいけなくなることも多々あります。
つまり過去の経験が活かしにくいのです。
これが他のものづくり関連の仕事と、ソフトウェアとの大きな違いです。
全てのプロジェクトがある種、研究開発のような性質を抱えているのです。

腕のいいエンジニアはどうしてるか?

腕がいいと言われるエンジニアは、過去の経験は活かしにくいけれども、
ある程度リスクの見積もりができる人です。
新人よりも経験のある作業が多いので、どのくらい時間がかかるのかわかるのです。
そして不確実な部分が確実にある、という前提でスケジュールを組むので、
そこまでスケジュールにズレがないのです。
あったとしても、だいたいこのくらいで挽回できるという見積もりを最初から組んでおくのです。
また、作業自体が速いので、遅れたとしても挽回が速いという理由もあります。

発注する側としてはどうしたらいいのか?

ソフトウェアを発注するのはとても難しい作業です。
特にシステム開発の知識がないとなれば、
「なんとなくこんな感じ」という発注になってしまうのも仕方ないことかもしれません。
しかし、これだとエンジニアからすると不確実な部分(あなたが何を望んでいるのかがわからない部分)
が大きすぎるため、かなりリスクが高いと思われてしまいます。
その結果、見積もり金額は高くなってしまいますね。

ではどうすればいいのでしょうか?
まずは、とにかく機能をシンプルにしましょう。
○○だけ!とか、しかできない!くらいの思い切った絞り込みをして、まずは最小のプロダクトを作ってみる。
そして必要に応じて機能を追加していくほうがうまくいきます。
最初からあれもこれも。。。そしてこれもやりたい!という発注をすると、
どの機能も中途半端なソフトウェアが出来上がります。

色々とつけたくなる気持ちはわかります。
みなさんが普段目にする、世の中に出ているソフトウェアはとても高機能ですからね。
でもそれらは何年もの時間、何百人ものエンジニアが1つ1つ機能を改善して来た結果なのです。
いきなりそれを全て真似て作る!となると、かなりの初期投資が必要になりますし、
お金をかけれたとしてもスケジュールが遅れるリスクが跳ね上がります。

本当に必要な機能は何か?を問い続けることが成功への道

ソフトウェアの要件を決める時、大体の人は(私や多くのエンジニアですら)
夢が広がってあれもこれもつけたい!!となります。
ですが、千里の道も一歩から。
まずは本当に必要な機能を洗い出して、そこから着手しましょう。

時にはビジネス自体を考え直す必要や、システム以外の面で検討しなくてはいけないことも
あるかもしれません。
でもそれは本当にそのソフトウェアの価値は何か?を考えるとてもいい機会です。
ぜひ面倒な作業と捉えず、じっくり考えてみてください。
それをするだけの見返りは必ずあります。

関連記事:

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)