見出し画像

結局、自社開発と受託開発はどちらがいいのか?


はじめに

こんにちは!

ネットでよく話題になる自社開発 vs 受託開発ですが、偏った意見や間違っているなと思う意見もしばしば見られます。

なので今回は自社開発 vs 受託開発に関して、実際に経験したエンジニアの観点から意見を書いていこう思いますので、参考になればと思います。

結局、自社開発と受託開発はどちらがいいのか?

結論としては、当然ではありますがどちらもメリット、デメリットがあるということになります。

それぞれにどのようなメリット、デメリットがあるのかを書いていきますので、どちらが自分にあっているのかは、各々で判断して頂ければと思います。

注意して頂きたいのは、基本的には僕が経験した企業でのメリット、デメリットであるため全部がこれに当てはまるとは限らないということです。


※知り合いから聞いた情報等も含んでいます。
※どちらにも言えるようなメリット、デメリットは除外しています。

また見る人の立場や状況によっては、メリットがデメリットになってしまったり、その逆もありえます。

そこらへんは自身の状況に合わせて見てもらえればと思います。


自社開発のメリット・デメリット

僕が考える自社開発のメリット・デメリットは以下になります。

メリット
・納期が緩いところが多い
・テストを書く習慣があるところが多い
・CI/CD環境が構築されているところが多い
・スクラムなどのアジャイル開発が採用されているところが多い


デメリット
・改修の業務が多い


それではメリットを一個ずつ見ていきます。


・納期が緩いところが多い

自社開発なので割と納期がざっくりしていて緩いというところが多い印象です。

またアジャイルで進めているような、開発環境もモダンでエンジニアファーストのような感じのところは、絶対的な納期は明確に決まっていないことも多くあると思います。

様々な要因から、ある程度開発に遅れが生じるのは当然という考えをもっているところは、残業も少なく、働きやすい環境である場合が多いと思います。


・テストを書く習慣があるところが多い

自社のサービスをグロースしていく上で、品質の担保だけでなく、頻繁に発生する仕様変更、リファクタリングでの改善などが自社開発では多くあります。

そのためテストを書くことがほぼ必須に近い状態なので、開発とセットで義務化されているところも多いと思います。

単体テストだけでなく、サービスのコアな部分はE2Eテストも必須だったり、テストのガイドラインを設けているところもあると思います。


・CI/CD環境が構築されているところが多い

こちらも上記のテスト同様に自社サービスをグロースしていく上で、ビルド、テスト、デプロイなど頻繁に発生する作業があります。

これらの作業をCI/CD環境で自動化することで、エンジニアの業務を効率化している自社開発企業は多いと思います。


・スクラムなどのアジャイル開発が採用されているところが多い

開発の手法は色々ありますが、メガベンチャー系やテックカンパニーのようなエンジニアのレベルが高い企業では、スクラム開発を採用している企業が多い印象です。

エンジニアとしてもやりやすい環境になっていることが多いと思います。


今度はデメリットについて確認していきます!


・改修の業務が多い

唯一思い付いたデメリットになりますが、エンジニアとしてはかなり大きな選定基準になるのではないでしょうか?

全くの1から物を作り上げていく新規開発と比べるとやっぱり地味なものが多いですし、経験が浅いうちは、やっぱ新規開発の方が得られる経験値は大きいのではないかと感じます。


受託開発のメリット・デメリット


僕が考える受託開発のメリット・デメリットは以下になります。

メリット
・1からの新規開発が多い
・色々なプロジェクトに触れられる
・アジャイル的な進め方もあるが、ウォーターフォール的な進め方もある


デメリット
・納期が厳しかったりすることが多い
・テストを書かないプロジェクトが多い
・CI/CD環境がないことがほとんど


それではメリットを一個ずつ確認していきます。


・1からの新規開発が多い

こちらは自社開発のデメリットでも紹介した通り、新規開発が多い点は、経験が浅いうちはより多くの経験値を詰めるのではないかと思います。

ある程度の経験を積んでくると、小規模なプロジェクトであれば、設計、インフラ、開発など一通りの作業を一人で対応させて貰ったりすることもあります。

そのためシステム開発に必要な経験を一通り得ることができるのも利点であると思います。


・色々なプロジェクトに触れられる

受託開発のメリットとしては、こちらもかなり大きいと思います。

プロジェクト単位で仕事を進めるため、そのプロジェクトの新規開発が終わったらまた別のプロジェクトの新規開発をするというように、一定のスパンで色々なプロジェクトに触れることができます。

またプロジェクトで使用する言語やフレームワーク、開発環境など様々なものに触れることができます。

そのため自社開発で決まった言語しか使わないような現場と比べると、自分自身の可能性や市場価値を大きく上げることができるので、魅力的であると思います。


・アジャイル的な進め方もあるが、ウォーターフォール的な進め方もある

開発手法についてもプロジェクト毎に違っていたりするので、色々な開発手法で経験が積めるという利点があると思います。


今度はデメリットを確認していきます。

受託開発ならではの多くの利点がある一方で、デメリットも割と多くあるように感じました。


・納期が厳しかったりすることが多い

こちらはネットなどでもよく言われていることですが、受託開発のビジネス構造上、自社開発よりは忙しくなったり、残業が増えることはあると思います。

以前僕がいた受託会社では、付き合いの長い会社のプロジェクトなどで納期もうまく調整してくれたり、残業はほとんどなかったです。

ただ聞いている話だと多くの受託会社は残業は多い印象があります。


・テストを書かないプロジェクトが多い

納期や予算の関係もあると思いますが、テストコードを書かないで納品してしまう受託会社は多くあると思います。

そのため仕様変更などがあった際に、動作の担保が取れず、別の気付かないところでバグが発生しているということもありました。

過去の受託会社でも、テストコードを書くように言われていましたが、納期などもあり、一切書かれていないプロジェクトもあったと思います。

エンジニアの経験値としては大きなデメリットになるのではないかと思います。


・CI/CD環境がないことがほとんど

こちらも納期や予算の関係があると思いますが、小さいプロジェクトの場合は特に開発が完了するとプロジェクトとして終わってしまい、継続的にサービスを改善していくような事があまりありません。

そのためCI/CD環境を構築した場合の効果が薄くなってしまうということがあると思います。

過去の受託会社でも大きなプロジェクト以外は、しっかりとしたCI/CD環境はなかったと思います。

こちらもエンジニアの経験値としては大きなデメリットになると思います。


まとめ

最後までお読み頂きありがとうございました。

まだまだ経験は数年程度で浅い方ではありますが、いくつかの現場を経験し、得た感想なので参考にして頂ければと思います。

結局のところ自社開発、受託開発で完全にどちらがいいかの判断を下すことはできないので、面談の時などに本記事に掲載したメリット・デメリットをしっかりと確認して、自分に合った企業が選べれば良いと思います。


もし明らかな間違いもっとこうゆうメリットやデメリットがある!という場合には、ご連絡を頂ければ吟味して追記しますので、是非お願いします。


※追記

もしエンジニア転職を考えてこの記事を見て頂いている方がいましたら、フリーランスエンジニアになるという方法も個人的にはオススメかなと思います!

僕が実際に案件探しのタイミングで、フリーランスエージェントを活用した際のメモをベースにして記事にしました!

エージェントを利用する時に気をつけることなども思いつく限り全部書きました!

実際にエージェントを比較して、良いところも悪いところも全部書いています!

利用者としての感想や注意点で圧倒的に参考になるはずですので、みて見てください!

https://awesome-linus.com/2020/02/13/compare-freelance-agent/


実際のところ、エージェントを利用してフリーランスエンジニアになるという方法は、実務経験が1年を超えたあたりから意識しても良いのではないのかなと思います!

ほとんどのフリーランスエージェントは実務経験が1年あれば、案件を探してくれるからです!

個人的には、大抵の人は2〜3年ぐらい経験があった方が、ある程度一人称で作業がやれるレベルだと思うので安心かなとは思います。

しかし成長速度には個人差がありますし、実務経験が1年を超えたあたりからフリーランスを意識して準備を初めても良いのかなと思います!

逆に経験年数だけで語ってしまうと、10年以上の経験があっても技術力の欠片もない人もいますので、こればっかりは自分でいけると思ったタイミングで判断してやるしかないと思います!

なので、もしある程度、実務経験を積んでいて、フリーランスなる決心がついたら、上記記事を参考にしてみてください!


少しでも役に立てる記事を書けるように頑張ります!!