昔は技術的に出来なかった為に運用でカバーしてきた慣習が残り続けているけれども、実は今の技術で考え直すともっと無駄なく簡単に出来ることって、多くの業界で起きているように思います。
もちろん、ソフトウェアの受託開発の世界でも起きています。ソフトウェア開発を生業とする私たちの会社で考えたのは、昔ながらの商習慣によって様々な問題を引き起こしているのは「納品」ではないか、ということでした。
この記事ではソフトウェアにおける「納品」のもたらす問題と、私たちの会社で解決している方法「納品のない受託開発」について書きました。(自社のウェブサイト用に書いた原稿をブログにしただけなので、それっぽい表現になってます。)
目次
「納品」が引き起こしている問題
私たちソニックガーデンの受託開発では、一括委託を行っていません。ソフトウェア開発における「一括請負での受託開発」のビジネスモデルは、多くの問題を生み出してきたからです。
一括請負となると、作るべき機能を最初に決める必要が出てきます。それが要件定義です。要件定義をすると、作っている間は良いかもしれませんが、出来上がった頃に市場環境が変わってしまい、使い物にならないものが出来上がるリスクが出てきます。
しかし、一括請負で受託している開発ベンダーは、「開発する」ということだけを価値とするため、そのソフトウェアが使えるモノでも使えないモノでも関係なくなってしまいます。こうしたスタンスは、お客さまにとって嬉しい訳がありません。
そもそも、要件定義は本当にお客さまにとって必要なことなのでしょうか。お客さまが実現したいのは、そのソフトウェアを使ってビジネスをすることです。コスト削減かもしれないですし、売上の向上かもしれません。いずれにせよ、ソフトウェアを使い始めることで初めて価値が産まれるのです。
ソフトウェアを作って完成させるだけでは、価値が産まれていないどころか、投資をしている訳でマイナスからスタートする訳です。それなのに、要件定義をしなければいけないのでしょうか。
もっと早く、もっと少しずつ作ることができれば、早い段階から価値を生み出すことができるはずです。それなのに、要件定義を大事にするのは、どちらかといえば開発ベンダーの理由です。
「作ってお金を頂く」という従来のビジネスモデルを採用している限り、「作るものをしっかり決めておく」と考えるのは自然なことです。ただし、それがお客さまにとっての価値に繋がっていないことが問題なのです。
ソフトウェアで価値を生み出したいお客さまと、ソフトウェアの完成で価値が産まれる従来の開発ベンダーの関係では、お互いのゴールを共有できていなかったのです。ソフトウェアの完成がスタートか、ソフトウェアの完成がゴールなのか、大きな違いがあります。
「一括請負での受託開発」でのお客さまにとってのメリットは、要件定義さえ出来れば予算が確定でき、少なくともソフトウェアそのものを、その予算範囲内で手に入れることが出来る、ということでしょう。
つまり、完成リスクを開発ベンダーが引き受けてくれることが最大のメリットになります。
しかし、実際は要件定義という未来を予測することが難しく決まらないまま開発に入ることがあったり、結局、要件定義で決めた内容では本当の要件を満たすことができずに途中で仕様変更とそれに伴う追加費用が発生し、最終的にできあがったものも満足のいくものにはならないものの、開発ベンダーは去ってしまって、メンテナンスができなくなる、ということが起きているのではないでしょうか。
また、「一括請負」で完成リスクを開発ベンダーが引き受けるということは、それなりの金額バッファを許容するということです。従来の開発ベンダーは、起きうるリスクを積み上げて、沢山の機能を作るような提案書を書いてくるでしょう。
それは、そこがそのまま利益の源泉になるからですし、それだけのバッファを頂かなければリスクを引き受けることができないからです。そう考えると、このビジネスモデルの中で、少しずつ作るという発想は出てこないのも理解できます。
「一括請負」で使われる見積もりの単位は「人月」です。何人がどれだけ働くか、という指標で引き受けますが、これも問題があります。人月とは結局は時間契約ということになるのですが、「一括請負」ということで求められるのは「完成」することです。
絶対に完成させることを約束する際に、時間で契約するということは、担当するエンジニアに求められるのは質よりも単価の安さだけになってしまいます。そうすると、お客さまにとっては優秀なエンジニアに担当してもらうことができなくなります。
この辺りの、従来型の「一括請負の受託開発」における問題点については、以前にも書きました。
私たちは、そうした「一括請負での受託開発」で起きうる問題の原因はどこにあるかを考え、様々な問題を引き起こしている因果関係の大元に辿り着きました。その問題の根源は「納品」ではないかと考えました。
納品があるから見積もりが必要で、人月を使わなくてはいけないし、バッファが入って高くなるし、現実的でない要件定義をしなければいけないし、開発と運用の切れ目ができて人が代わって引き継ぎコストがかかるし、良いことがありません。
「納品」を無くせば、そうした様々な問題がなくなる。つまり「納品」こそが、これまでのソフトウェア受託開発で起きていた問題のセンターピンだったのです。
「納品のない受託開発」とは何か
ソニックガーデンの「納品のない受託開発」では、「オーダーメイドの受託開発」と「納品しないこと」と「派遣しないこと」の3つを両立させることを実現しました。
オーダーメイドで作るソフトウェア開発はなくなりません。すべての企業が同じソフトウェアを使うことはありえません。
もしかすると社内のシステムであれば、パッケージ型のサービスを使うことで解決するかもしれませんが、競争優位に立つためのソフトウェア、事業の付加価値となるソフトウェアであれば、他社と同じものを使うのではなく、オーダーメイドで作るはずです。
私たちは、そのオーダーメイドで作るソフトウェアを「納品しない」という形で提供するにはどうすれば良いか考えました。
その答えはシンプルで「月額定額」とすることでした。毎月の決まった金額の中で「出来る範囲」で精一杯の「開発と運用」を行います。開発と運用は分けずに、そのどちらもやりますし、私たちが出来ることは何でもします。
このスタイルは、他の業界で言えば顧問弁護士や顧問税理士のような「顧問」の形に近いと思って下さい。
月額定額で出来る範囲で何でもする、というのは、エンジニアの社員が一人いるのと同じようなことです。本当に柔軟に無駄なく良いソフトウェアを作りたいならば、エンジニアを雇用して内製するのが一番ですが、開発会社でない企業が優秀なエンジニアを採用するのは様々な面から難しいことではないでしょうか。
そこで、ソニックガーデンがお客さまの内製部隊として、ソフトウェアの最初の企画から、その開発はもちろんのこと、運用までのライフサイクルのすべてを受け持ちます。
作りきったら、どこかにいなくなるということはありません。私たちが責任をもって、ビジネスが続く限り一緒に成長させていくことをお約束します。
ただし、人材派遣ではないためお客さまのところに行って働くということはありません。ソフトウェア開発という高度な仕事を時間で縛ると生産性を落としかねないため派遣はしません。
私たちはインターネット(クラウド)を活用することで、離れた場所にいながらにしてもパートナーとして働くことが出来るのです。
そして、お客さまには顧問という形でソニックガーデンのメンバーが一人で担当しますが、その背後にはソニックガーデンという会社全体でバックアップさせて頂くことが出来るのも、クラウドを介したソフトウェアの提供を行っているからです。
この「納品のない受託開発」のスタイルでは、完成責任を請け負うことは致しません。なので、ある程度のリスクはあります。完成リスクを丸投げしたいならば、ソニックガーデンではご一緒できません。
リスクを理解した上で自らコントロールして頂くことで、圧倒的な費用対効果を実現しつつ、高いクォリティのソフトウェアを手に入れることができます。
私たちが目指す姿は、そのようなお客さまと、ずっと一緒にビジネスを成長させていけるような真のパートナーになることです。
「納品のない受託開発」で解決できること
「納品のない受託開発」というスタイルで受託開発を月額定額で行うことで、お客さまにとって多くのメリットが産まれてきます。
まず、月額定額なため「何を作るのか」要件定義を一度にしなくてよくなります。これまで要件を決めようとしても決まらなかったのは、そもそも未来を予測して要件を決めるという行為が難しいものだったからです。
特に、新規事業やスタートアップでソフトウェアを作る場合、要件定義など出来る訳がありません。市場にあわせて作り直していく必要があるからです。
これを解決するのは、1〜2週間分ずつ位の単位で作りたいものを決めて、それが出来上がってきたものを見て、また次に作りたいものを決めていくというやり方です。
従来の受託開発では、それをしようとすると、見積もりの手間がかかり、小出しにすることで割高になってしまっていましたが、「納品のない受託開発」では月額定額にすることで問題なく実現できるのです。
また月額定額ということで、仕様の変更や優先順位の変更に柔軟に対応できます。これも従来であれば追加費用か瑕疵担保の範囲かで揉めることもあったかと思いますが、「納品のない受託開発」であれば、仕様変更も優先順位の変更もウェルカムです。
月額定額の中で出来るところまで対応し、出来ない分は翌月以降に持ち越しになるだけです。
このようなことが出来る「納品のない受託開発」で解決できるソフトウェア開発とは、決まりきった要件を一定期間に作り上げるようなニーズではなく、要件を柔軟に変更しながらずっと成長させ続けたいというようなニーズに応えられるソリューションだということです。
【向いていない】
- 要件と納期が確定しており変化しない
- 短期的に一度に開発してリリースしてしまいたい
- 目指すのは「ソフトウェアの完成」である
【向いている】
- 要件の予測が困難で日々変化していく
- 長期的に開発を続けてサービスを育てていきたい
- 目指すのは「ビジネスの成長」である
例えばこれで主に喜んで頂けるのは、スタートアップや新規事業におけるソフトウェア開発です。スタートアップや新規事業において新しいソフトウェアを生み出したいというときは、以下の4つのポイントが求められます。
- スピード重視 ・・・初期ユーザを獲得するため早期に市場に出したい
- フィードバック ・・・開始後に出るニーズや得た経験を反映していきたい
- スモールスタート ・・・事業初期にかかる初期投資額はなるべく下げたい
- スケールアウト ・・・事業が軌道に乗るに従いKPIに応じた拡大をしたい
特に新規事業を立ち上げる際に重要なのは、一度で成功することはないので、トライ&エラーで間違いを許容しつつソフトウェア開発をしていける関係が必要になります。「納品のない受託開発」で目指すパートナーシップは、まさしくそれに応える形になっています。
また、スタートアップの方々にとってのメリットとして、月額定額での支払いが基本になっているため、契約の際の与信チェックがいりません。これまでの実績や会社規模にかかわらず、私たちはお手伝いさせて頂きます。
「納品のない受託開発」のコンセプト
私たちの受託開発の根底にあるコンセプトは「お客さまに無駄遣いして欲しくない」という思いです。そのためには、本当に必要な機能を、本当に必要な順番に、少しずつ開発をしていくことが大事になります。
一度に作りきるのではなく、少しずつ作っていくために、私たちは月額定額で受託開発をすることにしました。納めて終わりの関係ではなく、最初から最後まで担当し、お客さまの一員としてビジネスの成長に貢献します。
それが「納品のない受託開発」で実現する「ソフトウェアパートナーシップモデル」です。