TJOさんの下請けとGoogleの違い

 
この質問、炎上しているんだろうなぁと思いながら開いてみたら案の定賛否いずれかにかなり寄った回答がズラリと並んでいて、悪い意味で錚々たる眺めだなぁと思わず苦笑してしまいました(失礼)。
閑話休題。僕自身はソフトウェアエンジニアでもプログラマーでもないのですが(≒免責事項)、職掌柄仕事で大なり小なりプログラミングを主たる仕事とする人たちと組む機会が非常に多く、またずっとtech / IT業界に身を置いていて「どういう現場にどういう人たちがいるか」は大体感覚的に分かるので、それらの見聞と経験をもとに回答を書いてみようかと思います。
(** 当事者ではないゆえ事実誤認や認識違いなどあるかもしれませんので、お気づきの方はどうか遠慮なさらずご指摘ください)
なお最初に結論から書いておくと「日本ではプログラマーが本当に下働きに位置する世界と花形にある世界とがあり尚且つ両者はほぼ互いに交わらない」ということだと僕個人は理解しています。以下詳細を書いていきます。
【エンジニア(プログラマー)が下働きの世界の話】
前々職時代に、実際にそういう立場で社外から派遣されてきているプログラマーの人たちが何人も同じチームにいて、その人たちから一通り教えを乞うた(≒説教された)ので「実際に下働きのようなプログラミングを主たる仕事とするプログラマーたちが少なから
この手の話題には普段は回答しないのですが、今回は完全に間違った回答がすでに数十も高評価を得ており驚いたので回答します。(匿名氏による回答)
この回答者さんや高評価している人たちは、メルカリ, LINE, Zozoなどの大成功しているIT企業のことを聞いたことがないんでしょうか?
メルカリやLINEやZozoのソフトウェアを、NTTデータとその下請け奴隷プログラマが作ってるとでも思ってるんでしょうか?
そうした会社では、ごく普通のプログラマが直接雇用されてソフトウェアを作ってるわけです。現在の日本だと、こうした大手の給料はだいたい年収700万円~くらいが相場かと思います。労働環境は悪くなさそうです。
僕の友達にも大勢いますけど、そのほとんどは計算機科学の学位をもっていません。それどころは中卒や高卒の人も大勢いますよ。日本では独学のプログラマが非常に多いので。
確かにGoogleには博士号を持った人も多く働いてますが、そのほとんどは別に高度な数学を駆使するわけではなく、プログラマとしてごく普通にプログラムを書いてます。 (ってもし間違ってたら訂正してくださいGoogleの人)
もちろん他社で働くよりは高い専門性や知識を求められるでしょうし、ときとして科学力を要求されることもあるでしょうが、いつも高度な理論をいじりまわしている人は、その一部でしかないでしょう。
ソフトウェア業界においては「とにかくちゃ
事実ではないと思います。
一人親方で商品企画から実装までやってます。大変失礼ですが、サラリーマンの管理職か経営陣だと仮定して、メンテナンスとライセンス収入だけに限っても収入はおそらく質問者様のお父上よりも良いと思います。
僕よりもうまくやっている人はゴロゴロいると思います。ソフトウェアは、固定費がなく、作成したソフトが自分の無形資産になっていく妙味があり、とても利益が出しやすいビジネスですから。
どうして自分でプログラムを書くかというと、コードの量そのものを減らし、複雑さを軽減し、適切に抽象化して、再利用をし、品質の高い製品を作るかについて、自分自身でコントロール出来るからです。
今は、コンピューター・サイエンスや開発環境、コンピューター言語が発達して、個人の才能とかに頼らなくても、普通(より少しましぐらい)の人でも十分に、生産的にプログラムを書けるようになっていると思います。
高度な数学を駆使したプログラミングの技術も、初学者にもわかりやすい無料のコースがいくらでもありますから、敷居はそんなには高くないと思います。
Metalabなどの優れた製品もあります。
学術的に確立されている分野は、わかりやすい解説書やオンラインコースや優れたライブラリやプラットフォームがタダもしくは廉価でありますから、それを使えば良いだけの話です。
どちらかというと細かい実務的なノウハウの
違う意見もあるみたいですが、私は概ね正しいと思います。
まずプログラマーという単語がややこしいのでここではITエンジニアということにしましょう。そして、ITエンジニアは大まかに分けて3つに分類されます。
①研究開発系
日本では情報系の院卒、博士の人たちが就く職種です。情報系分野でも数学に近い専攻であり、みなさんがイメージするようなパソコンをカタカタ打ってる人たちではありません。高度なデータ解析の理論を構築したり、特殊なアルゴリズムを考えたりする人たちです。
多分、質問者様のお父さんはここの一部の人たちを天才と言っているのだと思います。彼らは重々にしてGAFAにいるか、銀行でモデルディベロッパーをしていたりします。詳しくはわかりませんが待遇も相当なものだろうと思います。
この職種は一般人がなろうとしてなれるようなものではなく、理学系の才能があり、その中でもごく一握りの人間だけがこの領域に到達できるだろうと思います。普通の人であれば精神を病むような世界です。
②Sler
基本的には官公庁や大企業などからの案件を受注して、マージンを抜き、下請けに流すのが一般的です。つまり、彼らは手を動かして案件を実装するのではなく、それを評価したり、上手くマネジメントする
電機メーカーに勤める者です。現在は管理職、元は回路設計が主で仕事でプログラミングをしたことはほぼありませんが、仕事上ソフトウェアエンジニアと関わることは非常に多い立場です。また個人としては10歳くらいから遊びでプログラムを書いていたような人間です。当時はBASICとアセンブラ、その後大学でC言語を使っていました。
世の中の全てを知っているわけではありませんが、私の回答としては、「質問者さんほど極端なものでは無いにせよ、下働きの人が多いのは事実である」となります。
あまり面白みの無い答えですが(笑)、あえてこの答えを書こうと思ったのには理由があります。「就職を控えた学生さん」と、特に「子供を持っている親御さん」に読んでもらいたいと思ったからです。主に2つの観点があります。
①これまでの話 - 仕事の価値
今、日本ではプログラミング教育が盛んになっており、学校教育にプログラミング教育が組み込まれています。学習塾でも盛んになっていると思います。このような状況で「プログラミングができると就職に有利」「プログラミングができると食いっぱぐれない」というような認識が生まれかねないと感じています。
この認識はあながち間違ってはいません。では何が問題か、というと、「仕事の価値」の話になります。
冒頭にあえて昔の話を書いたのですが、C言語が一般化する前は、業務ではCOBOLやFORTRANといった言語が一般的でし
エンジニア出身で、ソフトウェア開発している会社の経営者をしています。
質問の文脈の中での天才と下働きという意味では、違います。
もし父上がソフトウェア開発部門にいた経験があるのなら、大半のプログラマに失望していたのでしょう。そういう経験が無かったとしたら、単にソフトウェア開発の工程内容について誤解していただけだろうと推測します。
では実際問題として、日本のプログラマのほとんどは下働きかというと、それも違います。
ソフトウェアの開発工程は、ざっくりと考えると「上流」と「下流」に分けられます。
上流とは、調査・分析・開発方法の選択・概要的な設計・プロトタイプ開発などを行います。
この工程の仕事は比較的に創造的であり、下働きとは言えないと考えます。
下流とは、詳細設計・テスト仕様・マニュアル等のドキュメント化、コーディング、デバッグ・テストを行います。
コーディング段階では、開発で使用するフレームワーク、過去に蓄積したライブラリ、過去に開発して流用可能な古いシステムのソースコード、オープンソース・システムのソースコード等が用意されており、プログラマができる創造的な仕事は多くありません。
この工程は、上流側の下働きと言って良いと思います。
ただし、ここで注意が必要です。
大きなチームで開発する場合、上流と下流は異なるエンジニアが分担しますので、下流担当は下働きの担当といえます。
小さなチームで開発する場合、ウォー
ゲーム業界、業務系ソフトウェア開発、SIerなど25年程続けてました。『一部の天才を除いて』というより『一部の上流工程を除いて』の方が適切に思いますが、私もその考えを強く否定することはできません。
下働きという言葉に見習いやアシスタント的なニュアンスがありますが、プログラマは一人前になっても人の指図を受け続けることは当たり前のようにあります。経験も技術も稚拙で浅いエンジニア(?)の下でバカ(みたいではなくバカ)な指示に従わないといけないことは物凄く多いです。そのバカもまた上の大バカに従っているだけで、バカでないと精神が持たない。そこを上っていける人はバカの天才ともいえる。それが最近の90%くらいのプログラマの世界だと思います。
ITゼネコンと呼ばれた業務系のソフトウェア開発などは大昔からそうだと思います。ゲーム業界だと比較的新しい業界なだけに下請けの階層は少ないし今も技術指向な空気は残っていますが、MW(UE4,Unity等)全盛になってからは実体としては変わらないと思いました。空気感だけ残っていて昔の個人の能力や頑張りやアイデアによる技術革新みたいな事を夢見る人は多く残っていますが、なぜ現状がそうではないのか理解が追い付いていないの