SIer は簡単で Web 系は複雑、という話題が上がっていました。
SIer界隈でよくいるのは「Web系は小規模だから簡単なことしかやってないんでしょ」っていう人達。
— ナオツ (@naotsu_log) January 19, 2023
SIer5年やったけど、相対的にWeb系のほうが複雑な案件多いし、優秀な人材多いし、その分報酬も高い。
なので、そういう人達はWeb系では面接すら受けられない(書類で落とされる)から嫉妬してるだけ。
当ブログでは SIer に否定的な論調の記事が多めですが、「SIer は簡単」という意見は誤っています。
複雑さや難しさでいうと、SIer の方が圧倒的に「難しい」です。
もちろん、SIer では技術的に高度なことはやっていません。そんな技術力も理解力もないからです。 それでも SIer の仕事が難しいのは、業務が複雑なのと、社内のドキュメントを読むことでしか知識の習得ができないからです。
どういうことなのでしょうか? 一つ一つ解説します。
SIer の仕事は簡単?難しい?
SIer の仕事は簡単か?複雑か?と言われると、めちゃくちゃ複雑です。
何が複雑なのか?
「システムの複雑さ」の定義は様々ですが、ここでは「技術的な複雑さ」と、「業務的な複雑さ」に分けて考えてみましょう。
SIer は、業務がものすごく複雑です。
こんなことを書くと驚かれるかもしれませんが、SIer では自分が担当しているシステムが何をしているのか、ちゃんと理解している人はメンバーのごく一部しかいません。
自分が担当しているごく一部の内容を知っているだけで、全体像は「概要設計書」と呼ばれる資料でざっくりと知っている程度です。
- 巨大すぎて意味不明
- コードがカオスすぎて意味不明
- システムの中で担当の縦割りがひどすぎて意味不明
- 意味不明な外部のシステムとの連携が多すぎてやばい
などの原因で、SIer のシステムは複雑すぎて本当にわけがわからない状態になっています。
「このシステムで何ができるのか」を理解するまでに 2 年かかることもザラにあります。
そんな複雑さをなんとかしようと数十億円規模の「リプレイスプロジェクト」があっちこっちで立ち上がっていますが、下手くそな COBOL を下手くそな Java に書き換えただけなので、何の解決にもなっていません。 SIer の中の人はこの先 20 年、永遠に複雑怪奇なシステムに向き合い続けることでしょう。可哀想に。早く転職した方がいいよ。
SIer では業務は複雑ですが、技術的には簡単なことをやっているシステムが多いです。
COBOL で CSV ファイルを読み込んで吐き出して、FPT で次のサーバーに送りつける...みたいな処理は、それ単体で見ると、技術的には超簡単でしょう。
最近は COBOL が Java に変わっただけで、ファイルを読み込んでデータベースに突っ込むだけのシステムは SIer には多いです。
ただ、そんな簡単なことをやっているシステムが無数に連携されているのです。
他の会社の何とか CSV ファイルを何時までに読み込んで、何時までに加工して次の別のシステムに形を変えて連携する...みたいな「処理と処理のつながり」がめちゃくちゃ複雑です。
Web 系の仕事は難しいのか?
Web 系の複雑さはピンきりですが、「Web」という性質上、SIer のように「CSV ファイルを読み込んで吐き出す」みたいな単純なジョブのつながりでシステムを作ることは稀でしょう。 かといって、Web だから複雑...という話でもなく、「Web の方が SIer に比べてモダンな技術を取り扱える可能性が高い」のが現実的な答えです。
モダンな技術だからといって難しいわけでも簡単なわけでもありません。 ただし、SIer に比べて、「顧客体験を良くする」作業に向き合いやすい環境です。
マイクロサービスでシステムを構築して、各サービスの改修速度を上げていこうとしたり、0.1 秒でもレスポンスを速くするために処理内容を工夫したりする機会が多くあります。
SIer の場合は、顧客満足を「高める」よりも、「怒られない」ことに主眼が置かれるため、余計なことはしません。 なるべく既存の古い技術で、新しいことはせずに、既に社内で解法が確立されているような手法を取るインセンティブが働きます。
「Web で扱う技術的な複雑さ」をどう感じるかは各エンジニアのスキルによります。
低スキルのエンジニアからすると、Web で扱う技術は複雑で意味不明に感じるでしょう。中学生が数学 3C の教科書を読んでも意味不明なのと一緒です。
一方で、経験豊富な人からすると、「当たり前のことをやってるだけじゃないか」と感じるかもしれません。
逆に、SIer で作るシステムは、技術的な経験値が活かせず、常に複雑な業務に向き合わなければいけないため、経験豊富なエンジニアほど、「SIer の方が複雑だわ」と感じるように思います。
SIer の複雑さは努力で解決できるものでもなく、スキルが通用しない領域です。
解説ゼロのクソ問題集だけで数学 2B を極めろ、というようなイメージで、「やっていることの把握」にものすごく時間がかかります。
SIer の業務は学習効率が悪すぎるため、難易度が高い
SIer のシステムの複雑さは、「簡単な処理を低スキルな開発者が何も考えずに実装してきた歴史の積み重ね」から来ています。
頭が悪く単価が低い外部のエンジニアに実装を丸投げして、スケジュールを詰めるだけの SIer 社員。
当然、上がってきたコードのレビューなどできません。頭が悪く単価の低い外部のエンジニアよりも実装能力は低いからです。
コードも設計もまともにレビューもせず、ゴミにゴミを積み重ねた結果としてできあがった技術的な負債の塊が SIer のシステムです。 欠陥住宅そのもので、腐りきった巨大な肉塊ともいえます。臭すぎて近づけません。
SIer のシステムは暗号を読み解くような難しさを感じることでしょう。
SIer の場合は、業務内容も書籍やウェブでは学べません。 そのシステム独自の仕様や知識が大量にあって、それらはほとんど体系的にまとめられていません。
たくさんの Excel ファイルにバラバラに格納されていて、ファイルサーバーを漁ることから始めなければいけません。
SIer には「業務の内容は対面のミーティングで口頭で伝える」みたいな文化があるため、肝心なところは資料にまとまっていないこともあります。
Confluence を活用するチームも少数なので、自分で学習を進めることができません。
SIer の人生は非効率の極みであす。
また、SIer で複雑な業務知識を身につけるのは完全に人生の無駄です。 苦労して身につけた業務知識も、転職すると何の役にも立ちません。本当に 1 ミリも役に立ちません。 人生的にも何の意味もないでしょう。SIer の中で過ごした大半の時間は、将来的には無駄になります。何の積み重ねもありません。
【IT・WEB エンジニア向け】おすすめ転職サイト|各サイトのメリット・デメリットを年収 1000 万超の現役エンジニアが徹底解説
SIer でも本当に複雑な技術は扱っている
SIer でも全部が COBOL でファイル I/O ばかりやっているわけではありません。 技術的に複雑なシステムもあります。
たとえば、超高速取引(High Frequency Trading)を取り扱うシステムを作るならば、秒間数万件のデータを遅延させることなく裁かなければいけません。 技術的にも非常に複雑で難易度が高いシステムになるでしょう。
SIer のごく一部には、こういう難しいシステムを開発する部署もあります。 ただし、SIer の多くのエンジニアは、こういう複雑なシステムの中身には立ち入らずに、「こんな感じで作ってね」と依頼して、納品されたものをテストするような仕事をしています。
難しいシステムを作るのは楽しいですが、納品された、自分が作ってもいないシステムをテストするのは退屈です。
やはり「SIer の業務には何の面白さもない」と判断せざるを得ません。
なぜ SIer の若手社員は次々と会社を辞めているのか?NTT データを辞めるわけ
SIer は複雑というより、複雑怪奇
SIer の業務は書籍で学べません。 ウェブ系の仕事であれば、書籍や動画で学んだ内容が活かせることがとても多いのですが、SIer はとにかく現場で経験することでしか知識を身につける術がないのです。
SIer が特殊な技術を使っている...というより、扱っているドメインが複雑で、再現性のないものなので、現場の散らばった資料を読み漁るしかないのです。
私が働いていた SIer には、「何百とあるジョブのつながりを暗唱できる人」がいました。
ジョブには記号のような名前がついていて、簡単に記憶できるようなものではありません。
膨大な単純な記号をしっかりと記憶して、「EBM_ABC001 の次は EBC_DIC002 が動く」みたいなことを瞬時に言ってのけていたのです。
SIer 内では尊敬を集めていましたが、私は心の底から「こいつ...馬鹿なのか...?」と思っていました。
異動するだけで何の意味もなくなるこんな知識の習得にどれだけ時間をかけたのだろう...?
およそ常識では計り知れない狂気に身を委ねたのだと。
ただ、仕事としては頼られてました。私が退職する前に別の部署に異動してましたが、偉いと思います。立派です。
PM にならないと複雑さを理解できない、というのは完全に間違い
「SIer は複雑で大規模な案件を整理して切り分けて単純化しているのよね」とわかったようなことを書いている人がいましたが、見当違いです。
『Web系のがSI案件より複雑😏』
— Henry (@HighWiz) January 20, 2023
ってのを見たけど、
SIerは、複雑で大規模な案件を整理して切り分けて単純化してるのよね。
そうすることでリスクを抑えて品質を揃えてコントロール可能にしている。
だからPMに近い立場じゃないと真の複雑さは分からない。
SIerは単純!と思ったならむしろ成功。 pic.twitter.com/FDEJzZFSoN
「PM に近い立場にならないと真の複雑さはわからない」などと書いていますが、"真の"とか、"本当の"などの言葉を真に受けていけません。たぶんこの人は何もわかってない人です。
ツイッター上で SIer を擁護する人はなぜか、「PM にならないと真の SIer はわからない」などと言いがちですが、 SIer で PM マウント(笑)する人は 10 年以上大手 SIer に残っていただけに頭が悪い人が多く、サンクコストバイアスに囚われたている可能性が高いので、イジるだけイジってスルーしましょう。
SIer の PM に近い立場の人間が抱える「複雑さ」とは、工数パズルや人間関係の複雑さです。
SIer の PM は四六時中、人とタスクを割り当てて、鉛筆をなめながらパズルゲームのように工数を算出して、報告資料を作っています。
このように PM が完成させた工数パズルは 100%外れます。SIer の PM の真価は、現実が計画とずれたときに発揮されます。
部下や協力会社の人間にプレッシャーをかけるのです。
100 人月の計画に間に合わなそうなときは、人間を 2 倍働かせるように圧力をかけ、詰めるのが SIer の PM の仕事です。
業務の効率を上げるために余計な報告を減らすとか、スケジュールを調整するとか、スコープを変更するような工夫はしません。
1 人の人間に 2 人分働かせるのです。1 日 16 時間働かせて、最初に立てた計画を死守する。文字通り、計画を「死んでも守らせる」のが SIer です。
それで、PM が理解している複雑さとは、工数パズルの複雑さや人間関係の複雑さであり、システム的な複雑さはむしろほとんど理解していません。
レガシーシステムの PM の場合、担当しているシステム自体の全体像も理解していない人が多いです。
理解もしていないくせに、なぜか「俺達はすごいんだ。何でも知っているんだ」というスタンスを取ろうとする人が多いのも事実です。
「大手 SIer の社員は、協力会社よりも偉いんだ。彼らが知っていることは何でも知っていなければならないし、彼らができることは全部できなければならない」
みたいに豪語する人が大手 SIer の PM には多いですが、こういう人物に限って、Java と JavaScript の区別もついていません。シンプルに頭が悪いのです。