今回は、スタートアップ企業などwebサービスを運営している会社がなぜみんな自社内製しているのか?なんで外注していないのかについて話していきます。
スタートアップのほとんどは内製
今回、ITスタートアップを下記の定義でします。実際には違うのでここでの定義になります。
- webサービスが事業の中核
- 開発を常に行う必要がある
このITスタートアップの場合、大体内製で自社のエンジニアが開発していると思います。もちろん初期は開発会社に依頼してその後大きくなったらという会社もいると思いますが、大きくなっているところはかなりの割合自社で開発しているんじゃないでしょうか?
内製と外注の違い
なぜみんな自社で開発するかというと自社で開発する方が下記のメリットがあるからです。
- エンジニアにドメイン知識を貯めてもらいやすい
- 毎回交渉しなくていい
- 値段を上げられるリスクを減らせる
上記は正確にいうと内製と外注の違いというよりも個人と長期的、かつフルコミットで関わっているかになります。逆に業務委託であって正社員でなくても長期的にフルコミットで関わってくれれば同じです。
ただ、多くの場合、業務委託契約だといつ切られるかわからないのでエンジニア側としてはいつでも他に移れるようにする力学が働くのと念の為他の案件も副業したりするでしょう。逆に正社員だとそのリスクが多少減るので長期的になりやすいというのはあると思います。
なぜエンジニアにドメイン知識を貯めてもらいたいのか?
メリットで挙げた「エンジニアにドメイン知識を貯めてもらいやすい」ですが、そもそもなんでエンジニアにドメイン知識を貯めてもらいたいの?と疑問に思った方もいるはず。その理由について解説していきます。
まず、ドメイン知識というのはここでは事業についての知識になります。ビジネスモデルやユーザーの特性などですね。この辺の知識なくても開発はできるんじゃない?プログラミングの知識さえあれば大丈夫でしょ?と思うかもしれませんが、webサービスの開発というのはプログラミングの知識というよりもどうその事業、ユーザーの課題を技術で解決するかというものになります。つまり、ドメイン知識がないと問題文が読めない状態なのです。
もちろんPdMやクライアント側がその辺を定義するのですが、開発していく中で細かい判断が生じる場合があります。例えば裏っ側のデータの持ち方を将来内のユーザーはこういうパターンでるからこういうDB設計にした方がいいなとかです。
こういった裏側の設計は逆にPdMやビジネス側が全て読んで指示を出すのは難しいです。というより無理と考えた方がいいです。
こういう開発時の細かい判断の精度はドメイン知識をエンジニア自身が持っているかに依拠します。そのため長期にコミットしてもらい、事業内容を知ってもらう必要があるのです。
外注にした際の交渉リスク
次に毎回交渉しなくていいというのがあります。外注だと常に条件交渉のリスクがあります。これは逆にリソース量の調整がしやすいというメリットでもあるのですが、エンジニアがいなくなってwebサービス運営が立ち行かなくなるというリスクでもあります。
良くも悪くも正社員と比べて外注、業務委託はお互い契約がいつ切れるかわからないのです。
これを避けるために開発会社一社に窓口を絞るのではなく、個別に複数のエンジニアを入れ、誰かが抜けてもwebサービスを運営できる体制を整えるべきです。内製化すると自然と会社と個人が契約するのでこの形になりますが、外注の場合、意識しないとどこかに依存した形になりやすいです。
もし、複数人に依頼するほどの依頼内容でない場合は、airteamなどで数万でレビューだけ依頼する形にするとその人、その会社しか触れないという状況を避けられます。
外注だとなぜアジャイルになりにくいのか?
外注の際に最も気をつけるべきなのは契約形態で請負契約で依頼するのは避けた方がいいです。というのも請負契約だとその性質上アジャイルになりにくいからです。
そもそもなぜアジャイルにする必要があるのか?
アジャイルになりにくいという話の前になんでアジャイルにする必要があるのかという話をします。そもそもアジャイルというのは下記の特性を持ったものです。
- ドキュメントなどは最小限にし、コードでコミュニケーションをしよう
- 事前の計画を最小限にし、短い期間で振り返りをすることでリスクを回避しよう
これは同じものを何個も作るのではなく、新しいものを作る際に有効な手で新しいものを作る際には作ってみないとわからないことが非常に多いです。
特にIT技術は常に変わっていっているので作ってみて、意外とうまくいかなかったり、もっといい方法が見つかったりします。正直読めないのです。
そのためアジャイルという思想が生まれました。もう作らないと分からないので作ってから話すようにしようぜというものになります。
ITスタートアップの場合、この世にないものを作るのがほとんどのためこのアジャイルでないとうまくものを作れないのです。
請負契約は事前計画が必須
ではなぜ請負契約だとアジャイル開発が難しいかでいうと請負契約は納品物に対して、見積し、支払う契約です。つまり何を作るかを決めないと見積もれないし、契約できないのです。つまり、後から決めようのアジャイルと反するのです。
そのためアジャイル開発をしたい場合は請負契約ではなく、時間に対して支払う準委任契約の方があっています。
まとめ
まとめるとITスタートアップは
- アジャイル開発で仕様変更に強い方がいい
- エンジニアのドメイン知識が重要
- 窓口一本化によって依存度が高まるのを回避
以上の理由から外注よりも内製化の方がいいですし、多いです。しかし、前述したように正確にいうと長期的かつ、フルコミットかどうかになります。比較的正社員の方がこの傾向が強いですが、業務委託でもこの関係性を作れれば、問題ないと思います。