見出し画像

自社サービス派?受託開発派?

どうも、Q太郎です。今回はフリーランスエンジニアにも関係あるんですが、自社サービスと受託開発のどちらがいいか?という視点をQ太郎目線で語っていきます。

ちなみに私は今でもフリーランスエンジニアとして、エンドクライアントと直接受託開発の案件を受けております。
また、新卒から数年は受託開発が盛んなそこそこ大きな会社で受託開発で働いていました。

結論: 圧倒的に自社サービスがいい

理由を説明してきますね。

受託開発企業の構造

受託開発企業は所謂人月商売というものになります。
100万円 * 10人月の1000万円が原価の開発プロジェクトを、期限までに1500万円で納品するという形になります。

まず初めてにクライアントと何を作るのか?というのをしっかりと握る必要があります。
そのために要件定義書や外部設計書を書き、顧客のイメージをドキュメント化していきます。そして、出来上がった設計書に従って、プログラムを書いていく仕事です。

エンジニアとして関わると、テストをしたり、プログラムを書いたり、インフラを構築したり、ドキュメントを書いたり、先方のヒヤリングをしたり、と様々な工程に関われます。
もしあなたが全ての工程をマスターしたら、どうなるでしょう??

要件定義をし、設計をし、プログラムを書き、テストをし、インフラを構築し、納品する。これを全てこなせるようになったら、ひたすら同じことを繰り返します。
Webアプリケーションの場合は多少の違いはありますが、所詮数ヶ月から数年で作れる10億円未満のプロジェクトは、同じことの繰り返しです。

そんなことでは特別なドメインの業務要件をマスターすることすらできないでしょう。

自社サービス開発企業の構造

基本的にすでに自社サービスが開発されているため、広告や顧客の基盤があるビジネスの場合が多いはずです。
そのサービスで次に作るのは追加開発です。追加開発の困った側面は既存のコードを読み解く必要があるということです。また自社サービスの場合は設計書というものを書かないことが多いです。書いていたとしても、すぐに変わってしまっていることが多いです。(最近のいけてる開発スタイルでは最低限のドキュメントは残っています)

追加開発ということはログイン画面をもう一度作ったりすることは稀です。ある企業との連携の機能が必要だったり、ユーザーの利便性を向上するために機能を追加する必要があるようなイメージです。

自社サービスの開発は似たようなものばかり開発するというゲームになりません。少しずつ違うどんどん難しい機能を実装していかなくてはなりません。メガベンチャーの自社サービスでは大量データを生かした機械学習などの仕事に携わることもできるかもしれません。

また巨大化したサービスを分割して、マイクロサービスにサービス分割に取り組んでいるかもしれません。マイクロサービスを作るには分散サービスで気をつけるべきポイントなどが学べます。

大きなSIerやWeb受託開発会社でなければ、ここまで踏み込んだ開発に参画できることはないでしょう。

受託開発と自社開発のマインドの大きな違い

だったら、まずは受託開発で修行して、その後、自社サービスで開発をすればいいや!と思った人もいるかもしれません。
それはその通りなのですが、一つだけ注意点を。

受託と自社サービスでは全くマインドが異なります。自社サービスは自分で自社のサービスを解決していく視点が求められます。受託開発ではその答えは基本的に要求として、コンサルタントや顧客が用意してくれます。
この要求を覆すような提案はエンジニアには求められていませんし、それ自体が設計フェーズが終わった実装段階では足手纏いです。
一方、自社開発ではエンジニアが矛盾に気づくことも仕事の一つです。

前者で上手く働けたらからと言って、後者の働き方で上手くいくとは限りません。
個人的には若い頭が柔軟なうちに自社開発の精神とマインドを身につけて、開発に自信をつけてから受託開発の精神を学ぶのも悪くないと思います。

最後に

今回のnoteはフリーランスに限定した話ではなく、エンジニアのキャリア選択の話でした。
このような感じで、tipsをどんどん発信していますので、もしよかったらTwitterも覗いてみてください。

この記事が気に入ったらサポートをしてみませんか?