はい。あります。では、未経験や駆け出しエンジニアができるだけ避けた方が良い業種について見ていきましょう。
避けたいIT業界① SES(システムエンジニアリングサービス)
☑️ SES(システムエンジニアリングサービス)とは?
まず、SESですが、一言で言ってしまうと「エンジニアの人材派遣会社」です。
取引先と業務委託などの契約をし、契約期間の間、エンジニアを常駐させ、そこで開発を行う。という流れになります。業務委託では納品などはありません。
ここからメリット・デメリットの観点でお話します。
・SESのメリット
プロダクトオーナー(システム要求者)が近い場合が多いので、開発において「要件と違う」というようなトラブルを未然に防ぐことができます。
また、顧客が近ければ、開発に顧客を巻き込めるので、スクラム開発(気になる方はググって)などができる可能性があります。
とりあえず、未経験で実績がなければ、実績はつきます。業務を進めるにあたって、スキルも身に付きます。
ただ、取引先とはシステム開発ができる前提の契約なので、開発ができて当然ですから、門は狭いです。
「未経験でも可」というのは逆にそれだけ人的リソースが足りていないということなので、過酷な労働環境だという覚悟はした方がよいでしょう。
最近もニュースになっていましたが、SESが派遣するエンジニア人材の経歴を偽装するということがよくあります。
取引先にウソをついて未経験の方でも「経験あります」ということを伝え、派遣する。
昔からあるようなので注意しましょう。
・SESのデメリット
SESはエンジニアの人材派遣業なので、人(リソース)を顧客へ供給して、報酬は会社の方に全て支払われます。
悪い言い方をすると、エンジニアを駒のように扱います。
あなたがどこかの会社に出向し、その場所でシステム開発をする。あなたの毎月の給与は、一部マージンとして数十パーセントあたり会社に持っていかれます。
逆に良い言い方をすると、あなたに代わって営業し、案件を獲得してくれる人。それが正社員であれば一定の給与額になる。といった感じです。
フリーランスとして企業と直接取引できれば、マージンを抜かれることもありません。その分報酬も高いです。
何かトラブルがあった際のリスクはありますが、そんなしょっちゅう起こることもありません。
フリーランスとして営業できなければ、あまりオススメできない業種です。
避けたいIT業界② Sler(受託開発)
☑️ Sler(受託開発)とは?
以下が受託開発業務の簡単な流れです。
簡単な流れ
- 顧客からシステムの要求提示を受ける
- それを基に要件定義を行う
- 最終的に注文をいただく
- 自社内で開発を行う
- 納期までに納品する
顧客からシステム開発の依頼があり、自社内で開発し、納品するという感じです。
・Sler(受託開発)のメリット
会社の風土や業務体制によって変わると思いますが、自社内開発では未経験でもフォローに入ってくれるメンバーやリーダーがいる確率が高いです。
切磋琢磨しながら成長している環境が整っている場合もあると思います。
また案件によって色んなシステムを経験できます。
スキルの幅が広くなり、無形資産として身に付くと思います。フリーランスとしての強みにもなります。
・Sler(受託開発)のデメリット
「納期」というものが常について回るので、スケジュール通り、または工数通りに業務を消化していく必要性が常について回ります。
経験が浅い時期は、ただ、躓いた所を調査して一日が過ぎた。なんてこともザラにあります。
「何も進捗がない」ということになれば、PM(プロジェクトマネージャー)に現状について報告と相談が必要です。
なのでPMの人間性によって劣悪な状態に陥ったり、労働環境が悪く感じたりするのも、未経験ではありがちなパターンといえると思います。
また、大きな案件で数十名体制のプロジェクトになると、開発の一部しかプログラミングしないこともあります。
開発の一部だけでも最初の内は何もスキルがない状態なので、伸びしろはあると思います。
ですが、システムの一部しか知らないということは、あなたにとってデメリットになります。
0~1で全て理解している人材の方が、重宝されます。
Sler(受託開発)は大体がウォーターフォール開発である。
☑️ ウォーターフォール開発とは?
システム要求事項 → 要件を定義 → 見積もり → 注文 → 基本設計 → 詳細設計 → 開発 → テスト → 受け入れテスト → 納品
ざっくりですがこんな流れです。何が問題なのかというと、この工程を一度で全てやってしまうことです。
システムは複雑なものです。出来上がったものが、お客様が想定していた要求と違うこともザラにあります。
開発工程が完了後、テスト時にバグだらけ。差し戻してバグを潰して、納期圧迫、工数圧迫、深夜残業。という悪いパターンに陥りがちになる傾向があります。
シリコンバレーエンジニアのJUNさん @sakaijun もお話していましたが「システムを外注する」という考え方は日本特有らしいです。
シリコンバレーでは全て自社内でエンジニアを囲い込み、プロダクトオーナー(システム要求者)との距離が近い。
システム要求者を開発に巻き込んでいけるので、常に要件に沿って開発が正しく行うことができているのか確認ができます。
結果的に手戻りや、受け入れ時に「想定と違った」ということが極めて少なくなり、ストレスの要因となる揉め事を避けることができます。
僕も「システムを外注する」という考え方は、企業にとってもエンジニアにとっても良くないと考えています。
本来、システムは開発して運用が始まってからがスタートです。常に改善が必要です。
システムを外注していると保守や運用時にちょっとした変更や、不具合などがあった場合に時間ロスがあります。
保守内なら良いですが、見積もりを取る必要があるかどうかも受託開発側は検討する必要の手間があります。
そうした事柄を顧客側が受け入れるかどうかの検討と決済をしなければいけません。
結果、手間が掛かります(改善までの道のりが長い!)。
理想として、システムを運用していくためには、自社でエンジニアを雇い、システム以外の業務のこともある程度は知ってもらうことです。
その上で継続的な改善を行っていくからこそ、よりエンドユーザーに寄り添ったシステムになっていくと考えています。
企業によってITに関するマインド(方針・考え方)が違うので、ITに関するマインドに合う環境(職場)を選べるようになることが業務のやりがいにつながります。
僕は前職がSler(受託開発)の企業で働いていました。マインドが違い、業務を楽しむことが全くできませんでした(業務自体は主に開発チームのマネジメントでしたが)。
実際にその業界で働く中で、マインドの違いに気付きました。失敗した後の収穫でした。
受託開発は顧客との距離が遠い場合が多いので、何がやりたいのか伝わりづらかったですし、顧客ごとに要求が違うのでシステム構成も違う場合が多いです。
保守作業時に少し変更するだけでもシステムが止まってしまったり、その度に全体会議などでトラブル共有を発表する。
納品できても工数オーバーしている(赤字)、リスク共有もできていなかったので、途中でシステムを触る気すら起きなくなってしまいました。
この辺りはSES(顧客先常駐)の方が、可能性としては顧客が近くにいるので、アジャイル思想によるスクラム開発などもしやすいと思います。
以上を踏まえ「開発すること自体が楽しい。」という人以外SIer(受託開発)はオススメしません。
✅ 補足
上記を踏まえた上で、まず実績を積む目的でIT企業に入るというのは第一に大切です。
とにかく「実績・スキル」は必要です。
どんな形であれ、システム開発業務をすればスキルは身に付くと思います。
心構えがある程度できていれば、多少の事は忍耐強くいられるはずです。
まとめ
- SESとSler企業は実績を積む目的以外は避ける方が良い
- WEBエンジニアとして、とりあえず欲しい「実績」。IT企業の傾向をある程度把握した上で動くことが良い
- ウォーターフォール型の開発手法は手戻りが発生し、開発手法としてはオススメできない部分が多いことを知る