2020年5月末頃、少し話題になっていた、ブログ「GraphQLやめました」。
ブログ「GraphQLやめました」への感想は、みなさん色々と思うことはあると思います。
個人的に思ったのは、「無事、新サービスをリリースできたので、この会社にとっては成功だったんだな!」です。
このブログには、新規事業のあるあるが詰まっていると、僕は感じています。
そして、この記事を読んだことをきっかけに、僕が新規事業を苦手としていた理由が、明確になったので、そのことをブログに記します。
僕の新規事業の経験
僕が、新規事業に直接携わったことが、過去に2回あります。
(他に1度あるのですが、運用フェーズからで、話の本筋から外れるので、今回は、横に置いておきます。)
世の中的には、失敗した、と言えます。
1度目の経験では、そもそも世にリリースできませんでした。
2度目の経験では、リリースはしましたが、一ヶ月ほどでクローズとなりました。
こういった経験から、僕は、新規事業のことを苦手と感じていました。
新規事業への期待〜ビジネスサイド編〜
ブログ「GraphQLやめました」にも書いてありますが、受託開発や準委任契約でエンジニア派遣をしている会社が、自社サービス開発に取り組み始めるのは、よくある話だと個人的に感じています。
受託や準委任だと、他の会社で仕事があることが前提のビジネスですし、ビジネス的にもスケーリングしづらいです。
それなら、自社サービスを作って、世の中に貢献して、会社の規模も大きくして、社員の給料も増えてという、良い循環を目指すのは、ビジネス的な狙いとしては当然あると思います。
すでに存在している企業が、新規事業を始める理由は、大きくまとめると、以下だと、個人的に考えています。
ビジネスの第2、第3の柱を作って、多角化を図り、経営を安定させる。
1つのビジネス分野だけだと、その分野での動向に左右されてしまいます。加えて、衰退するビジネス分野の場合、会社の存続すら危うくなります。
そのためにビジネス側は色々と考えます。
- 新規の顧客を獲得しよう!10万人は目指したい!
- 顧客単価を高めれる仕組みを導入しよう!月額1000円も可能だけど、月額3000円も可能な仕組みにしたい!
- 他社にはない独自のサービスを作ろう!時代の流れはAIだから、AIを売りにしたい!
などと考えます。
もちろん、新規事業なので何を考えてもOKです。
しかし、何を考えてもOKだからこそ、ビジネスサイドが今までの既存事業でできなかった、アイデアを沢山詰め込もうとしてしまうのです。
「この新規事業が成功すれば!」という期待が先行し、企画ばかりが膨らんでいきます。
新規事業への期待〜エンジニアサイド編〜
エンジニアも、新規事業に関わるときに期待することがあります。
既存システムで利用しているレガシーな技術とはおさらばして、世の中で先進的と言われる技術に取り組むぞ!
新規事業であれば、既存システムの技術にとらわれることなく、1から技術選定を行うことができます。
そのため、新しいプログラミング言語、フレームワーク、設計手法などを試そうとすることができます。
- 新しい言語にチャレンジしたいので、Goを採用しよう!
- Restful APIではなく、GraphQLが流行っているので、使ってみたい!
- 将来大量データを扱いたいので、RDBではなくNoSQLを使おう。
などです。
エンジニアとして、新しい技術にチャレンジしたいと思うことは当然だと思います。
国内に事例は少なくても、「自分たちがその事例になってやるぞ!」という前向きな気持ちで取り組むこともあるでしょう。
夢を詰め込んだ先にある不確実性
上述の通り、新規事業に対して、ビジネスサイド、エンジニアサイドともに、新たな挑戦をしようと、取り組みます。
もちろん、挑戦すること自体は、非常に素晴らしいことです。
しかし、その先に待っているのは、不確実な状況の百鬼夜行です。
新規事業は、そもそもの成功率が5%とも言える世界です。
ビジネス的に、そもそも成功率が低いにも関わらず、新技術に取り組むという不確実性を高める行為は、悪手だと考えています。
そのため、成功する確率が低い事業に、出来るかどうか分からない技術で取り組んでしまう。
その結果、そもそも何も作れなくて、新規事業自体が失敗してしまうケースが出てきてしまうのです。
僕が、新規事業に対して苦手と感じていたのは、この不確実なことを容易に積み上げてしまう状況だったのです。
不確実性に立ち向かうための新規事業
では、新規事業は、どのように取り組めばいいのか?
それは、出来る限り不確実性を減らすということです。
もちろん、ビジネス、資本主義の世界で、確実に成果を出せるサービスやプロダクトを作るということはできないと思います。
だからこそ、不確実性を高めることを出来る限り減らすことが重要だと考えています。
不確実性を減らす一例としては、以下です。
- ビジネスサイドは、企画やプロトタイプの段階で、購入したいユーザーを見つける
- 数年後の大量ユーザーではなく、α版・β版を利用してくれる数人のユーザーに対してアプローチする
- 既存の技術を利用し、エンジニアの学習コストを減らす
エンジニアからすると、せっかく新技術を利用できるチャンスを見逃すことになるとは思います。
もちろん、どうしても利用したいのであれば、その技術を新規事業が開始するまでに、学習し身につけておくと良いと思います。
エンジニアが新技術に取り組むタイミング
新規事業がうまく立ち上がり世に広まった後、以下のような問題が現れると思います。
- ユーザー数が増え、データ大量になり、RDBでは耐えられなくなる
- 開発人数が多くなり、型がないために、チーム間での齟齬が大きくなる
などです。
こういった状況が発生したときこそ、新技術導入のタイミングだと、僕は考えています。
これらの問題はビジネス側で解決する問題ではありません。
また、事業として、うまく立ち上がっているのであれば、エンジニアサイドに回せるお金もたくさんあるでしょう。
新技術の分野ですでにエキスパートな方をチームに招聘するなどを行うことで、技術刷新をしやすい状況を作り出せると思います。
おわりに
たまたま、ブログ「GraphQLやめました」に出会い、自分の中で新規事業が苦手と感じていたことに対して、向き合ったことで、「そもそも新規事業自体が苦手ではない」ことに気づくことができました。
僕が苦手だったのは、不確実な状況を積み重ねることであって、新規事業そのものではありませんでした。
といっても、新規事業には、多くの人の夢が詰め込まれる傾向にはあると感じています。
次、新規事業に携わる際には、いい感じにできるといいな!