
という疑問に答えたいと思います。結論からいうと自社開発>受託開発>SESの順番でおすすめです。しかし、就職のしやすさはSES>受託開発>自社開発になります。

SESとは何か

SESとはIT企業を名乗る派遣会社です。普通の派遣会社と異なり、正社員で雇用して会社に指定された現場に派遣されます。
都内なら実務3年程度のプログラマーを1か月派遣すると、クライアントは月80万円ほど支払います。プログラマーに20~30万円給料+福利厚生支払って、残りは会社の利益、というビジネスモデルです。
SESは一度契約が決まれば、何ヶ月も先まで毎月決まった売上が保証されるので、会社側にとっては非常に美味しいビジネスモデルです。そのため、SESを行っている企業はかなり多いのが現状です。
メリット
入社しやすい

SES最大のメリットです。会社としてはプログラマーとして使い物にならない未経験者でも、派遣できればお金になります。
Web業界には未経験者でもできる雑用係やコールセンターなどの仕事が沢山あるので、SES企業は未経験者でも大歓迎です。未経験者を積極的に正社員採用しているIT企業は、99%SES企業だと思ってください。。
Javaの研修がある事が多い

入社後案件が決まるまでの期間を待機期間と言います。待機期間は研修を行われることがおおいです。
ほとんどのSES企業の研修言語はJavaです。Javaは案件数が最大の言語で、SES会社を入社する場合は避けては通れないです。
絶対にJavaをやりたい人はSES企業はありだと思います。
待機中も給料が出る

SESは待機中も給料が出ます。フリーランスや派遣は仕事がなくなれば無収入ですが、SESの正社員はある程度守られた状態になります。
人によっては未経験で入社して何ヶ月も案件が決まらず、ひたすら会社で待機して給料をもらい続ける猛者もいます。
正社員のまま色んな現場を移動できる

フリーランスや派遣社員のような働き方を正社員待遇のまますることができます。同じ現場でずっといるのはいやだけど、フリーランスや派遣よりも絶対に正社員がいい、という人にはお勧めです。
1、未経験でも入社しやすい
2、Javaの研修が受けられる
3、待機中も給料がでる
4、正社員のまま色んな現場を経験できる
デメリット
職場を選べない

最大のデメリットです。基本は会社の指示された現場に行きます。もちろん、技術力が高いエンジニアなら会社にワガママを通すことも可能ですが、駆け出しに現場を選ぶ権利はありません。
たまたまコードが書ける職場に回されればいいですが、未経験の場合は高確率で雑用係に任命されます。
テスト、ドキュメント作成、エクセル、パワーポイントの資料作成など、web業界には雑用が溢れています。
これらの雑用は野球で言うところの球拾いです。いくら球拾いをやっても野球は上手くなりません。
部活と違って学年が上がったら球拾いから解放される、という暗黙のルールもないので、数年間ずっと雑用をしている人もいます。
実際に雑用係になった人の体験談はこちらにまとめてあります
初めの面談
・用意された顧客リストを上から順に電話をかけ、「不用になったパソコンはございませんかー?」と確認するお仕事2回目の面談
・不用になったパソコンを倉庫に搬入するお仕事※軍手必須弊社の求人概要
自社開発あり! 手に職をつけたい方募集!未経験からでも一から育てます!! https://t.co/QU4WV0K37U— yu (@yu10483273) July 15, 2019
経歴詐称で現場に放り込まれる可能性あり

SESあるあるです。昔は経歴詐称があったけど今はない、という人もいますが大嘘です。
基本的にコードがかける現場は未経験を受け入れません。クライアント側にたてば当たり前のことですが、月数十万払って未経験者がきても困ります。
そこで未経験者に実務1~3年と経歴を詐称させて現場に潜り込みます。そうすると何が起こるでしょうか?



このようにスキルシートと実際の実力が乖離してしまい、現場のエンジニアから攻められることになります。
もちろん、こういう環境で生き残って成長したエンジニアもいますが、潰れてしまって精神を病んでしまったエンジニアも一定数います。
ある時はテスター経験が2年あることになり、またある時はデータベースの運用経験が3年と新人指導を経験したことがあることになってました(文系上がり未経験入社1ヶ月なのに)
— yu (@yu10483273) July 2, 2019
https://twitter.com/nao62165/status/1265704118103896064
未経験は極端に給料が少ない

メリットにも書きましたが、SESは待機中にも給料が出ます。中にはずっと待機して給料だけもらい続ける社員までいます。これは会社にとって大変な損失です。
そのため、もし待機になっても大丈夫なようにものすごく給料を低く抑えていることが多いです。未経験の場合は、東京でも年収240万~300万程度が相場です。さらにほぼ昇給しません。
最近ではクライアントが支払った金額の65%を給料として保障する、という給与水準が明確なSES会社も増えてきましたが、これらは少数派です。
普通の会社よりも辞めづらい

これも大きなデメリットです。普通の会社なら雑用要員になった時点で辞めればいいのですが、SESは客先との契約期間がネックになります。
契約期間中に抜けられると会社は非常に困るので、契約期間中は絶対にいてくれとあの手この手で脅してくる会社は一定数あります。
さらに、普通は社員に契約期間を知らせないので、いつやめても

と脅します。◯に入る数字は会社の都合で変動します。SESの上司や営業担当は、移動希望や転職希望のプログラマーを引き止めるのが仕事です。簡単にはやめさせてくれる方が稀です。
SESのデメリットをまとめると以下になります
1、職場を選べない
2、未経験は雑用要員になる可能性が高い
3、経歴を盛られて現場に放り込まれる可能性あり
4、給料が低い
5、普通の会社より辞めづらい
基本的には会社にとってはメリットが大きいけれど、労働者にとってはデメリットが大きいのがSESになります。
もちろん、SESでもちゃんとした会社もあるとは思いますが、
入社してみないとわからない & 案件が決まるまでわからない & 入社したら普通の会社よりも退職が難しい
とデメリットが多いので、デメリットをわかった上で入社を検討した方が良いと思います。
受託開発はオススメか
受託開発はクライアントから仕事を受けてサービスなどを開発する会社です。受託開発は悪くないので、採用されたらとりあえず行ってみましょう。
メリット
入社前に使う言語や技術がある程度わかる

ほとんどの託企業が「PHPの受託」「スマホアプリの受託」「web制作の受託」と得意分野を中心に仕事をしています。
そのため、使いたい技術を扱っている受託企業に入社できれば、かなり高い確率でその技術を使うことができます。
研修がある企業も多い

受託企業は採用した人材を育成して、戦力にしようとする企業が多いです。
昔僕が働いていた企業では、採用してから半年程度研修を行い、少しずつ実務に取り組ませていきました。
企業としても採用したらクビにしづらく、SESのように雑用係として派遣してお金にすることもできません。
また自社開発のように儲かっているから赤字人材がいても気にしない、という訳にもいかないので何とか使える人材にしようと育てる事が多いです。
1、入社前に使う言語や技術がある程度わかる
2、研修がある企業もある
デメリット
納期が絶対

最大のデメリットは納期です。クライアントありきなので、クライアントが何日までにサイトを完成してくれ、と言われたらそれが絶対です。
社員は土日を返上してでも納期を間に合わせます。普通スケジュールが厳しい仕事は、その分多くのお金を請求しますが、社員に還元されることはありません。
給料が低め

受託開発企業は直接クライアントから仕事をうけるだけでなく、仕事を受けた会社から投げられた下請け作業の場合も多いです。
例えば、100万でwebサイト制作を受けた会社が、10万円でデザイン会社にデザインを発注、40万円でシステム会社にシステムの組み込みを発注、50万円が元請けの利益、という感じです。
利益的にも作業的にも美味しいのは下に投げる元請け企業です。下請け企業は作業量が多い割には利益になっていません。
会社が儲かっていないと当然社員の給料も上がりません。

というのが受託会社あるあるです。
レガシーな案件が多い

受託企業で非常に多い仕事がシステムの保守・運用・改修です。
新規開発の仕事もありますが、絶対数は少ないです。ひたすら保守・運用・改修をやっていると、時代遅れの技術に詳しくなる反面、最新技術を触れることはできません。
1、納期に追われやすい
2、給料が上がりづらい
3、レガシーな案件が多い
自社開発はおすすめ
自社開発は3つの中では一番いいです。もし自社開発企業に採用されたらラッキーです。
もちろん自社開発もピンキリですし、SES企業も求人で自社開発企業のふりをするために、形ばかりの自社開発をしてるのが一般的です。
ここでは自社開発のみで収益を上げていて、ある程度儲かっている企業について書きます。
メリット
納期が緩い

まずクライアントがいない。そのため、納期はそこまで厳しくないです。クライアントが決めた納期は絶対に死守ですが、社内で決めた納期はよく後ろにズレ込みます。
あくまでの自社製品なので、納期がずれこんでも良いものを作ろう、という事が多いです。
入社前に使う技術がわかる

自社開発企業は使う言語や技術は自社内で決めます。そのため、入社前に使い技術を学べるかどうかがわかります。
また、新しい技術を使っている会社が多いです。
給料が高い

誰もが聞いたことがあるようなメガベンチャーはSESや受託企業では考えられないよう凄まじい利益を上げていたります。
僕が昔いた某メガベンチャーは毎月数億円の売上を叩き出し、都内の一等地に自社ビルまで建てていました。
当然、社員の給料、待遇はSESや受託企業の比ではなく、会社を移るだけで給料は1.5~2倍になる事もあります。
スーパープログラマーと同僚になれる

メガベンチャーだと金の力でスーパープログラマーを呼び寄せてきます。こういう優秀な人と働くと非常に力がつきます。
簡単にいってしまえば、スーパープログラマーの技術、知識、コードの書き方などを聞いて、それをそのまま真似するだけで、技術力は大きく上がります。
技術力を向上させたい場合も自社開発はオススメになります。
1、納期が緩い
2、入社前に使う技術がわかる
3、儲かっている企業が多く給料が高くなりやすい
4、技術レベルが高く、スキルアップにつながりやすい
デメリット
入社が難しい

自社開発でお金を持っている企業は、新卒以外は未経験者を雇いません。そのため、そもそも未経験者には縁がないことが多いです。
周りのレベルが高すぎてついていけない可能性がある

会社の技術レベルが高いのは良いことですが、あまりに自分の実力とかけ離れているとついていけない可能性もあります。
以前、某メガベンチャーで働いてた知り合いのプログラマーは

こういう状況が数ヶ月続き、ほどなく退職しました。現場でできないやつ認定され、忙しかったため育成もされず、放置されて終わったそうです。
儲かっている自社開発企業は、多少赤字人材がいても気にしない場合が多いです。
技術力が高い現場に行くのはそれなりに実力をつけてからの方がいいかもしれません
1、未経験をとらない企業が多い
2、レベルが高すぎるとついていけない可能性あり
結論 なるべく自社開発か受託開発に入ろう

未経験の人はweb系企業をひとまとめに見てしまいがちですが、中身は全く違います。企業を受ける時は、SESか受託か自社開発か必ず確認しましょう。
ただしSES企業はあまりに評判が悪いため、SESであることを隠す傾向にあります。面接に行くと、

となぜか自社開発企業ぶります。そして、

と夢を語られます。
しかし、実際はずっとSESで出稼ぎを行い、次の案件が入るまで待機期間に形ばかりの自社開発をする程度です。SES系の会社はなぜか夢を語るところが多いので、真に受けないようにしましょう。
ちなみに、僕の知っているSES企業が求人で売りにしていた自社開発は、待機プログラマーが研修目的で作ったグルメマップでした。もちろん売上はゼロです。
高年齢の未経験者は中々採用されず、SESにすがりたい気持ちになると思います。
SESで当たりの案件を引いてスキルアップできた、という人もいるので一概には否定できませんが、デメリットを知った上で飛びこんだほうがいいと思います。
ぜひ参考にして下さい。