https://jp.quora.com/%E6%97%A5%E6%9C%AC%E3%81%AE%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9E%E3%83%BC%E3%81%AE%E8%B3%AA%E3%81%A3%E3%81%A6%E9%AB%98%E3%81%84%E3%82%93%E3%81%A7%E3%81%99%E3%81%8B-%E5%84%AA%E7%A7%80%E3%81%AA%E3%83%97
日本でIT企業5社(外資日本支社を含む)、アメリカでIT企業7社でプログラマーしていました。アメリカと比べると、日本のプログラマーの質は、残念ながら、かなり低くなっています。アメリカではアーキテクトの下となるシニア・エンジニアでした。中の上レベルのプログラマーですね。ですが、日本のSIerでは、20人のチームのトップとなっていました。他のPGや上流SEは、レースコンディション、ビジーループなどを理解していませんでした。私が使う言葉を理解できず、私の発言が正しいのか問題があるのかも、区別がつかない状況でした。日本の外資系のPGの方が、技術力は比較的高い感じでした。
日本には優秀なPGもいるが、適材適所に配置されていない。派遣PGが多数のSIerなどはPGの技術力はかなり低い感じです。未経験エンジニアを入れて数だけを揃えようとしています。技術力の高いプログラマーは「小難しい技術用語を使うので顧客に失礼」という理由で追い出している雰囲気がありました。
技術力の高い人でも、プログラミングをしていると出世できないので、30代から中間管理職になりプログラミングをしない傾向があるようです。大企業ほど、この傾向が強いです。アメリカでは、シニア・エンジニアから、アーキテクトなど、プログラマーとして給料が増えるルートがあります。コミュ障気味の人も技術力が高ければアーキテクトになっています。シリコンバレーのアーキテクトは平均年収3000万円です。
GAFAMと競争するには、技術力の低いエンジニアや中間管理職をレイオフして、優秀なエンジニアだけ残す必要がありますね。プロ野球チームのように毎年10%を解雇できれば、最強メンバーを作れます。GAFAMはそれをしています。解雇なしで、生え抜き選手ばかり、FAもトレードもしないとなれば、弱いチームとなるのは必然です。日本のIT企業がこうなっています。ただ、SESからの派遣PGを入れ替える事で、選手層は少し強くはしています。コーチに該当する上流SEは、解雇がないだけに、特に弱いです。
プロ野球方式にするには、プログラマーの給料を上げる必要があります。GAFAMなどは、年収2000万円が平均です。日本の3倍以上ですね。
IT土方なんて言われている件ですよね。本来プログラマー、ソフトウェアエンジニアになるべきでない人達が、SE/PG(日本独自で世界には通用しない呼び方)と称して業界にたくさんいる事は確かです。残念ながらそういう方々は質が低いと言わざるを得ません。そういう方々をソフトウェアエンジニアには含めないと考えれば、実のところそんなにレベルが低いものではありません。
過去2000年に外資ベンチャーを経験しましたが、私達、日本法人のソフトウェアエンジニアと米国本社のソフトウェアエンジニアで実力、スキルに大差はありませんでした。違いといえば、本社の彼らよりも私達の方が年俸が安かったぐらいです。むしろ、几帳面に働く日本人の方が優秀なぐらいです。(笑
私達はよく勘違いしがちですが、金髪で目が青色で英語を話せば凄いと思いきや、蓋を開けてみれば、同じです。私達だって最初かた米国に生まれれば普通に英語を話します。
日本は有名なIT企業が誕生しない
これは、日本独自の働き方や、エンジニアの優位性を認めず、全員、会社員や工場労働者にしたがる日本の企業文化に問題があるかと思います。ソフトウェアエンジニアを含め、いわゆるスペシャリストは、ジョブ型雇用、年俸制でないと、うまく噛み合いません。
年功序列、終身雇用、新卒一斉採用、過度な解雇規制の元では、雇用の流動化もなく、技術革新もイノベーションも起こりませんね。
この手の話ってどうとでも言えますし、この手の質問は海外出羽守が湧いてくるんですよね(質問者のことではないです)。
身もふたもないことを言うとプログラマーの質だけで言えばこうかなと。
でもこれだけ言いましたけど、技術レベルで言ったら日本のエンジニアもアメリカのエンジニアもそう変わらないですよ。優秀な人は優秀だし、そうじゃない人はそうじゃない。そこに日本も海外も関係ありません。
この手の話は海外出羽守が出しゃばるので(大事なことなので繰り返し)、ダメな人は世界中にいる例を貼っておきます。
で、結論から言えば二極化しています。
それでもシリコンバレーに比べたら少ないじゃないかと言われるかもしれないですが、そして大きな社会課題が目の前にあっても誰も目を向けない。
小林:サンフランシスコとかシリコンバレーってこれだけスタートアップがいて、Uberも最近は社会インフラのようになってきて、スタートアップがいろんな社会問題を解決しようとしています。にもかかわらず、ホームレスの問題が残っていたり、奨学金返済の問題が残っていたり、いろんな社会問題が残っているじゃないですか。なぜ、このような問題が数多く残っていると思いますか?
アレン:Uberは何の社会問題を解決しようとしているか、よーく考えてほしいんですよね。結局は、仕事がない人にタダ働きさせて、自分たち(Uber)ばかりが儲かるだけ。どこかに移動したい人にとってはすごく便利なんですけど、テックのコアのメンバー、Uberそのものがすごく儲かる仕組みです。
特権主義で差別的なところでもありますからね。「日本人を捨てた」人でないと馴染めないのではないでしょうか。
どうも、中華系Quoranです。外人からみると、1つ可能性が高い原因は、日本は先進国なゆえに、産業システムがインターネットが流行る時代前からすでにほぼ完成されています。それがまさに負の遺産となっている可能性が非常に高いと思われます。
世界中の先進国を見回るとほぼ同じようなことが起きています。一つ例として、電子マネーを挙げたいと思います。ドイツなんかはいまだにスマホを持っていなく、むかーーーしのガラケーを使う人がたくさんいます。アメリカは世界のリーダーを自負して死ぬ気で頑張っていると思うけど、電子マネーの浸透はいまいちな感じがします(いままでの納税の仕組みが崩壊するのでビジネスからの反発が物凄く強いと聞いたことがあります)。先進国が失速しているのか?と考えると、ぼくはそういうことではないと感じてます。実際、そういうシステムを日本で推進しようとすると、第一ステップとして、既存のシステムをいかに廃棄させるかの問題があります。この戦線に立っているプログラマーたちは、既存の資本からみると、邪魔でしかありません。
中国、インドの状況は逆です。既存システムなんて、そもそもぐちゃぐちゃです。そのゴミの山の中から、電子マネーを作り出して利益を生み出せるプログラマーたちは、既存企業からも好感度高いし、ユーザからもカッコよく見えています。決定的に違いはやはり、そもそもないから、新技術を使うときも抵抗感なんてあるわけがないです。
まとめると、プログラマーたちは、恐らく先進国において「破壊者」のイメージがあり、途上国だと「創造者」になっているため、社会地位の温度差が出ているではないかと推測します。
日本のプログラマーの質は低いです。
私はよく「自分を特別だと思うなよ」と言われる凡人プログラマーですが、世の中のプログラマーは9割が凡人未満です。流行語を振りかざしてマウント取りに来るのですが、言っている技術論は間違っているし、仕事させても成果を出しません。
村井純の研究室で博士号をとったプログラマーと仕事したことがありますが、彼はマルチスレッドプログラムでセマフォーを使って同期取ることができませんでした。フラグを使ってバグを入れます。
IPSの未踏プロジェクトでスーパークリエイター認定されたプログラマーの下で仕事したことがありますが、「SQLのJOINは何やっているかわからないから、テーブルからデータを取得した後プログラムで結合しろ」と言われました。
職場で業務改善の提案とか、新商品の発明をすると、同僚から足を引っ張られます。だれも会社の利益をあげようとは考えません。大企業では、みな「手を抜いて仕事しても高い給料もらえるからいいや」と考えています。
ほんの時々、自分より成果を出しているプログラマーに出会いますが、過去40年以上の職務経験で出会ったできるプログラマーを全員足しても10人に届きません。それ以外で私より有能なプログラマーは、全員手を抜いて仕事していました。
体制が古いと言うより、日本の社会人はみなヤル気がありません。凡人以上のプログラマーが全員本気出せば、すごいことできるはずなんですが。
- 高い人は高いです。アメリカ含めた世界と競争できるレベルです。でないとバンナムや任天堂やKONAMIやスクエニから世界レベルの出来栄えのゲーム発売されません。
- 低所得と高所得が極端に分かれます。もらう人は一千万とか普通にもらっています。
- 豚箱開発と呼ばれる低レベル低収入層はアメリカも含めて世界中にいます。最も有名なのが中国で、高レベルの人でも豚箱扱いされます。高レベルエンジニアをすぐ外国から呼んでしまうので、育たないんです。香港などで高収入なエンジニアは大体外国人です。
- 体勢が古いのは間違い無いですが、体勢が新しいところは伸びています。古いところは大体社長が営業出身で「営業部隊でエイエイオー!」がしたい会社であり、いまどきビデオ会議で済むところをいちいち営業マンが現地に行くシステムにこだわっているので、そのうち自然淘汰されていきます。そしてそれは日本に限ったことではなくどこの国にもあります。
事業会社でシステム部門に所属しています。
その立場から考えると 。。。
「優秀なプログラマー」
になるメリットが日本に少なすぎるのが原因です。
日本では、システムの開発モデルはいわるゆる「土建屋、建設業」と同じ構造となっており、プロジェクトマネージャーを現場監督とすると、プログラマーはいわば土木作業員のような立ち位置で見られるパターンが一般的です。
土木作業とプログラミングは、手足を動かすという事では同じですが、「誰でも出来る」作業と「知ってないと出来ない」という差異があることはあまり問題視されていないのが現状です。
さらに日本企業独特の「社員総横並び」の価値観が加わります。
すなわち、一生懸命プログラミングの技術や知識を磨いても、その技術を評価する仕組みには乏しく、知識の一切ない営業さんや経理等と「同じ社員なので」同じ給料で雇われる仕組みになっています。
総合すると。。
プログラマーとして技術を磨くと、おんなじ給料で手足動かすリスクある事ばっかりやらされるようなパターンに陥りやすいため、「いや~僕はプログラミングとか全然わかんないんで!」といい続けたほうが得するような仕組みになってます。
こういう状態なので、日本ではかなり特殊な環境でない限り、「優秀なプログラマー」と言われる人はでてきづらいかと。。
変えないといけませんね
優秀なプログラマーが足りない。優秀な営業が足りない。優秀な技術者が足りない。優秀なデザイナーが足りない。優秀な経理が足りない。優秀な人事が足りない。
いつだってどの時代だってどの産業だって優秀な人間は不足するものです。そして優秀なというのを「黙って問題解決してくれる」とか「オレの意図を正確に理解している」とか「何も投資しなくても金稼いでくれる」でフィルタリングしていくともうほとんど人が残りません。
思うに優秀な経営者がもっとも不足しているようです。リソースが不足するのは常になので、だからこそ経営はビジョンを提示しビジョンにそぐわないことにリソースを割くべきではないのです。それは社会からのリソースの収奪に他ならないからです。
さらに優秀な教育者も不足しているようです。優秀な人間は教育者にならず、優秀でない人間が教育をしたがるという謎のアノマリーがあり、不足を解消するどころか不足に拍車をかけるわけです。優秀となるためには自発的に思考する必要があります。しかし教え手のほとんどが自発的思考ができません。
そしてあまりに自発的に動いてもらっても企業統治的に国家統治的に困るというレンマがあり、捕縛網を被せられたかのようにすごく中途半端な動きしかできず、燻っている人間が山ほどいるのではないかと推察します。
さらに現代のぶくぶくと膨れ上がった社会福祉と国家予算は、「何かを良くしていこう」というモチベーションそのものを税金として奪っていくわけです。燻っている人間が鎮火してもおかしくないですね。
優秀なプログラマーはレバレッジを生み出すことができます。ただし、言われた仕事をただこなすだけではレバレッジは生まれません。
自らが趣味のようにプロダクトクオリティに関心を持ち、自由な関心のもとで働くことで仕様書に書いてあること以上の価値を生み出すことができます。
残念ながら理想的な日本的マネジメントによる受動的な開発スタイルでは、このスピードに勝てないというのが現実です。大企業のように優秀なマネージャがいれば、開発は外注やオフショアで良いのでは?という発想は間違っていて、ギークのような人材が能動的に活躍するシリコンバレーのような空気感で、能動的に考える人の頭数をいかに増やせるか?ということが重要なのだと思います。
そのような考える力と開発力を持った人がテックベンチャーとして起業してイノベーションを起こしGAFAなどに買収され、お金持ちが生まれ、またその資金が次の人材を産み出すところまでを含めたエコシステムに現れていて、会社の枠組みを超えた自由意志による産業勃興の流れこそがレバレッジを産むことにつながります。
少し頂点の話をしてしまいましたが、ソフトウェアで成功しようと思ったら、そのような人材を頂点としたチーム構造を期待するのは当然であり、その結果、優秀なプログラマーを欲しがるニーズに繋がり、結局、人が足りないよねという言説に繋がるのだと思います。
理想的な産業においては、幅広い人材がみんなで汗をかいて努力することで利益を生み出すことができることだと思います。それにより、誤解を恐れずに言えば、それほど優秀ではない人も職を得ることができるのですし、人口が多くも少なくもない日本においてはこちらの方が産業効率は高かったはずです。これはライブドアがフジテレビを買収しようとした時に国民の反対感情を煽るために使われた論点だったと思います。
しかし、ソフトウェアに限っては、汗をかくという部分のいくらかをコンピュータに代替させるので、最適な実装を生み出せる優秀な人材が成果を総取りしていくことになります。
昨今のAIブームで高学歴かつ数学が得意な博士課程出身者などという、これまでどちらかというと日陰者扱いされていた人材に脚光が浴びてるのは、このことと無関係なことではないですし、優秀な人口流入が期待できるシリコンバレーに成果が集中し、海外からの優秀な人口流入が期待できずに、優秀な人材比率が人口比に連動してしまってる日本では不利になるのも、この辺がポイントになるかと思っています。
人口が多いインドや中国が覇権を握りつつあるのは、結局そういうパラダイムシフトなのかなと思いますね。仮にどの国でも優秀な人材発生率がほぼ一定なら人口が多い国の方が強いですし、そういう人材を集める場所が最も強いです。
不足しています。「安くて優秀な」プログラマが。多くの場合は片方を満たしています。じゃあどっちかを諦めればいいじゃん?その通り。ないものねだりをしているだけです。
問題はそれがなぜかです。自分もこの世界は長いですが、昔はそうでもなかったのです。顧客は、不具合が出れば一緒に徹夜してくれたり、完成を一緒に祝ってくれたりも普通でした。設計上の悩みに相談に乗ってくれたりもしてくれていたのです。最近はドライですね。カネ払ったんだからバグなく完成して納品するのは当然、契約のスキをついてあわよくば値引きしてやろう、と虎視眈々。仕様決定が延びに伸びても納期は一緒、開発費の上積みもなし、と突っぱねる。
顧客とベンダの力関係、信頼関係は、ここ20年くらいで随分変わってきました。ベンダは、顧客の要求に応えて少しづつ単価を下げ、無理難題にも応えてきましたが、これが行き過ぎてしまったのではないでしょうか。
Amazonの送料無料が破綻したのと同様、あるいは非正規雇用が増えてきたのに人材不足が慢性化しているのと同様、どこかで発注側が発想を転換してくれないと、需給バランスは崩れっ放しです。
日本のプログラマー全員の能力は知りませんし、海外のプログラマーも伝説級からへっぽこまでいろいろです。全員知らないのに「どちらがレベルが高い」などと断言することは不可能です。
人間としての能力の総量や可処分時間は、国や人種に違いがあってもさほど変わらないというのが自分の持論です。どの国にも、あっと驚く強力なプログラマーはいますし、へっぽこがゴロゴロしている様子もさほど変わりません。
ただし、能力の高いプログラマーを生み出す「土地」の条件はあると思います。
人口……ある程度、プログラマー集団の母集団の大きさは必要と思われます。また母語の話者数の多さも有効です
時代……なるべくコンピュータが普及した時代が早い時期であること(それほどコンピュータの全体像が巨大でなく難解でない)
時間……強力なプログラマーが育つには時間と経験が必要です
そのうえで、レベルが高いの低いのという比較をすると、スペシャリストとして存在することを許容されるか否かということになるでしょう。とくに、シリコンバレーとその周辺のプログラマーは専門性が高いようです。
日本国内でも、Windowsについてなら誰にも負けないスペシャリストのプログラマーがいたとして、その人がMacのプログラムも組まされて、作ったプログラムがヘボヘボである可能性はあります(多いな、そういうの!)。
割となんでもできる平均点を求められる日本のプログラマーと、割と専門的な働き方をしている海外(シリコンバレー)のプログラマー。1つのテーマで競ったら、差が出てしまうことでしょう。
日本国内でも、デバイスドライバを作っているようなエンジニアは世界でも有数のレベルにあるでしょう。(コンソールやアーケードの)ゲームもそうですね(JRPGとガチャゲーはまったくお話になりません)。
日本の多くの組織では個々のプログラマの能力を技術系のトップの人間「以下」に抑えたがる傾向があって、組織の力が弱いように感じます。管理者が自分よりも有能な人間を使えない。
個々の兵隊(プログラマー)の力がほどほどでも、管理者(隊長)が有能であれば兵隊の集団である軍隊の力を高められると思います。でも、日本の組織はここに最大の問題点があると思っています。
管理者が有能であれば、能力の高いプログラマの能力を活かせます。なので、どちらかといえば「管理者」の能力が低いので世界有数のプログラマのパワーがあっても活用できず、強くならないのでは? と思っています。
管理者が無能だと、「無茶なことを権力をかさに強要する」という方向にしか管理できなくて、そもそも間違ったゴール地点に逆立ちして全力疾走させたりしがちです。これでは、普通に足で正しいゴールに向けて全力疾走している相手に勝てるわけがありません。
管理者が無能化するのはAppleでも悩まされた話のようで、管理者がトップの顔色と意向と保身のみを考えていれば日本の管理者の多くのようになり、Appleにおいても製品を作ることではなく「管理すること」自体が目的化して「管理しかできない管理のプロ」が有害だったと言われています。
これを防ぐためにApple社内で採用されたのが、現場から管理を行う人間を抜擢する方法。最終的な製品を世に送り出すことで評価され、そのことを目的とするため「管理のための管理」をしなくなったと言われています。
最終的には、プログラマー上がりの管理職を登用して、管理職の評価を「トップの無茶でワガママで思慮に欠けた意向」に従ったことで行わないといったところでしょうか。それでも、ゴマスリとか管理者とのコネといったものはApple社内であっても横行しているようで、難しい問題なんでしょうね。
え? 私の印象とは真逆ですね。根拠がありますか?
実際にシリコンバレーと東京で(おそらくは同程度のスキルの)プログラマーの収入を比較すると半分以下だと思います。地方ならさらに安い。
これはシリコンバレーという物価も年収も高い土地だから特殊だと思うかもしれませんが、シンガポールや上海と比較してもまだ日本のほうが安いと聞きました。さすがにベトナムよりは高いようですが。
今や日本はITエンジニア人件費の安い国になってしまいました。
この手の話題には普段は回答しないのですが、今回は完全に間違った回答がすでに数十も高評価を得ており驚いたので回答します。(匿名氏による回答)
この回答者さんや高評価している人たちは、メルカリ, LINE, Zozoなどの大成功しているIT企業のことを聞いたことがないんでしょうか?
メルカリやLINEやZozoのソフトウェアを、NTTデータとその下請け奴隷プログラマが作ってるとでも思ってるんでしょうか?
そうした会社では、ごく普通のプログラマが直接雇用されてソフトウェアを作ってるわけです。現在の日本だと、こうした大手の給料はだいたい年収700万円~くらいが相場かと思います。労働環境は悪くなさそうです。
僕の友達にも大勢いますけど、そのほとんどは計算機科学の学位をもっていません。それどころは中卒や高卒の人も大勢いますよ。日本では独学のプログラマが非常に多いので。
確かにGoogleには博士号を持った人も多く働いてますが、そのほとんどは別に高度な数学を駆使するわけではなく、プログラマとしてごく普通にプログラムを書いてます。 (ってもし間違ってたら訂正してくださいGoogleの人)
もちろん他社で働くよりは高い専門性や知識を求められるでしょうし、ときとして科学力を要求されることもあるでしょうが、いつも高度な理論をいじりまわしている人は、その一部でしかないでしょう。
ソフトウェア業界においては「とにかくちゃんと動くプログラムを作ること」が非常に大事であり、それができる人はなかなか少ないんですよね。
多重下請け構造の会社とか、オフショアとかでは、高品質のソフトウェアは作れませんので、各社はプログラマを自社雇用するのです。博士号もってる人が、普通にプログラムをひたすら書く必要があるくらい高品質なプログラミングは難しいのです。
日本とアメリカのIT産業は構造がかなり異なります。結構複雑なので、できるだけ簡単に書いてみます。
アメリカのIT企業は、ITを使ったサービスや製品で直接利益を得ようとすることが多く、競合他社より先じて、製品をリリースして、先行者利益をねらいますので、コストをかけることに積極的です。
コストをかけてでも、良い製品を、早く作る必要があるので、優秀なエンジニアには、高い給料を支払う事が普通です。
※その代わり、いつでも解雇できますので、雇用は流動的です。
一方で、日本のIT産業はSIerが中心ですが、SIerは基本的には請負商売ですので、リスクを取らずに済むけど、儲けは少ない感じになります。
規模をスケールすることで、利益を増やすのが基本的な戦略になりますが、顧客からはコストダウンの圧力が常にありますので、薄利多売になりやすく、エンジニアの給料はできるだけ低く抑えるのが、利益を出すポイントになります。しかし、給料が安いと良いエンジニアが集まらないので、その辺にジレンマがあります。
また、日本では、従業員を簡単に解雇出来ませんし、給料を下げることも難しいので、高い給料を支払うことが、将来のリスクになりえます。そういう人が「働かないおじさん」になったら、ヤバいんですね。
こういった課題を、外注や下請けで、労働力を確保することで、何とかやりくりしています。その結果、IT産業のゼネコン化が進みました。会社の規模によって利益に大きな差があり、プログラマーの給料水準は階層化されている感じです。
特に、プログラミングの工程は、外注化しやすいので、中小、零細になるほど、プログラマーをたくさん雇用する傾向があります。大手や中堅は、管理や営業などの比重が高く、プログラマーの採用にはやや消極的です。
また、日本とアメリカを比較する場合は為替や物価の影響も受けます。円安、デフレ、などの影響で、ここ30年くらいで、3倍くらい差が広がった感じですね。
ざっくり説明してみましたが、ちょっと乱暴だった部分もあるかなと思いますし、間違っているかもしれませんので、話半分くらいにとらえてもらえるといいかなって思います。
そうですね。
技術者なので、出来るか出来ないかと言う境界線が存在し、あなたの想定する初心者は、職業エンジニアに満たない趣味の素人でしょうね。 よほど切羽詰まっているか、よほど余裕のある企業でなければ採用しません。 実務経験が無いけどちゃんとプログラムが書ける初心者は普通に現場で求められていますが、ロクにロジックも組み立てられない人間は邪魔でしかありません。 単純労働のように時間作業すれば一定の成果が出るわけじゃ無く、何も利益を生み出せず、逆にバグを量産し業務を妨害する結果になります。 必要なのはプログラマという職種を名乗りたい人では無く、プログラミングが出来る人材です。
この質問、炎上しているんだろうなぁと思いながら開いてみたら案の定賛否いずれかにかなり寄った回答がズラリと並んでいて、悪い意味で錚々たる眺めだなぁと思わず苦笑してしまいました(失礼)。
(Image by Comfreak from Pixabay)
閑話休題。僕自身はソフトウェアエンジニアでもプログラマーでもないのですが(≒免責事項)、職掌柄仕事で大なり小なりプログラミングを主たる仕事とする人たちと組む機会が非常に多く、またずっとtech / IT業界に身を置いていて「どういう現場にどういう人たちがいるか」は大体感覚的に分かるので、それらの見聞と経験をもとに回答を書いてみようかと思います。
(** 当事者ではないゆえ事実誤認や認識違いなどあるかもしれませんので、お気づきの方はどうか遠慮なさらずご指摘ください)
なお最初に結論から書いておくと「日本ではプログラマーが本当に下働きに位置する世界と花形にある世界とがあり尚且つ両者はほぼ互いに交わらない」ということだと僕個人は理解しています。以下詳細を書いていきます。
【エンジニア(プログラマー)が下働きの世界の話】
前々職時代に、実際にそういう立場で社外から派遣されてきているプログラマーの人たちが何人も同じチームにいて、その人たちから一通り教えを乞うた(≒説教された)ので「実際に下働きのようなプログラミングを主たる仕事とするプログラマーたちが少なからずいる」ということを理解した次第です。
それは、いわゆるSESを中心とするIT多重請負の世界です。自主開発する能力がないor足りない(主に自社エンジニアの頭数が)会社が、特定のプロダクトやプロジェクトのためにスポットリリーフで外部からプログラマーというかいわゆるSEを呼んできて、代わりに開発してもらうという構図です。
この構図におけるIT開発に共通しているのは「プロダクトがひとたび開発して納品されたら以後はメンテする以外の開発作業がなく開発が継続されない」点です。一回こっきり作って納品したら、メンテ要員以外はお払い箱。故に継続的に開発を担当するプログラマーやエンジニアを正社員で雇うのは高コストだということで、社外から都度人を呼んでくる(調達してくる)という形を取るところが多いようです。お役所やメガバンクあたりのシステム開発を想像してもらえると分かりやすいでしょう。
これはIT開発に限らないのですが、日本における事業会社の多くはメンバーシップ型雇用のために正社員の多くがジェネラリストで、専門性を要する(IT・web・広告運用など)業務については社外から専門の人材を呼んでくることで対応する傾向が非常に強いようです。そのため、特にIT開発においてはかなり以前から業務委託や特定派遣(2015年に法制度としては廃止)という形でエンジニアというかSE・プログラマーを直接開発現場に送り込む業者が多数存在しています。
それらの形態でIT開発に参加するSE・プログラマーの人たちは、一般に多重請負によって費用を中抜きされたところから人件費をもらう立場にあるためか給料が安いことが多く、しかも発注元である事業会社からは「お客様は神様」と言わんばかりの高圧的態度で使い潰される(※これは偽装請負に当たるので本来なら違法)こともままあり、長年「IT土方」「人月奴隷」「人売り」といった表現でその労働環境の劣悪さが揶揄されてきたようです。
しかもさらに間の悪いことに、上記のような「多重請負」構造がこの状況を悪化させています。事業会社からの発注を直接請ける「一次請け」は往々にして大企業であることが多く(俗に「SIer」とか「ITベンダー」とか言われる大企業)、彼らの少なからぬ割合がプランニングや上流工程だけを担当するに留まり、残りの実際のプログラミングや実装などの業務を「孫」「ひ孫」請けに丸投げしていたりします。必然的に、複雑に階層化した労働集約型の人的組織をもってIT開発をすることになるため、自ずといわゆるウォーターフォール型開発方式をとることになります。それは、ある程度きちんとした開発物が出来上がる一方で、開発プロセスに比較的長い時間がかかる上に、後から機能追加などの改修を行うことが難しくなります。
一つ注意すべき点として、そういった立場のSE・プログラマーだからと言って開発スキル・技術が劣っているわけではないという点があります。数多くのバリエーション豊かなITプロジェクトを渡り歩いてきた結果、非常に高度な開発スキルを持つ人たちも少なからずいます。僕も、前々職ではそういった百戦錬磨の特定派遣SEの人から、SQLやJavaのコーディングを教わったものでした。ただし、やりがいに乏しい環境であることもあってか、やっつけ仕事というか投げやりにしか業務をこなさず、結果的に開発スキルが低いままという人も中には見受けられるようです。また、「一次請け」だと実際には開発業務を行わない人も多く、エンジニアという肩書きなのに普段は1行もコードを書かない(書けない)人も少なくない模様です。
ちなみに前々職で知り合った特定派遣SEの一人は、前々職から見て「孫請け」の会社から来ている同世代のロスジェネ男性でした。ロスジェネなど、社会的に冷遇されていてなかなか正社員雇用にありつけなかった人たちが、「孫請け」以下の開発ベンダーに安月給の労働者として勤めていることが多いという個人的な印象もあります。皮肉なことに、「一次請け」に当たる開発ベンダーは有名大企業が多く、正社員だと普段は1行もコードを書かない(書けない)のにそこそこの高給取りだったりします。
以上のような状況を踏まえて、プログラマー含む外部ベンダーたちを「ただの下働き」呼ばわりし、特に多重請け構造の中で下流で実際にプログラミングなど実装を行う人たちを「下層」とみなす、日本の事業会社(の正社員たち)はかなり多いようです。それが良いか悪いかはさておき。なお余談ながら、そういう事業会社ではいわゆる「スーツ族」すなわち営業や企画の人たちが幅をきかせていることが多く、エンジニア(プログラマー)のような内勤の人たちを「社外に出て汗水垂らして働かずにずっと社内で机に座っているだけの怠け者」と軽蔑する文化すらあるように聞き及んでいます。
【エンジニア(プログラマー)が花形の世界の話】
一方、世の中には(日本であっても)プログラマーが花形とみなされる世界があります。それは、同じIT開発プロジェクトと言っても「一度リリースしたアプリ / サービス / プロダクトを継続して開発し続け、早いサイクルで改善し続けることがビジネス上の競争力として働く仕組みになっている」ような世界です。
例えば、現在僕が勤めている会社がそうですね(笑)。この点については深入りは避けますが、ソフトウェアエンジニア(プログラマー)もしくはソフトウェアデベロッパーにとっては非常に良い環境だということは断言できるかと思います。俗に「シリコンバレー発」と言われるベンチャーやスタートアップでは大体同じような感じです。
ただし、同様の開発形態を採用する新興企業は日本でも増え続けています。他の回答でも名前が挙がっていましたが、例えばメルカリやLINE、はたまたエムスリーといった新たに勃興したwebアプリ・サービスを手掛ける企業などが代表格でしょう。他にも、いわゆるAI(人工知能)の開発をうたう企業なども同様です。全般的に、日本国内でベンチャーとかスタートアップとか言われるところの多くが当てはまるという認識です。
これらの企業に共通するのが「事業会社で自主開発(内製)かつデジタルのサービスやプロダクトが主力ビジネスである」「社会の時流に合わせてサービスやプロダクトを常時改善し続けている」ということ。このスピード感に対応するには、都度プロジェクトごとに社外から人員を調達してきては終了次第送り返すというような、鈍重なやり方では無理でしょう。なればこそ、自社内に正社員としてソフトウェアエンジニア・プログラマーを抱え、自主開発を主軸としているということだと思います。
自社エンジニア(プログラマー)による自主開発となると、自ずと階層構造の浅い人的組織のもとで開発することになるため、これらの企業ではいわゆるアジャイル開発方式が好まれるように見受けられます。最初から綿密な上流工程を組むのではなく、スピーディーに開発してスピーディーにプロダクトをリリースし、バグなど問題点があればスピーディーに改修し、新たなビジネス要件が生まれたらスピーディーに追加実装する。この繰り返しで、プロダクトも会社のビジネスも疾走していくというイメージです。最初から完結した完成品としてプロダクトを世に出すわけではないので世間からはアラが目に入ることもありますが、それも含めてのアジャイルカルチャーですね。
しかも、これらの新興企業で働く自社エンジニア(プログラマー)たちは、自社の急成長もあって給料も比較的高く福利厚生にも恵まれていることが少なくありません。彼らが「下働き」なんてとんでもない話で、むしろ「花形」と呼ばれるべきでしょう。実際、それらの企業では「有名エンジニア(プログラマー)」が前面に出て企業イメージのアピールをしていたりすることが珍しくないです。
余談ながら、そういう企業の自社エンジニアのポジションは人気があるので、どうしても採用されるための競争は激化しがちです。有名大学のコンピュータサイエンス系専攻出身者やさらには修士・博士号取得者が採用されることが多いのも、その過当競争の結果であるとも言えます。
【どちらにも相応の事情がある】
一般に、この手の話題は炎上します。理由は簡単で、特に近年web開発などで隆盛を誇っていて各種SNS上で多数活動しているソフトウェアエンジニアの方々から見れば、「エンジニア(プログラマー)は下働き」などという言説は侮辱以外の何物でもないはずです。これについては僕もよく理解できます。
ただ、ここで勘違いしないでいただきたいのは「どちらかが正しいわけでもどちらかが間違っているわけでもない」ということ。
理由は二点あって、一つは両者はビジネスという意味では排他的ではないという点(人材としては排他的かもしれませんが)。原則自主開発だが人手不足の部分は社外ベンダーを活用するという事業会社もありますし、逆にITベンダーとして事業会社の顧客に人月換算の労働力としてエンジニア(プログラマー)を送り込むのがメインの事業ながら自社の基幹部分の研究開発は実力ある自社エンジニアが担っているという会社もあります(そういう古典的日本企業の研究開発エンジニアはベンチャーやスタートアップに引き抜かれがちという側面も)。
もう一点は、やはり特にIT化やDX以前からある伝統的な日本企業の事業会社でメンバーシップ型雇用を堅持しているところだと、IT/webの自主開発には意欲的だが人件費の調整弁という意味でも社外ベンダーに任せたいという企業が多い点です。そういう企業だと往々にして新卒一括採用慣行が支配的で「中途採用で腕利きのエンジニアを雇う」みたいな真似がしづらいことが多く、どれほど自主開発したくても(自社でエンジニアの育成が追いつくまでは)社外の開発ベンダーに頼るしかない、というようなケースがままあるように思います。
これは大雑把にまとめると「古典的な日本企業はエンジニア(プログラマー)のような専門職をきちんと採用して育ててくることもしなかったので社外ベンダーに頼るしかなく、日本企業でもベンチャーやスタートアップはそれら専門職を最初から社内に抱えているので内製できる」「それゆえ社外ベンダーは大手から零細まで多数が高額の予算に群がって多重請け構造を形成する」という話に過ぎないのですが、それは上記のように新卒一括採用やメンバーシップ型&終身雇用といった日本の企業人事文化の根幹に由来することなので、一朝一夕には改善することすら難しい根の深い問題だと言えるでしょう。
……以上、僕個人がtech / IT業界で見聞してきた業界事情の概説でした。これらの話題はIT系の各種メデイアでも定期的に話題になりますし、そのたびに毎回炎上しているように見受けられますので、興味がおありの方は時々チェックなさると良いかと思います。
「経験不足」ではなく「能力不足」でしょうね。
大学でIT関連の教員を行なっておりますが、ゲーム会社にアルバイトで勤めてバイトながらリードエンジニアのような立場にいた教え子もいましたし。在学中に大手の外資系企業で月60万円ほど稼いでいた学生もいましたよ。私も学生時代はエンジニアのアルバイトで下手な会社員よりも収入がありました。
基本的に資格がいらない業界な分、間口は広いですが、その代わり個々の能力にバラつきがあるので、(時間的な意味合いでの)経験のあるなしというよりも能力のあるなしによるところが大きいです。名乗るだけなら誰でも名乗れてしまいますしね。不足しているのは「出来る」プログラマということです。
よく仲間内での小ネタに話しますが、小学生を十人集めたら綱引きで一人の大学生に勝てるかもしれないけど、その十人で大学入試の問題を解いても解けないでしょ、という話です。
プログラマーという職業を名乗っている人はいっぱいいます。
使えるプログラマーは一握りです。
優秀なプログラマが一人で作れるものを、3から5人で開発している場面をよく見ます。 優秀なプログラマが不足しているから低スペックのプログラマの数でまかなっている訳です。 結果、プログラマがどんどん不足していきます(課題にフィットしない、なんとか解決できるプログラマを数で順次充当していくと、能力不足ばかりになっていく)
ゲーム的表現
- Lv100が必要なクエストが3個ある、しかしLv100が2人しか居ない、仕方ないので1つのクエストについてはLv80の3人で攻略する
- Lv80が必要なクエストが10個ある、Lv80が10人居たはずだが1に3人抜かれて7人しか居ない、3個のクエストはLv50の3人ずつで対応して9人で攻略する
- Lv60が必要なクエストが100個ある・・・と繰り返していって不足が増加する、ボリュームゾーンに適した人材が、上位クエストに引き抜かれている都合でどんどん不足増大する。
挙げ句の果てに苦し紛れに、戦士が必要なクエストに、魔法使いを転用して人数で補う(サーバのエンジニアにフロントを作らせる)みたいな効率悪化も起きる。
日本のIT業界は人月単位でコストを計算するので、低スペックをいっぱい投入した方が代金を多く取れるのも原因ですが。
日本は長年、プログラマ30代限界などの通説によって熟練エンジニアをどんどん追いだしてきたために、経験による高レベルプログラマがあまり居ないために、適性のおかげで若くしてレベルが上がった数少ないプログラマ位しか高レベルに対応できないです。 人はそれを天才と呼びますが、天才はそんなにしょっちゅう生まれません。 凡人も多くの経験により高レベルを身につける事になるけど、それを捨ててしまっていた。 結果、一部に生き残った高レベル凡人と、数少ない天才だけでは高レベルをこなしきれなくなり、能力の不足したプログラマを人海戦術で使うしか無くなり、人材不足を起こしている。 システム設計が酷くて、実装や改修に余計なエンジニアを消費しているとか言う物もよく見るしね(高レベルが必要なシステム設計にレベル不足がなんとか行う結果、適切な設計ができないために更に人数が必要になる現象) じゃあ、経験者を戻せば良いかというとそうでも無く、経験者と言ってもその仕事を続けて最新のアップデートを適用していなければ役に立たなくなるので、一度捨ててしまった熟練者を再戦力化する事は出来ず、長い時間をかけて育てるしか解決策が無いのです。
うーん、プログラマーは非常に高度な知識をもっていたり、休日とか含めて勉強したりする人たちが普通なので、
普通の労働者レベルの給与で募集しても応募してこない、ってことなんじゃないですかね。
ためしに、今の2倍のお金を出す。っていう形で募集してみてくださいよ。
より、たくさん応募してくると思いますよ。
だって、そういうことやってる企業さんはちゃんと人を集めてるっすよ。
結局なんで、日本ではプログラマーの給与ベースが他の職種と同じようなものだと思う人が多いんですかね。
特殊な技術を持っている人たちですから、他の人達よりも一段階も二段階も高い報酬を払ってあげてくださいね!
追記
結局のところ、まだまだ、非プログラマー職の方々に、なめられているのかな、と思うんすよね。プログラマーって。
うちらはソフトウェア開発のエンジンというか中心じゃないですか。
で、互いに競争があったり、顧客要望の厳しさがあったりして、仕事内容は単純作業と比べてものすごい頭使わなきゃいけない、非常にハードな仕事じゃないですか。
できなきゃ、無知な人からすら責められますし、また、できなきゃ企業に莫大な損失させてしまったりします。
他の全ての職業と比べることはできませんが、極めて難しくプレッシャーの多い仕事なんです。
他職種と同じ給与ベースで、よいわけないです。
そういうなめられている状況にプログラマーは甘んじてちゃ、いかんと思うんです。
他の職種と同等、みたいな立場にいちゃあいかんすよ。他職種よりもすくなくとも1.5倍くらいの給与ベースを求める!とか、そういう心構えでいっておかないと!
我々プログラマーに、もっと正しい地位と評価を!と、主張できる人が増えますように!
日本のプログラマーの殆どは、大学で専門教育を受けていません。日本の情報産業が勃興したのは1970年代で、高度成長に応えて成立しました。この時期に日本もふくめて世界中で Computer Science の教育が大学で始まったのです。日本の情報産業はCS教育にたよることなく、自前でプログラマーを育成し、それがビジネスとして成立しました。新入社員への2,3か月のプログラミング教育は、写経教育と呼ばれるお手本を覚える教育で、それが今に至るまで50年間続いたのです。
外国では、大学レベルでこのような教育しかしない所はないのですが、日本では逆に産業界で行なわれる写経教育が大学教育に導入されることが起こる程、一般的なものになりました。情報産業の経営者は、プログラミングは日本人ならだれでも出来る簡単なことだと豪語しています。たしかにソフトウェア開発には土木作業のような人足作業もありますが、大事な部分は宮大工のような繊細で高度なものです。日本の情報産業は扱いにくい宮大工を追放して土方作業だけでビジネスをやってきました。従って日本のプログラマーの地位が低いのです。
90年代に入ると先進国では経営を、ITを前提に再構築することが一般化しました。このため、数%の経済成長が続いたのですが、日本では今に至るまでこれが起きていません。AIとさわいでいますが、CSをキチンと学ぶことは大変なことなので、AI化を写経スタイルで凌ごうとしています。
この問題は、単に情報産業の問題ではなく、日本の社会全体のITに対する意識の問題なので、簡単には解決できません。
もちろんです!
さあ将軍さま、彼らがその能力を発揮できて、フル稼働しつつもキャパオーバーにならず、高額な案件が決して途切れないよう会社を回してください!
すごいプログラムを短時間で作れても、会社がそれでいくら稼ぐかは彼らの仕事ではありません。それが製品だったら企画の、受託開発だったら営業の仕事です。つまらない仕事しか無かったら、遊ばせてしまったら会社は大損です。
さらに、そこで給料を下げるようなマネをすれば彼らは会社を去ってしまいます。優秀な人を使えない会社だと自ら証明するのも同然なので、絶対に代わりは来ません。
昔から「人材の質は(業界での) 給料 と 知名度 (と人気) による」と言われてきました。いい会社はいい人を集める。それは、いい給料を払い続けられるからだという当たり前の推論です。
プログラマーの給料という狭い範囲の話ではなく、結局、いい会社であり続けることが一番安くつくようです。
はい、そうです。
優秀なプログラマは、平均的なプログラマの1.5倍程度の給与で雇えると思いますが、会社への貢献度は10倍~100倍にもなるかと思います。なので圧倒的に安くつきますね。
Googleとかで働くような超優秀なプログラマは、たぶん日本の平均的なプログラマの5~10倍くらいの給与をもらってるはずなので、平凡な日本の会社ではちょっと払いきれないかもしれませんが…。弊社も無理ですね…😱
どうやって優秀なプログラマを見分けるか? それには秘訣があるんですが、ひみつです。
追記: 簡単な仕事もあるから平均的なプログラマも必要だよ、という回答がありましたが、現代的なソフトウェア業界では、それは否定されてるように思います。
なぜなら優秀でないプログラマは、品質の低いコードを書くかもしれず、品質の低いコードがあると全体の品質が下がっちゃうからです。コードの品質はソフトウェア企業にとっては命ですので。
プログラマーはたくさんいます。掃いて捨てるほどいます。プロジェクトができるたびに派遣プログラマーを募集する場合が多いんですが、募集をかけさえすれば安価なプログラマーの頭数を揃える事はとても簡単です。
優れたプログラマーだけを数人集めて仕事した方がはるかに効率が良い、とはよく言われますが、現実は優秀なプログラマーだけでチームを組むなんてできません。人間は99%が凡人です。世界レベルのプログラマーしかいない会社なんてありません。みんな給料をもらうためプログラミングしているただの労働者に過ぎません。プログラミングは特殊能力と思われがちですが、少し練習すれば誰でもできる簡単なお仕事です。
足りないのは優れたリーダーと優れた設計者です。各々のプログラマーの力量に合わせ仕事を割り振り、上手にまとめ上げる経験者がリーダーになると、プロジェクトはとてもスムーズに進みます。手慣れた設計者が設計すると、堅牢でメンテナンスしやすく、品質の高いシステムが完成します。もともとのシステムの素性が良くなるからです。
日本のIT業界は多重請負構造がまだまだ残っているので、元請け企業社員がリーダーになる場合がほとんどです。この人の経験値によって、プロジェクトのコスト、開発期間、システム品質が、大きく左右されます。多くの場合、元請け企業の社員が一番経験値が低く、下請けになる程経験値が高くなる傾向にあります。下請けで寄せ集められるメンバーは、プロジェクトが変わるたびにまったく違う現場へ飛ばされるので、一番実践で鍛えられているからです。
「元請けは偉い」「下請けは補助員」という認識を改め、実力主義で適材適所に人員配置しない限り、効率的な開発になりません。
0 コメント:
コメントを投稿