ソフトウェアエンジニアとして生きるのは狂気じみている
(0x1.pt)- 他の職業もこうなのかと、よく考えてしまう
- ソフトウェアエンジニアは最初から複数のプログラミング言語やツールを知っていなければならない
- しかしそれだけでは不十分で、会社が使う特定のフレームワークも習得しなければならない
- 例: Rails、Django、Laravel など
- CSS も必須だが、なぜレイアウトが崩れるのかは一生学んでも分かりにくい
- ほどほどに知っている程度でも生き残ることはできる
JavaScriptとフロントエンド生態系の進化
- JavaScript を避けられるケースはまれ
- レガシーアプリで jQuery だけを使う場合は運がいい方
- React が登場してから、フロントエンドとバックエンドが分かれ始めた
- しかし企業は人員を増やさないまま、全体を扱う「フルスタックエンジニア」を求める
- React の学習は必須
- REST API の実装も必要
- 型が必要だという話になり、TypeScript も学ばなければならない
- 状態管理は Redux で解決しろという空気
- ツール設定も必要: webpack、esbuild、rollup、Prettier、ESLint など
技術選択の自由? 実質的にはない
- 従来どおりのやり方でも構わないが、現実はそうではない
- React しか触ったことのない新人にサーバーサイドレンダリングを教える余裕があるのか考えなければならない
- スタートアップは素早く動き、資金も燃やす構造なので、標準から外れにくい
システム管理の変化: DevOps の登場
- 以前はシステム管理者(System Administrator)が別にいた
- インフラ管理、DB アップグレード、デーモン管理などを担っていた
- 現在は DevOps 文化によって、エンジニアがすべてを担うようになった
- Docker の学習が必要
- Docker が不要な構成でも、Ansible、SystemD のようなツールを習得しなければならない
クラウドとインフラ管理ツールの必要性
- いまや AWS も必須で扱えなければならない
- GUI を使うのは初心者扱いされるので、Terraform や Pulumi のような IaC ツールも学ぶ必要がある
昇進したら終わり? それは新しい始まり
- マネージャーになると、まったく別の仕事を学ばなければならない
- 締め切りの見積もり
- 作業の割り振り
- タスク定義の作成
- 年次評価への参加
- プロダクト会議でのフィードバック提供
- 会社の規模が大きくなっていなければ、依然としてエンジニア業務も並行しなければならない
要求事項は果てしなく増える
- 最近、ある秘密主義の会社から連絡が来た
- 求める技術: Rails、Hotwire、ネイティブモバイル開発
- カーネルやコンパイラ開発まで求めてきそうな勢い
- ソフトウェアはますます複雑になっている
- 複雑さには理由があるが、専門分化は消えつつある
- 家を建てるのにもさまざまな専門家が必要だ
- それなのにソフトウェアでは、すべての役割を一人に求める状況になっている
未来への希望: いくつかのプロンプトでアプリ開発する世界
- これほど複雑な現実なら、いくつかのプロンプトでアプリを作る未来も悪くない
97件のコメント
少なくとも、SWエンジニアは21世紀のゴールドラッシュに挑める職業だとは思います〜
書き手がどのあたりに難しさを感じているのかは理解できますが、反応が妙ですね。現実には別のもっと大きな困難があると並べ立てても、あまり助けにはなりません。 それは主観的なものですから。
https://whoisnnamdi.com/never-enough-developers/
なぜ熟練したSWエンジニアを見つけにくいのかを分析した海外の記事なので、一度読んでみてください。
エンジニアとして始めても、途中で非エンジニア系に転職する割合が高い - 新しい技術への移行が他の職業より非常に速い - 2007〜2019年のオンライン求人情報を分析 - コンピュータおよび数学分野では47%が1つ以上の新しい技術を要求(例: 2007年には一般的でなかった技術) - 教育、法律などの分野では20%であることと比べると非常に大きな変化 - 2007年に使われていた技術のうち16%は2019年にはもはや役に立たない技術になっていた。これも他の職業と比べると2倍程度。 - 必要な技術が急速に増え、また急速に消えていく。 - つまり、経験を積んでも安定しにくい。経験者もキャリア初期には存在しなかった技術を学び続け、成長しなければならない。 - 変化の速い分野(例: コンピュータサイエンス)の職業は、他の職種よりキャリア初期に高い給与を受ける傾向がある。しかし時間が経つにつれてこのプレミアムは急速に減少する。35〜40歳以降は他職種(社会科学、ビジネス)と比べると、むしろプレミアムが小さくなる。 - エンジニアリング: 初期は高度に熟練し、変化の速い職種。初期キャリアの収入は最大化される。だが時間が経つほど新しい技術が導入されるにつれ、持っていた技術の価値は下がっていく。労働者はキャリアを積んでも学び続けなければならないが、学習効果は薄れ、経験を活用した収益は低くなる。 - 速く学ぶ人ほど速く去っていく。 - 認知能力が高く、習得の速い人たちは、急変する分野にいるより安定した分野へ早く移るほうが得だと判断して動く。 - このような中途離脱や他職種への転職率は一時的なものではなく、この分野が大きくなるほど増加するだろう。人材プールを増やせば賃金は下がり、中途離脱率も高くなるはずだ。 - 私たちは優秀な人が残り、できない人が去ることを期待しがちだが、むしろ逆の様相で進んでいる。能力が高く学習の速い人たちが去っている。これはソフトウェア業界に大きな機会費用を払わせている。 - エンジニア職の変化の速度が鈍らない限り、長期的にソフトウェア開発者の労働力不足は続くと思う。
コメント欄の反応のほうがむしろ理解できませんね。韓国が、エンジニアが自己陶酔しているのが問題になる国なのかといえば(そういう人が一部いるかもしれませんが)、むしろ逆に軽視されて意気消沈し、優秀なエンジニアや研究者が海外へ流出してしまうことのほうが問題になっています。SamsungやNaverなどで働いた後にAMDやGoogleなどへ転職した人たちが、後に経験を持って韓国へ戻ってくれば大きな資産になると思いますが、このような雰囲気では、最初からその国に住み続ける人が大半になってしまいそうですね。
ソフトウェア領域を狭く見ていて、付加価値も低いと見ている人が多いようですが、自分が仕事をして実際に目にしてきた領域がすべてではありません。下のコメントのように、システム半導体もSW技術によって競争力が変わります。
コメントでソフトウェアエンジニアをこのように軽視して見下しているのを見ると、今後韓国は製造業や半導体でも大きな力を発揮できなくなるのでしょうね。うぬぼれて他人を見下すのがもちろん良くないのと同様に、実際の価値を貶めることも良いことではありません。
韓国はなぜ非メモリ、つまりシステム半導体で競争力がないのか。結論から言えば、まさに「ソフトウェア産業」で米国に劣っているからだ。半導体と「ソフトウェア」に何の関係があるのかと疑問に思うかもしれない。これからその理由を背景から順を追って説明していこう。
前述のとおり、システム半導体の競争力は半導体回路の設計能力から生まれるのではない。最終的にはハードウェアという形で実現されるが、その根幹には当該応用分野におけるソフトウェアの創造性がある。
https://brunch.co.kr/@airtight/215/…
ほかの方がおっしゃるように、SWも領域は広いです。早く学んで適用できる領域もあれば、専門性を土台に長年の勉強と経験を積まなければならない領域もあります。自分たちの経験がすべてだと思わないでください。
本文は特に他の職業を見下しているわけでもないのに、不思議なコメントがたくさん付いていますね。他の方が言っていたように、人類の生活にITが深く入り込むほどソフトウェアは重要になり、多くのインフラを支えています。各開発者の能力が上がって報酬が増えているのではなく、単に仕事そのものの単価が高くなったのだと思います。昔より重要になったからです。ここでその仕事が大変かどうかは、それほど重要な問題ではありません。大変かどうかは主観的な感情であり、それが特定の職業の待遇を決めるわけでもありません。
自分の実力に自信がなくて、あんなふうに騒いでいるのかなとは思う。できる人たちのことまで大したことないとけなしているし
みんな同じように見せるために
誰でも挑戦できる仕事であるのは確かだけど、だからといってプロ意識や誇りを持つなという話ではない。かなり勘違いしている。
その通りです。誰でも挑戦できるけれど、人によって生産性の差も大きい分野です。それを否定するから、できる人たちが業界を離れたり、海外へ転職したりするのです。
コメント欄の反応が理解できません。自己陶酔も他職種への蔑視も当然してはいけないことですが、そもそも元の投稿で誰かを見下していたのでしょうか? それとも、自分たちは誇りもなく、誰がやっても同じだと思いながらいい加減に仕事をするエンジニアを望んでいるのでしょうか?
あの人が大げさに言っているのも事実ではあります。
批判的なコメントを見て、いろいろ考えさせられました。共感できる部分もあれば、異なる考えを持つ部分もあります。
そうですね。コメントにもたわごとが多いですね。過度にのめり込むのもよくありませんが、ソフトウェアエンジニアリングがそれほど大したものではないと感じるなら、その仕事はやめればいいんです。正直、基準を下げれば簡単な仕事ですが、そうでないなら難しい仕事であるのは事実ではありませんか。世の中の大半の職業がそうでしょうけど。
他人がどんな環境で、どんな性向で、どんな感情を抱いているのかは分からないので評価するのは難しいですが……少なくとも私は共感できませんし、ほかにももっと大変で過酷な仕事はたくさんあると思うので、本文にはあまり共感できませんでした。
それを比較する必要はないでしょう。
•タイトルが「狂気じみている」と訳されていますが、単に今の状況が人を気力を失わせるようなものだと表現したかったのではないかと思います。 そして私は本文にもある程度共感します。昔に比べて、一人のエンジニアに期待されることの範囲が広がり、重くなったのは事実です。さらに、昔に比べてはるかに多くの現実世界がコンピューターシステムの中に入り込み、それだけ抽象化と実装の難易度も急速に高まっています。現実におけるもっと大変な仕事を並べ立てたからといって、この仕事は大変ではない……と主張する必要があるのかと思いますね。
私は、まさにその理由でソフトウェア開発者になりました。この仕事は毎日新しい技術を学ばなければならないから嫌だと思う人もいれば、毎日新しい技術を学ばなければならないからこそ恵まれていると考える人もいます。物の見方は人それぞれのようですね。
そうですね。あの人にとってはそれがつらいことなのかもしれません。つらさは主観的なものですから。
あの人がなぜあそこまで叩かれているのか分かりませんね。ほかの職業を見下していたなら批判されても仕方ありませんが、そういうわけでもないでしょう。実際には、コメント欄のほうがむしろ非理性的に筆者を過剰に非難しているんですよね。
タイトルは「狂気」と訳されていますが、単に今の状況が人を気落ちさせるものだ、ということを表現しているのではないかと思います。 そして私は本文にもある程度共感します。昔に比べて、一人のエンジニアに期待されることの範囲が広くなり、求められるものも大きくなったのは確かです。さらに、以前よりはるかに多くの現実世界がコンピュータシステムの中に入り込み、それに伴って抽象化と実装の難易度も急速に高まっています。現実世界のもっと大変な仕事を並べ立てたからといって、この仕事は大変ではない……と主張する必要があるのかな、と思います。
人類の生活にITが深く入り込むほどソフトウェアの重要性は増し、多くのインフラを支えるようになります。だからこそ待遇が変わったのであって、その仕事が大変かどうかはここで重要な話ではありません。
そうですね。そもそも大変さは主観的な感情ですし、大変だからといってそれに見合った扱いを受ける世界ではありませんでした。コメントのほうがむしろおかしいと感じますね。待遇は生産性などにどれだけ貢献するかによって決まるのであって、その仕事が大変かどうかとは別の話です。
ほかのことはさておき、IT分野には情報がより公開され、自分の成果物を互いに共有する雰囲気が企業も含めてかなり広く浸透しているので、そういう点はいいと思います。
落ち着いて考えると、あらゆる情報が開かれていて、いつでも応答してくれるコンピュータと仕事できるのがどれだけ楽かって話だよね(笑)
この記事は、まるでソフトウェアエンジニアの人生が苦痛と無秩序だらけであるかのように感じさせますが、実際には筆者自身が経験した特定の技術トレンドや環境のみに基づく話のように見えます。
技術の変化が速いのは確かですが、すべてのエンジニアが同じように経験するわけではなく、その中で安定や楽しさを感じる人も多いです。
変化があるならそれに適応するのがエンジニアリングの一部であり、それ自体が「狂気じみたこと」というわけではありません。
ただ笑ってスルーします……はは
世の中に難しくない仕事なんてあるでしょうか
他職種で10年以上働いてからITに来ましたが、この10年間外から見ていた印象どおり、大げさに騒ぐ人も少なくないですね。
つらさは主観的なものなのに、なぜそんな言い方をするんですか?
あの方にとっては、そういう部分が苦労なのかもしれません。
そんなふうに言うのなら、誰かに「あなたは業種転換が遅くて、似たり寄ったりの仕事ばかりしているからそう感じるんだ」と言われても、言い返せないでしょう?
ソフトウェアエンジニアは、クラウドでDevOpsをしている人たちだけではありません。
フロントエンドについては、ある程度その通りだと思います。今日学んだことが明日にはゴミになるような界隈なので……。
深くやってみたわけではありませんが、Tailwind を使う前はものすごい怒りと挫折しか感じませんでした。
バックエンドやシステム開発は? これはこれをやりながら、このお金をもらっていていいのかな〜と思うことがあります。レゴを組み立てながらお金をもらっている感じで、私はソフトウェア開発をしていてよかったです……
CSSも必須だけど、レイアウトが崩れる理由は一生学んでも分かりにくい > 本当にその通りですね(泣)
これはそもそも、AGIがやるべき仕事だった気がする..
Hacker Newsの意見
ソフトウェアエンジニアになることは難しくない。ソフトウェアエンジニアリングは最も簡単な職業の一つだ。私たちはあまりにも保護されているので、この文章で説明されていることを難しいと感じるが、それは私たちの仕事がいかに難しくないかを示す証拠でもある
ソフトウェアはますます複雑になっている。この複雑さには理由がある。しかし、それは良い理由ではない。以前は効率性へのインセンティブがあった。人材不足、帯域幅と計算能力の不足、予算不足などがあった
20年にわたる「みんなでプログラマーになろう」という流れ、過剰な資金、委員会による設計が、非常に複雑な世界を生み出した
30年のキャリアの中で、アプリやシステムフレームワークに取り組み、新しい言語、API、フレームワーク、ツールなどを学ばなければならなかった。ソフトウェアが作られ、提供される方法の変化も含まれる。アジャイル開発、技術リード主導、QAありからQAなしへ、単体テスト、コードレビューなど、常に動く目標だった
知っている言語: Pascal, C, 6502アセンブリ, C++, Objective-C, Javascript, Swift など
キャリア初期には、メモリ管理や、サイズを小さく保ちつつ高速にすることが重要な技術だった。キャリア中盤には、並行性の専門家にならなければならなかった
Apple のような大企業には「良い」チームと「悪い」チームがあった。これは特定のエンジニアにとって相対的なものだ。自分が嫌いなチームでも、他の人には合っていることがある
「悪い」チームで数年間働いた後、深刻な胃腸の問題を抱え、手術が必要になった。ストレスは深刻に受け止めるべきだ
家を建てるのと同じように、専門化が失われつつある。高校卒業以上の教育が必要な職業では、何でもできることが求められる。多くの職業が幅広いスキルを要求する
一人の人間が十分な知識を持って仕事をこなせるなら、二人の専門家を雇う必要はない。設計会社は最小限の作業しかしないことが多い
複雑さの理由は、FAANG のような会社向けの職務経歴書作り、職業ニッチの構築、雇用保障的なナルシシズムにある。産業の成熟に対する根本的な無視がある
良い仕事をするとマネージャーに昇進する。すると、まったく別の仕事を学ばなければならない。技術を学ぶのに多くの時間を費やしてきたが、それは「人間をデバッグする」能力には転換されない
今日のウェブページは10年前と大して変わらない。しかし、マシンははるかに複雑になり、ページのダウンロードサイズは大きく、応答性は低くなっている
ソフトウェア業界に関する一つの理論は、成熟した技術企業をどう管理すべきかを知っている人がいないというものだ。技術の世界では、職務経歴書主導の開発が問題になっている。技術マネージャーはそれを見抜いて止めるべきだが、そうできていない
いくつかのプログラミング言語やフレームワークを学ぶことは、せいぜい「少し面倒」なだけで、難しくはない
ソフトウェアは人工物だ。物理科学の分野のほうが、新しい技術や解決策を発見するという点でははるかに難しい。気候変動、病気の治療、持続可能な食料供給の確保のような複雑な問題の解決は非常に難しい
ソフトウェアエンジニアリングは、結局のところデータを並べ替えることにすぎない。強力ではあるが、物理世界の最も難しい問題を解決することほど本質的に複雑ではない
ソフトウェアエンジニアリングの複雑さは、エンジニアやチームが何をしているかによって異なるのであって、絶対的な上限が決まっているわけではありません。もしすべての問題が単にデータを並べ替えるだけで解決していたなら、SWエンジニアリングという分野自体が生まれていなかったでしょう。
物理世界ではなく形式体系に基づいているから複雑さが少ないと主張するのは、言語学や数学が人間が人工的に作り出した言語や数字の形式体系に基づいているのだから複雑ではない、と主張するのと同じようなレベルです。
気候変動、疾病の治療、持続可能な食料供給の確保といった複雑な問題を解決する上でも、ソフトウェア技術は重要です。今後はさらに重要になるでしょう。なぜそれをまったく別の問題であるかのように語るのか、よく理解できません。
実際、ビッグデータなどの技術で問題解決にかなり貢献しているのではないですか。
うぬぼれも良くありませんが、実際の価値を過小評価するのも良くありません。
ソフトウェアエンジニアほどトップクラスの職業はそう多くない。創造できることがどれほど幸せかを実感する瞬間を迎えよ
ここ数年、ソフトウェア開発者の供給が大きく増えたことで、ソフトウェア開発について業界関係者ではない人たちにもかなり知られるようになり、そうなればソフトウェア業界で働く人たちの大げさな自己アピールや、近い職種の人たちによる過度な持ち上げもある程度は減るのではないかという期待がありました。しかしその背景には供給不足による待遇改善があったため、むしろいわゆる「花形」の職業と見なされることで、かえってひどくなっているのではないかと思います。
はい、ソフトウェア開発が人気のない職業で、他人が関心を持たず、やりたがらない少数派の職業だった頃は、それでも相対的には悪くありませんでした。そうしたことが一種の動機づけになり、少数職種としての職業的アイデンティティを形づくる助けにもなっていたのでしょう。「自分が属するグループは特別だ」という感覚は、人が帰属意識を持ち、心理的な安定感を得るうえで重要な要素でもあります。
とはいえ、私がプログラマーになると決めた時期ですら、ソフトウェア開発はすでにかなり大衆的な仕事でしたが、今や本当にそんな時代はもう過ぎたのではないでしょうか。韓国基準で毎年輩出されるソフトウェア専攻者の数も、以前とは比べものにならないほど大きく増えました。もはやソフトウェア開発は神秘的な仕事ではありません。そのうえ、人材調達の失敗によって起こったここ数年の非専攻者向け再教育ブームが続いた結果、気質や考え方さえ合えば、非専攻者でも独学で学び、比較的容易にアマチュアを脱してプロになれるということも、社会全体に広く知られているではありませんか。
ソフトウェア開発が難しい仕事だと言う人たちは、いったいなぜその仕事をしているのでしょうか。大変でつらいけれどやりがいのある仕事だからやっているのですか。この業界でそういう人は、それほど多くなかったように思います。他人にはできないように見えるから難しいと主張しているだけで、実際にはそれが自分にとっていちばん簡単な仕事だからやっているのではないですか。他人に少し持ち上げられたくらいで自己賛美に浸り、自分だけが特別であるかのように目を曇らせず、周りを見るべきです。理工系で、部屋にこもってインターネットを少し見て独学しただけで、うまくやれば数か月で現場投入できる専門家になれる分野が、ほかにどれだけありますか。
需要増加と人材育成政策の不一致による一時的な市場の利益を享受しているからといって、あるいは運よく他人と違ってこの仕事を嫌がらない思考様式と教育の機会を得たからといって、そこに大した意味づけをしないでほしいと思います。
現代産業の観点から見ると、ソフトウェアはまだ高度な専門化も大量生産もきちんと実現されていない状態です。手工業と製造業のあいだで、はるかに手工業に近い段階にあり、多くの手工業がそうであるように、ソフトウェアプログラマーもまた、いまだに趣味と職業の境界が曖昧です。
私たちのしている仕事は、産業の面から見れば、鍛冶場で鉄を打ち、のこぎりを手に木工をし、紙やすりでガラスを研磨するのに近いものだということを受け入れるべきです。これは、現代産業が木を入れれば製紙工場が紙を作り、石油を注げば石油化学工場がプラスチックを生産し、シリコンを高価な機械に投入すれば工場が半導体を量産するのとは、明らかに異なります。ほかの製造業と違って、ソフトウェア開発にはまだ手先の器用さを持つ人が必要なのです。
もちろん、他人にはない優れた手先の器用さを持つ人は尊重されて然るべきです。しかし、少しばかりその器用さを磨いたからといって、若い頃に身につけた器用さだけで一生食べていけたらいいのに、なぜそうできないのだろう、自分はこんな優れた器用さを持っているのだから他の人たちのように苦労して働かなくてもいいのではないか、自分は他人には簡単にできないすごい才能を持っているのではないか、などと「特別な自分」に酔うのは、傲慢に近いことではないかと思います。
他の人たちがなぜこれほど批判しているのかをよく考えて、あなた自身も今後、思い上がってこんなくだらないことを言いふらさないでください。
コンピューティング技術に情熱を持って働いている方もたくさんいます。自分の考えや経験をもとに一般化しないでください。その方々に対して侮辱的ですから
下に適切な批判がいくつかありますね。コンピューティング技術のアクセシビリティが高いことにも、SWエンジニアの貢献は大きいです。アクセシビリティが高いからといって、プロになりやすいということでもありません。料理へのアクセス性が高いからといって、料理の専門家になるのは簡単ですか?
•学びやすい。そこは認めますが、参入障壁が低いことが専門性の低さを意味するわけではありません。他の産業群、特に製造業の他の技術職に比べて学びやすい理由は、開発自体が簡単だからというより、オープンソース文化やリスクの低さにあるのではないかと思います。先に述べた開発者の多様性という面でも、素早く学んでできる仕事がある一方で、専門性を基盤にしなければならない仕事もあるのです。
•少し絵を学んで漫画家のアシスタントに入ったからといって、自分はプロだと言って回るんですか。あるいは料理学校に少し通って厨房に就職したら、料理の専門家、シェフだと言って回るんですか。それと似たようなレベルですよ。あなたの言っていることは。そんなに簡単なものなら、それをプロとは呼ばないでしょう
•製造業と直接比較することに意味はあるのでしょうか。産業の高度化がまだ十分ではないという観点から、その比較対象は製造業に見えるのですが。製造業のパラダイムでソフトウェア業を理解しようとすると、手工業や趣味の開発のように見えるかもしれませんが、逆にこうした部分こそがソフトウェア開発ならではの柔軟で創造的な文化を作り、それを足場に成長しているのだと思います。
•過去と比べて、1人のエンジニアに期待されることの範囲が広がり、大きくなったのは事実です。そして過去に比べて、はるかに多くの現実世界がコンピューターシステムの中に入り込み、それだけ抽象化と実装の難易度も急速に高まっています。現実世界のもっと大変な仕事を並べ立てたからといって、この仕事は大変ではない……と主張する必要があるのかは疑問です。
•環境は変わりました。昔より市場で開発者に対する期待と報酬が大きくなっている理由は、単に彼らの技術、熟練度、専門性だけだとは思いません。人類の生活にITが深く入り込むほどソフトウェアは重要になり、多くのインフラを支えています。各開発者の能力が高まったから報酬が増えているのではなく、単に仕事そのものが高くなったのだと思います。以前より重要になったからです。
・SW開発を単にコード生成やAPI生成をすることだと誤解しているようですが、SW開発の本質は現実を抽象化してプロトコルとインターフェースを作り、そこに当てはめていくことにあります。異なる方式で動くもの同士をつなぎ、ひとつのもののように動作させることにあるのです。これは思っている以上に複雑な知的活動であり、だからこそSWエンジニアを育成するのは思っている以上に難しいのです。今は人が多いと言いますが、その中で本当にきちんと働ける人材がどれだけいますか? 大半はツールを一度使ってみただけですが、それがSWエンジニアの核心ではありません。
状況に合わない批判をしていますね。元の投稿を書いた方は誰かを見下したわけでもないのに、むしろSWエンジニアという職種の価値をおとしめて見下しているのは、あなたではないですか?
ロボティクスやOSのような分野で博士号でも取れば、少なくとも学位課程を終えただけでも、その分野では専門家・プロと呼ばれることはできるでしょう。プロの基準は最低でもその程度であるべきだ、ということです。
少し絵を学んで漫画家のアシスタントになったからといって、自分をプロだと言って回るんですか。あるいは料理教室に少し通って厨房に就職したら、料理の専門家、シェフだと言って回るんですか。それと同じようなレベルの話です。あなたの言っていることは。そんなに簡単なら、それをプロとは呼びません。
料理や絵は誰でもできることだから、数か月学べばプロになれるという話と似たようなことをおっしゃっていますね。SWエンジニアが評価されているのは、それだけSWの影響力が大きくなっているからです。その仕事が大変かどうかが重要なのではありません。気に入らないなら別の仕事をすればいいのでは。ほかの分野に行ってもそんなことを言い歩いていたら、良い反応は得られません。その人たちを不快にさせるでしょう。大したことをしていると慢心するのも禁物ですが、価値をおとしめるのも適切な行動ではありません。
誰でも挑戦できるという言葉は否定しません。しかし、誰でも簡単にプロになれるというのは嘘です。現実で誰かにそんなことを言って回っていなかったことを願います。それは詐欺ですから。
理工系で、部屋にこもってインターネットを少し見て独学しただけで、(うまくいけば)数か月で実務に投入できる専門家になれる分野なんてありますか? <- どんな分野であっても、こうしたエントリーレベルの求職者を専門家だと呼ぶ人はいません。すでに別の方が先に批判していますね。もし本当にそう考えているのなら、あなたは考えのレベルが低く、プロ意識もないということです。
アマチュアを抜け出してプロになるのは簡単だって? それが本当なら、もうそれをプロとは呼ばないでしょう。
ソフトウェア開発は、単にコード生成やAPI生成をすることだと勘違いしているようですが、ソフトウェア開発の本質は現実を抽象化してプロトコルとインターフェースを作り、そこに当てはめていくことにあります。異なる方式で動作するもの同士をつなぎ、ひとつであるかのように動作させることにあるという話です。これは思っている以上に複雑な知的活動で、だからこそ思っている以上にソフトウェアエンジニアを育成するのが難しいのです。今は人が多いと言いますが、その中で本当にちゃんと仕事ができる人材がどれだけいますか。大半はツールを一度使ってみただけですが、それがソフトウェアエンジニアの核心ではありません。
他のコメントにもあるように、SamsungやNaverなどで働いた後にAMDやGoogleなどへ転職した人たちが、後にその経験を持って韓国に戻ってくれば大きな資産になるはずなのに、この雰囲気では戻ってくるどころか、これからも出ていってしまいそうですね。単なるお金の問題ではなく、環境や認識が劣悪なので。
全体として何が言いたいのでしょうか。少なくとも韓国では、エンジニアの待遇が良いわけではありませんよね。自分が働く以上にもらっているように見えるなら、どこかに寄付でもすればいいでしょう。韓国は、エンジニアが傲慢だから問題になるような環境なのですか。海外より劣悪なので、優秀な人たちが転職して戻ってこないのが問題なのに(傲慢な人がいることはあり得ますが)。
他人も自分と似たようなものだと勝手に決めつけているのを見ると、確かにあなたは傲慢ですね。難しい問題に挑戦するのが好きでこの仕事をしている人もたくさんいます。自分の経験がすべてだと思わないでください。
理工系で、部屋にこもってネットを少し見て独学しただけで、(うまくいけば)数か月で実務に投入できる専門家になれる分野なんてありますか? <- どんな分野であれ、そういうエントリーレベルの求職者を専門家だと呼ぶ人はいません。
このコメントのように、ご本人が自分を専門家だと思う基準がかなり低いようですね。普通はそういうケースを専門家とは言いません。ほかの場所でそんなことは言わないほうがいいです
面白い方ですね。思い上がっているのはあなたのほうではないですか。あの方はただ自分のつらさを吐露しただけです。あの方が誰かを見下したわけでもないのに、あなたと感じ方が違うからといって、それが非難されなければならない理由になるのでしょうか。むしろあなたこそ、SWエンジニアとして誇りを感じている人たちをけなしたいように見えます。自分の仕事に誇りがなく、満足もできていないようですが、そういう感情は自分で整理してください。くだらないことを言いふらさないで。
他の方のコメントが適切な批判だと思うので添えておきます。
" 昔に比べて、一人のエンジニアに期待されることの幅が広がり、その要求も大きくなったのは確かです。そして昔に比べて、はるかに多くの現実世界がコンピュータシステムの中に入り込み、そのぶん抽象化と実装の難易度も急速に高まっています。現実におけるもっと大変な仕事を並べ立てたからといって、この仕事は大変ではない仕事だ……と主張する必要があるのかは疑問ですね"
その人にとっては、それがつらいことなのかもしれません。つらさは主観的なものですから。
その人がなぜあそこまで叩かれているのか分かりませんね。ほかの職業を見下していたなら批判されても仕方ありませんが、そういうわけでもないでしょう。実際には、あなたのほうがむしろ書き手を必要以上に非難していますよ。非難されるようなことでもないのに。本当に傲慢なのはあなたです。これからは少し口を慎んでほしいものです。正直、自分にプロ意識も誇りもないことを取り繕いたがっているように感じます。誰でも挑戦できる仕事なのは確かですが、だからといってプロ意識や誇りを持つなという話ではありません。これ以上は話しません。
「私はプログラミングが簡単だから始めた。一日中、目の前にある問題を解決し、5時半ごろに退勤して家に帰り、友人たちと過ごしていた。だが20年が過ぎた今でもソフトウェア分野で働いているのは、この仕事が難しいからだ。
簡単だった仕事が今では難しくなった理由は、問題を解決する役割から製品を成長させる役割へ、すでに定まった正しさだけを追求する役割から、変化のために何が正しいかを最適化する役割へと変わったからだ。」 - ジェシカ・カー(Jessica Kerr),
『Java開発者のための97の提案』の複数の文章のうち、「パズルから製品へ」という題でジェシカ・カーが書いた文章の冒頭部分
ソフトウェア開発が難しい仕事だと言う人たちは、いったいなぜその仕事をしているのでしょうか。過酷で大変な仕事だけれど、やりがいがあるからやっているのですか。この業界では、そういう人はそれほど多くなかったように思います。<-これもおかしな話ですね。複雑な問題解決などに面白さを感じてやっている人もたくさんいます。ご本人こそ、自分の経験だけでひどく一般化していますね。
下に良い言葉があったので、ここにも残しておきます。
製造業と直接比較することに意味はあるのでしょうか。産業の高度化がまだ十分ではないという観点から、その比較対象は製造業に見えるのだと思います。製造業のパラダイムでソフトウェア業界を理解しようとすると、手工業や趣味の開発のように見えるかもしれませんが、逆にこうした部分こそがソフトウェア開発ならではの柔軟で創造的な文化を生み出し、それを足がかりに成長しているのだと思います。
もう一つ言うと、SWも分野は広いです。早く習得してできる仕事もあれば、専門性を土台にしなければならない仕事もあります。自分の経験がすべてだと思わないでください。それも傲慢ですから。
先ほど述べたように、SWエンジニアの待遇が変わったのは、その仕事が大変で難しいからではありません。それは主観的な感情であって、そうしたものが職業の待遇を決めるわけではありませんよね。他のコメントにもあるように、ソフトウェアの重要性は高まり、多くのインフラを支えています。各開発者の能力が上がったから報酬が増えているのではなく、単に仕事そのものが高価になったのだと思います。以前より重要になったからです。ここで、その仕事が大変かどうかはそれほど重要な問題ではありません。
あなたにとって簡単な仕事が誰かにとっては難しい仕事になることもあるし、他の人には簡単な仕事があなたにとっては難しいこともあります。あなたの言っていることはすべて主観的です。繰り返しますが、大変で難しいというのは主観的な感情であって、そうしたものが職業の待遇を決めるわけではありません。偉ぶるなと言いますが、主観的な話で偉そうにしているのはあなたのほうですね。
幸運にも、他の人と違ってこの仕事を嫌がらない考え方と教育の機会を得られたからといって、そこに大した意味づけをしないでほしいですね。<-世の中にそうでない職業なんてありますか? こういうのは、謙遜を誇張した見下しです。
料理学校で数か月学んだあとにシェフとして就職したからといって、その人を私たちは専門家だと言うのでしょうか? 専門家かどうかは、経験を積んでから評価するものですよね。
単にできることと、仕事を見つけて報酬を受け取りながら働けることは、まったく別ですよね。その分野について完全に無知な人が短期教育を受けて、まともな仕事を得るのは簡単ではありません。(ここで言う無知とは、数学・産業工学・電子工学などの関連理工系出身だがSWの知識がない人のことではなく、エンジニアリングの基礎そのものがない人を指します。)料理や絵も、短期で数か月学べばできるようにはなります。でも、それでまともな仕事を得るのは簡単でしょうか?
理工系で、部屋にこもってネットを少し見て独学しただけで、(うまくいけば)数か月で現場に投入できる専門家になれる分野なんてあるんですか? <- どんな分野であれ、こういうエントリーレベルの求職者を専門家だとは誰も言いません。文章にたわごとが多すぎて、指摘すべき点がたくさんあります。
そしてもちろん、他の人にはない優れた手先の器用さを持つ人は尊重されて当然ですが、少しばかりその器用さを磨いたからといって、若い頃に身につけた器用さだけで一生食べていけたらいいのになぜそうはいかないのだろう、自分はこんなに優れた器用さを持っているのだから他の人のように苦労して働かなくていいのではないか、自分は他の人には簡単にできないすごい才能を持っているのではないか、などといった「特別な自分」に酔うのは傲慢に近いことではないかと思います。 <- 原論としては正しい話ですが、エンジニアや科学者に対してだけやたらとこういう物差しを当てる人が 多く見受けられますね。謙虚さを誇張した見下しに見えます。
こちらの業界が学位などのスペックを比較的重視しないのは、簡単だからというより、オープンソース文化などの影響のほうが大きいですね。そもそも権威を嫌う気質を持つ業界なので。
なぜなら、それは主観的な感情であり、それで職業の待遇が決まったことはないからです。それが判断基準なら、肉体労働をしている人たちが最も厚遇されていたでしょう。
そうですね。熱中しすぎるのは禁物ですが、本人は逆にソフトウェアエンジニアリングをけなしているように見えます。ソフトウェアエンジニアの待遇が変わったのは、その仕事が大変で難しいからではありません。それは主観的な感情であって、そうしたものが職業の待遇を決めるわけではありません。他のコメントにもあるように、ソフトウェアは重要性を増し、多くのインフラを支えています。各開発者の力量が大きくなったから報酬が増えているのではなく、単に仕事そのものの値段が上がったのだと思います。以前より重要になったからです。ここでその仕事がつらいかどうかは、さほど重要な問題ではありません。
それに、ただできるということと、ある程度仕事をこなせるということの間には天地ほどの差がある。特殊なケースを除けば、まったくの初心者が数か月の短期教育でまともな仕事を得るのは簡単ですか。
別に他の職業を見下した文章でもないのに、こういう文章のほうがもっと滑稽ですね。
共感します。建築では2〜3年規模のプロジェクトでも、1週間前後のスケジュール見積もりが可能だと聞きました。そういう点で、ソフトウェアはまだまだ道のりが長いです。
手工業に近いというのはまったく考えたことがありませんでしたが、とても共感しますね。
この観点で考えると、多くの現象が説明される気がします。
手仕事のようだという発想はありませんでしたが、共感できます。
本文の話ではなく、ずっと下のコメントを書いた方のものを少し見てみたところ、内容が混ざっていましたね。
ソフトウェアエンジニアが大変な職種だと言う人たちは、CS部門で顧客対応を半日でもやってみれば、考えがかなり変わるはずです。
昔のほうが複雑ではなかった、という幻想のようなものがある気がしますが、どうせプログラミングというものは人間の脳のcapacityが限界として作用するので、昔も今も強度の違いはそれほどありません。昔よりも抽象化されたツールで、より広い領域を扱っているだけです。
コンピュータはその中ではまだ制御しやすい部類の物質であり、実際こうした知識労働そのものは、他の職種と比べれば平均的にはそれほどきつくないほうでしょう。少し特殊につらい点があるとすれば、現代社会の特性上、365日24時間ずっと信頼性を求められるという点でしょう。
同感です。本文は、開発が自分に向いていない人が書いた文章のようですね。
今では一人でもできることを、過去にやろうとしていたなら、非常に非常に難しかったはずです。
しかし、今では抽象化されたツールのおかげで、同じ努力でもより広い領域を扱えるようになったので、一人でもサービスを運営できるようになりました。正直、めちゃくちゃおいしいです。
以前とは違って、1人が担当しなければならない領域が広がることで生じる問題があります。
・以前に比べて、1人のエンジニアに期待される範囲が広く大きくなっているのは確かです。そして以前に比べて、はるかに多くの現実世界がコンピュータシステムの中に入り込み、それだけ抽象化と実装の難易度も急速に高まっています。現実でもっと大変な仕事を並べ立てたからといって、この仕事は大変ではない……と主張する必要があるのかなと思いますね
私はこの意見に同意します。はるかに大変な仕事をしているのに、ソフトウェアエンジニアほどの報酬を得られない職業は他にもたくさんあります。
そうですね。大変な仕事はたくさんあります。ですが、それが何だというのでしょうか。いつから労働の対価を、仕事が大変かどうかで判断するようになったのでしょう。そんなものは主観的です。SWエンジニアが厚遇されるのは、SWの価値がそれだけ大きくなったからです。その仕事が大変かどうかは、そこでそれほど重要な判断基準ではありません。
どんなものがありますか?
ええと…
同じ機能でも異なる種類の回路素子があり(コンデンサだけでも種類が多く、単純な on/off ひとつ取ってもトランジスタやトライアックなど)、数十社から数百・数千の製品が出ている中で価格や特性を見比べて選定し、そのうえ回路部品のリビジョンに伴うエラッタも見なければならず、ソフトウェアのリリースならロールバックすれば済みますが、製品は一度生産すると取り返しがつかないので慎重さが求められます。テストも PCB を起こして実装して修正してと途方もない時間がかかりますし、ある部品がはるか離れた別の部品に影響したり、デバッグひとつ取っても、ブレークポイントを置けばたいてい解決するソフトウェアと違って、不足している jtag ポートを引き出したりジャンパを飛ばしたり、実験室では問題ないのに入力される電気波形が歪んだときだけおかしくなったり、EMC 認証も大変なんですよ。
私がやっているわけではなく、隣でやっているのを見ていて感じたのがこういうことです.
それはまったく別の例では? ロールバックすれば終わりってことですか? あなた自身の経験がすべてではありません。大規模な作業をしたことがないのですか
単にやっている仕事の性質が違うだけなのに、なぜそんなふうに比較するのか?
私も同意します。インターネット上でソフトウェアエンジニアの苦労を簡単に耳にできる理由は、まさに彼らがインターネットを作っている人たちだからでしょう。
何をあり得ないことを言っているんですか。SWエンジニアだからといって、インターネット業界で全員が働いているんですか? 半導体業界もあるし、自動運転やロボティクスの分野にもいます。 そして、インターネット業界で働く人だけがインターネットを利用できるんですか?
ソフトウェアエンジニアになるのが簡単だって? ww IQが最上位クラスじゃないとできない仕事だよ。スクールに30人来て、生き残ったのは1〜2人なのに、なりやすいって?
「学習塾」で3%以上が生き残れるということが、それが簡単である証拠です。
parkindani そうですね。単にできることと、仕事を見つけて報酬を得ながら働けることは、まったく別です。その分野について完全に無知な人が短期の教育を受けて、まともな仕事を得るのは簡単ではありません。(ここでいう無知とは、数学・産業工学・電子工学など関連する理工系の出身だがSWの知識がない人を指すのではなく、そもそもエンジニアリングのベースがない人を指します。)料理や絵も、短期で数か月学べばできるようにはなります。ですが、それでまともな仕事を見つけるのは簡単でしょうか?
塾で生き残れる職業なんて、50%以上あるものがそこら中にあります。塾に行く必要すらない職業も多いですし。あと、なぜ知能の話をしないんですか? 開発者として生き残るには上位15%以内の知能が必要なのに(笑)
開発者として生き残ることが何を意味するのかは分かりませんが、少なくとも私の場合、上位1パーセント以上の認知能力を持つ才能に囲まれているのは確かだと思います。
ただ、知能というのは生まれつきだけで決まるものではなく、後天的にも脳の可塑性によって向上します。出生時に決まる部分もありますが、それがすべてではありません。そしてソフトウェア産業で知能がそこまで絶対的な要因なのかは分かりません。開発を理解しているというだけで、できることは非常に多いです。私の周りでも、他分野の学部出身や学士号を持たない同僚たちが、エンジニアであれ別のポジションであれ、問題なく仕事をしています。「関連する」知能がどれほどあったのかには関心がありません。
それと個人的には、スクールで「生き残る」というのは、実際には本人の興味とスクールの教育システムが決定的な影響を与えると思います。典型的なルート、つまり数学や工学、あるいはCSの学部を卒業し、あるいは大学院まで進学するような経路をたどるなら、これはここ数百年にわたって検証され改善されてきた教育システムなのですから、当然16週間や32週間のスクールとは質も量も圧倒的に違います。
そしてスクールでどれだけ圧縮して教えたとしても、自分の基準が、ラボで寝食を共にしながら論文を書いてきた修士・博士ポジションと同等でなければ失敗だ、というものなら、無条件で失敗です。そういうポジションを望むなら、実証済みの教育システムである大学院に進学すればよいのです。嫌なら、おっしゃるように知能に依存すればいいでしょう。そのときカーブのどれほど端の認知能力が必要になるのかは分かりませんが。
ちょっと話が噛み合っていないようですが、どうして急に修士博士の話が出てくるんですか?
「生き残る」という言葉の曖昧さを指摘することについて、少し噛み砕いて書きました。独り言の文法なら、返答は必要ないのでしょうか?
あまりピンときませんね。返答は不要です。