要件定義を簡単にするたった一つのシンプルな方法
ソフトウェア開発で一番難しいと言われている工程が、要件定義です。
なぜ難しいのか?を説明した上で、発注する側としてどうしたらいいのか?
要件定義する側としてどうすればいいのか?を今までの経験から考えてみます。
なぜ要件定義は難しいのか?
ソフトウェア開発では1つとして同じプロジェクトが存在しません。
少しでも条件が変わると、全く別物を作らなくてはいけなくなることも多々あります。
つまり過去の経験が活かしにくいのです。
これが他のものづくり関連の仕事と、ソフトウェアとの大きな違いです。
全てのプロジェクトがある種、研究開発のような性質を抱えているのです。
腕のいいエンジニアはどうしてるか?
腕がいいと言われるエンジニアは、過去の経験は活かしにくいけれども、
ある程度リスクの見積もりができる人です。
新人よりも経験のある作業が多いので、どのくらい時間がかかるのかわかるのです。
そして不確実な部分が確実にある、という前提でスケジュールを組むので、
そこまでスケジュールにズレがないのです。
あったとしても、だいたいこのくらいで挽回できるという見積もりを最初から組んでおくのです。
また、作業自体が速いので、遅れたとしても挽回が速いという理由もあります。
発注する側としてはどうしたらいいのか?
ソフトウェアを発注するのはとても難しい作業です。
特にシステム開発の知識がないとなれば、
「なんとなくこんな感じ」という発注になってしまうのも仕方ないことかもしれません。
しかし、これだとエンジニアからすると不確実な部分(あなたが何を望んでいるのかがわからない部分)
が大きすぎるため、かなりリスクが高いと思われてしまいます。
その結果、見積もり金額は高くなってしまいますね。
ではどうすればいいのでしょうか?
まずは、とにかく機能をシンプルにしましょう。
○○だけ!とか、しかできない!くらいの思い切った絞り込みをして、まずは最小のプロダクトを作ってみる。
そして必要に応じて機能を追加していくほうがうまくいきます。
最初からあれもこれも。。。そしてこれもやりたい!という発注をすると、
どの機能も中途半端なソフトウェアが出来上がります。
色々とつけたくなる気持ちはわかります。
みなさんが普段目にする、世の中に出ているソフトウェアはとても高機能ですからね。
でもそれらは何年もの時間、何百人ものエンジニアが1つ1つ機能を改善して来た結果なのです。
いきなりそれを全て真似て作る!となると、かなりの初期投資が必要になりますし、
お金をかけれたとしてもスケジュールが遅れるリスクが跳ね上がります。
本当に必要な機能は何か?を問い続けることが成功への道
ソフトウェアの要件を決める時、大体の人は(私や多くのエンジニアですら)
夢が広がってあれもこれもつけたい!!となります。
ですが、千里の道も一歩から。
まずは本当に必要な機能を洗い出して、そこから着手しましょう。
時にはビジネス自体を考え直す必要や、システム以外の面で検討しなくてはいけないことも
あるかもしれません。
でもそれは本当にそのソフトウェアの価値は何か?を考えるとてもいい機会です。
ぜひ面倒な作業と捉えず、じっくり考えてみてください。
それをするだけの見返りは必ずあります。
関連記事:
- システム開発で必ず遭遇するアイツの対処の仕方
昨日の夜、ベッドを降りる時に足を踏み外して側頭部にたんこぶができました。。。 我が家のベッドは片方からしか降りることが出…
- なぜシステム開発は高いのか?適切な価格は?
初めてシステム開発を開発会社に依頼しようとしている人が思うことに、「え!?こんなに高いの?」があります。 それもそのはず…
- 新機能を追い求めるべきでない理由
僕は普段電車に乗る前にペットボトルのお茶を買う習慣があります。 今日はいつもとは違う場所に行くので、違う売店で買いまし…
- ツールを知っているかどうかが人生をもっと気持ちいいものにする
私が大学生の時、研究で大量のデータを加工する必要がありました。 データを自分の研究に合うように足し合わせて、集計する作業…
- システム開発で不測の事態に出会ったら?(絶対出会います)
みなさん、お酒は好きですか? 僕はちょっと前まで毎日ウイスキー飲むくらい好きでした。 過去形なのはここ2ヶ月くらい断酒…