【思想】ソフトウェア開発を外注すべき場合


導入

今回は、ソフトウェア開発の外注についてです。

外注とは委託とも言います。委任契約、請負契約を使い、自分が欲しいソフトを自分で作らずに、誰か(団体含む。)に代わりに開発してもらうことです。

私は、事業(問題集アプリの開発)を真剣に考え出してから、外注に対する考え方が変わりました。

今回はそのお話をさせていただきます。

何故、人を頼るの?

私は問題集アプリの開発を外注しようとしていました。当然ですが、外注するのはプログラミングの部分だけです。作問はすべて私が行いますし、これは私にしかできない仕事です。(誤植のチェックのために合格者を雇うなら有り得ます。)

契約の形はどうであれ、プログラミングの部分は誰かに頼みたいと考えていました。

そうやって人に相談しまくっていたのですが、なかなか仕事が進みません。

そんな中、指摘されたのがこれです。

相談する前に自分で作れ。どうしても分からないところだけ人に訊け。それなら協力してもらえる。

確かにおっしゃる通りです。IT事業が作り出す本質的価値は技術力であるはずです。言い換えるならIT事業だと言えるためには技術力を売り物にしなければなりません。IT事業をスタートアップさせる際に、技術力を外注するとしたら、事業計画が破綻しています。

IT事業の場合、営業を外注することは可能です。フリーランスのITエンジニアが使う方法ですが、営業代行会社に登録し、仕事を紹介してもらい、仲介料を支払うという方式です。

自分の行動に、自分でも前々から違和感を感じていました。そこで自分の事業計画を見直してみました。

そもそもIT事業とは

IT事業には、ほぼ次の2つのパターンしかありません。

  1. 新規性のあるアイディアを考え出し、技術力を振るって、プロダクトなり、Web サービスなりの形にして売ることで利益を出す。
  2. 困っている人を見つけ出し、(見つけ出すのは営業担当者が行っても良い。)困っている人を技術力で助け、報酬を貰うことで利益を出す。

1 は Microsoft, Googole 等が該当します。

2 は 受託開発と呼ばれ、日本の多くのIT企業が該当します。(いわゆる SIer のこと。)

私が事業を始めると聞いたとき、私の周りの人は次のどちらかだと思ったはずです。

  • 新規性のあるアイディアを考え出したのだろう。
  • 営業マンの相棒が見つかったから、受託開発を始めるんだろう。

事業計画の見直し

私の周りの人は、私の事業が 1 だと思っていました。また、私もそう思っていました。いえ、正確には思い込んでいました。

事業計画(事業計画書と呼べるほどかっちりしたもは作成しておりません。)を見直したところ、次のことが分かりました。

  • 事業計画の中にプログラミングを要するタスクが存在する。
  • 私はITエンジニアであるため、プログラミングを自力で行うことができる。

1 に見えますが、よく考えるとそうではないことがわかったのです。何故なら、私のプロダクトのアイディアには新規性が無く、技術力が本質的価値を創り出していないからです。

問題集を作るということには新規性がありません。問題集は既に存在するので、自分の受験センスを生かしながら、より個性的で品質の高い問題集を作ろうとしているだけです。

問題集をスマホアプリで出すということには新規性がありますが、新規性としては弱いのです。

  • そもそも、資格試験教材は受験生を合格させるためにある。問題集の品質が合格者を輩出させるに足るものでない場合は、プロダクトに存在意義が無く、新規性の前提がない。
  • 予備校が、スマホで動作する問題集を開発し、公開する可能性が有る。そうすれば新規性は意味を成さなくなる。

また、問題集の開発はプログラミングの難易度が低くなります。

つまり、私の事業が創り出す本質的価値とは、問題集の品質であり、技術力ではないのです。

従って、前提に誤りがあります。私の事業は、そもそもIT事業ではないという結論に達しました。この前提を、私自身も周りの人も思い違いしていたのだと思います。

ラーメン屋さんの喩え

ラーメン屋さんが店を開く場合、その事業が作り出す本質的価値は「美味しいラーメンを作ること」です。

しかし、お店の宣伝が必要です。店のホームページは最低でも必要でしょう。

そこで、ラーメン屋さんが自分でホームページを作らなければならない、という状況を想像してください。

「HTML と CSS と JavaScript を覚えてください。」

ラーメン屋さんが、元 Web デザイナやITエンジニアならやってしまうかもしれません。そうではなく、しかも店を出す前にホームページが必要だとした場合、まず心が折れてしまいます。仮に勉強すれば自力でできるとしても、どれほど時間がかかるか見積もることさえできません。そんなのやってられるか!

だから外注するわけです。

もう少し付言すると、私のやろうとしていることもラーメン屋さんに近いかもしれません。

ラーメン屋さん自体に「新規性」はありません。どこにでもありふれています。にもかかわらず、本質的価値を創り出すことができます。

  • 個性のある味を創り出したい。
  • 既存のものよりも美味しいものを作りたい。

この2点では、私のやろうとしていることも全く同じです。

  • 個性のある問題集を創り出したい。
  • 既存のものよりも品質の高い問題集を作りたい。

アプリを作る意味

それなら電子書籍で出せばいいじゃんと考えた方、半分正しいです。しかし、電子書籍をプラットフォームに採用したくありません。理由は次の通り。

  • 電子書籍はデータ構造を持つことが出来ない。例えば、問題と解答でフォントを別にしたくなった、という場合に手間がかかる。(もっともこれは Word のアウトライン機能を使いこなすか、問題集のデータを XML にしておいて C# から Word のマクロを操れば実現可能です。)
  • アプリだからこそできる機能も欲しい。(ここは僅かながら新規性が有る部分なので、模倣される懸念があります。そのため詳しくは書けません。)
  • 販売戦略上、アプリの方が有利との見積りがある。

私の置かれている状況

まさにラーメン屋さんと同じですね…

既に述べた通りです。

  • 私の事業が創り出す本質的価値とは、問題集の品質であり、技術力ではない。
  • プログラミングを要するタスクが存在するが、私はITエンジニアであるため、「たまたま」プログラミングを自力で行うことができる。

アプリの開発は確かにやろうと思えばできます。しかし、スマホアプリの開発は未経験です。技術的に難しくないとはいえ、新しい技術を学習する必要があります。これが3カ月程度かかると見積もっています。しかも、最短3カ月の見積もりであり、実際には試行錯誤が入るかもしれません。そうなるといつ完成するかもわかりません。

そんなのやってられるか!

モチベーション、ダダ落ち。(´・ω・`)

そんなことを考えていて気付いたのですが、本質的価値を創り出さない仕事には「名前」がありました。こういう仕事を「経費を削減する。」と言います。

今の私が、プログラミングをしたところで本質的価値を創り出したことになりません、経費を削減しただけに過ぎません。

だから、いざプログラミングをやるとなると二の足を踏んでしまい、手が動かなくなるのです。ITエンジニアの職に就いていた頃は、まさか自分がこういう感覚になるとは想像もしていませんでした。

ここでもたついていると、(いるのかどうかわかりませんが)私の Web サイトのファン(せっかくのお客さま)が離れていってしまいます。

営業の重要性

上記の性質も考えると、私の仕事は「営業」が本質的価値を創り出しているとも言えます。私は直接誰かとお会いして営業をしているわけではありません。しかし、Web サイトを更新し、自分を売り込む活動は間違いなく「営業」だと言えるでしょう。

そして、私の営業の仕方には「新規性」もあります。

正面から戦えば、大手予備校のブランド力に負けてしまいます。そこで、大手予備校に対抗するため、独学一発合格と言う事実を前面に出し、どこの予備校にも所属せずにフリーランスとして活動しながら「独学」を推すことで、「独学」と言う別軸のブランドを確立しようとしているのです。言い換えるならば、業界構造をハッキングした営業スタイルです。

このように、前提に思い違いがあったことが分かれば、今までと違うモノがたくさん見えてきます。

今こそ外注すべきとき!

今まで、私はITエンジニアだったのですから、プログラミングをすることで本質的価値を創り出してきました。

しかし、それは過去の事実に過ぎません。今の仕事に全力で打ち込まなければなりません。本気で事業をやるのであれば、高い費用を支払ってでも外注するという決断が必要だと思います。

まさに、私がやろうとしていることは「事業」だと実感した瞬間でした。事業をやるのなら何らかのリスクを背負わなければなりません。それが本気になるということです。

今まで、私は自分のアイディアを形にしようとして、プログラミングをしたことが何度かありました。事業にすることを狙ったものですが、いずれも挫折してしまいました。どこか本気じゃなかったのでしょう。言い換えるならば、それらは事業の真似事に過ぎなかったことになります。

今まで、私はITエンジニアでしたが、今は違います。私はITエンジニアに対して「客」の立場になりました。

この記事では詳しく書きませんが、客の立場になると本当に世界の見え方が変わります。ITエンジニアは客の立場に立って考えるべきと言われます。しかし、今の私は違います。リアルに客の立場に成りました。

結論

ソフトウェア開発を外注すべき場合とは、プログラミングが本質的価値を創り出さない場合です。

経費を削減する行為に過ぎない場合は外注しましょう。

ただ、この記事では詳しく書きませんが、IT業界には信用できない企業も多く、どこに外注するのかは慎重に選んだ方が良いと思います。

プログラミングが外注できないほど、新規性があり、技術的難易度の高い物であれば、それは本質的価値を創り出しています。その場合は外注してはいけません。IT事業に該当しています。

自らの事業がIT事業に該当した場合は、次のいずれかの方法を取るべきです。

  • 自らプログラミングを勉強し、自らプログラミングを行う。
  • 誰か(団体含む。)に出資してもらい、ITエンジニアを雇う。

とはいうものの…

私は外注先が見つかりませんでした。

元職場に相談したのですが、多忙なので、個人契約して副業してくれる人物すらいないだろうとのこと。

結局、自分でプログラミングするしかありません。

(前の記事に書いた Mac パソコンは、外注する場合でも必要になるので、いずれにしても Mac パソコンは必要な投資でした。)

アプリのリリースに時間がかかるかもしれませんが、開発状況は出来るだけ報告させていただきます。気長にお待ちいただければと思います。


コメントを残す

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

CAPTCHA