自分でソフトウェアを開発することのメリットについて

今回はそれを自分で開発することのメリットについて、私の考えを述べたいと思います。

自分たちの会社がソフトウェアメーカーでない場合、小規模なソフトウェアは、自分で開発すべきです。なぜなら小規模なソフトウェアの開発は、外部に委託して作成するよりも、下記のような多くのメリットがあるからです。

メリット1:自分が本当に必要なものが手に入る
メリット2:上層部の理解を得る必要がない
メリット3:最短でその日のうちに手に入る

なお、中規模以上のものは開発も保守も大変なので、素直にパッケージ品を買うか、外注しましょう。

メリット1:自分が本当に必要なものが手に入る

意外に思われるかもしれませんが、ソフトウェア開発を外部に委託した場合、100%思い通りのものが出来上がることは、まずありません。これはソフトウェア開発を委託する人が、実際に使用する人でない場合に特に顕著になります。

例えば、情報システム関連部署の人が、外部にソフトウェア開発を委託するケースでは、情報システム関連部署の人が、現場の仕事を100%理解していることは、まずありません。その為、どのようなソフトウェアがが必要かは、会議などのディスカッションによって抽出され、これがユーザー要求仕様書(URS)という文書に纏められます。この時の調査は、どのような機能があれば現状の仕事をパソコンで行えるかを確認することが手一杯で、現場の人間が負担に思っている部分、すなわち一番時間が掛かっている部分や、一番間違えやすい部分に関することは、積極的に抽出されません。なぜなら、情報システム関連部署の人も、時間がないからです。そうすると出来上がるソフトウェアは、一応仕事をするために使うことはできますが、その使い勝手は悪く、現場の人間が使うには非常に負担の掛かる仕様になっていることが多くあります。

現場の仕事を熟知した人が開発を依頼した場合はどうでしょう?残念ながら、この場合も、多くは上手くいきません。現場の仕事を熟知している人は仕事柄、IT関連の知識が乏しいことが多く、ソフトウェアにどんなことができるのかや、完成するソフトウェアがどのようなものになるかをイメージすることが出来ません。そのため、自分たちの要求を正確に伝えられません。

では、現場の仕事を熟知した人がIT系の知識にも強い場合はどうでしょう?この場合、自分たちの要求を正確に外注先に伝えられるでしょう。しかしそれでも、最後の関門があります。自分たちの要求を正確に伝えたとしても、外注先の人達が正確に理解してくれるとは限りません。外注先の専門分野はソフトウェア開発なので、自分たちの仕事をイメージすることが難しいのです。もちろん、相手もプロですから、顧客の要求を理解するために様々な努力をしますが、それでも100%の理解に届くことは稀でしょう。

これに対して自分でソフトウェアを作った場合、自分たちが一番改善して欲しい部分を自分で実装することができるため、技術と発想さえ伴えば、自分たちの仕事を自動化、または効率化することができます。また、実際に使用してみて、現状にと合わない部分や改善できる部分を修正させていくこともできます。更に、仕事のやり方は日々変化していきますが、この変化にあわせてソフトウェアも更新することができます。これを外部に委託すると、細かい使い勝手の悪さは我慢させられ、ソフトウェアの機能を変更できないため仕事の改善提案も実現不可能になってしまうケースもあります。

メリット2:上層部の理解を得る必要がない

ソフトウェア開発を外部に委託する場合、最も困難なのは、おそらく予算取りでしょう。会社のお金を使用してソフトウェアを開発するのですから、まずは直属の上司の理解を得る必要があります。次に経営陣にこの話を理解してもらい、お金を出してもらわなければ、ソフトウェア開発を発注することはできません。上司であれば現場の仕事を理解しているため、会社によってはそれほど苦労しない場合もあるでしょう。しかし経営陣に理解してもらうためには、明確な対費用効果を説明する必要があります。これは単純に面倒です。特に、経営陣がIT技術に対して理解がない場合、ソフトウェアというだけで稟議が下りない場合もあるでしょう。これに対して自分で開発する場合は、自分が必要だと思えばすぐに開発に着手できます。予算取りで苦労をしたことがある人や、そもそも予算取りの権限がない人にとっては、最大のメリットかもしれません。

メリット3:最短で手に入る

ソフトウェア開発を外部に委託する場合、納期はどれだけ短くても、数ヶ月はかかるでしょう。しかし自分で開発すれば、極小のソフトウェアであれば、その日のうちに手に入ります。また、理想とするソフトウェアが完全に出来上がらなくても、開発中の機能を使用することができます。特にソフトウェア開発は、中核的な機能の実装にはそれほど時間はかからず、むしろ、ユーザーインターフェース(ユーザーが操作する部分)の開発に時間が掛かることも、間々あります。そのため、中核的な部分が出来上がったら、自分だけはその機能を利用して業務を効率的に進めることができます。

デメリット

メリットばかり述べたので、逆にデメリットについても述べておきます。ソフトウェアを自分で開発するデメリットは、開発に必要な知識と時間が必要なことと、計算ミスなのバグによって不利益が生じた場合、その責任は自分に降りかかってくることくらいです。開発に必要な時間に関しては、ソフトウェアが完成した時に得られる時間を考えれば、簡単に取り戻せるでしょう。知識に関しては各々に頑張ってもらうしかありません。不利益が生じた場合の責任については、そのようなクリティカルな業務を処理するソフトウェアは、それこそ外注に出してしまえば良いだけです。

まとめ

小規模のソフトウェアは自分で開発しましょう。その方が、理想的なものを、誰にも邪魔されず、最短で手に入れることができます。ただし、中規模以上、またはクリティカルな業務に使用するソフトウェアは、素直に外注しましょう。

雑記

Posted by 黒箱