2019-05-07前回の記事では「プログラミング言語を徹底的に学ぼう」という一つの戦い方を示しました。pocket30代-40代で未経験者がITエンジニア(プログラマ)になるための戦略と戦術-その1https://zero-plus-one.jp/program-general/30-40-years-career-plan-1/前に書いた記事、ちょっとバズりました。前に書いたコードレビューの記事と45歳早期退職勧告の記事でちょっとだけバズっていました。いつもの閲覧の20倍くらいです。いつもの閲覧が少なかったから倍数の値がすごいことですが、ありがたいことです。読んでいただいて...これはITエンジニアとしての一つの戦術です。仕事とか職場とかそういうものの中で生き残るには「プログラミングすることができませーん」という人がいたらそれは仕事とか職場とかからの退場を意味します。プログラミングをどれほど細かく知っておくべきかということには「てめーの扱う武器についてはできるだけ細かく使い方を知っておけ」というアドバイスしておきます。可能な限り細かく知っていた方がいいですよ。細かいことを知っていないと負ける可能性が高くなります。必死になってください。その戦い方としては、あくまでもこれは戦術程度のものです。一つ、一歩上から見た所の戦略という視点があります。繰り返しになると思いますが書いておきます。戦術とは端的に言うと小さい領域(戦場)での戦い方です。戦略とはより大きい領域、小さい領域である戦場を超えて全体としてどのように戦っていくかの計画です。企業ビジネスの場ではさまざまな企業による戦術や戦略があります。一つの製品の性能では他者に抜きん出て勝利していたとしても、全体のビジネスの現場では勝てなかったりする場面ってありますよね。個人ビジネスとしてのプログラマやITエンジニアにもそのような視点で考えると小さいビジネスだとしても戦術と戦略があります。戦術としては先に紹介したことひとつ「プログラミング言語を極める」です。戦略としていくつか考えられるのは「どのプログラミング言語に投資するか」ということと「どのような契約形態を選択するか」と「どのような規模やどのような形態でビジネスをしているか会社を自分の味方につけるか」ということになります。勉強してそこにエネルギーを投資するのは業界にこれから入り込もうとしているエンジニアとしては戦略ミスになります。それらの言語はめちゃくちゃ古臭いというわけではありません。それぞれが進化をしておりエンジニアとしてけっこう最新のことを学ぶことができるのは知っています。それらを学んでいる人が時代遅れではないことは知っています。それらの言語は長年の歴史があるためにすでに極めている人が非常に沢山います。歴戦の勇者のようなエンジニアが業界にたくさんいるのです。そこに自分個人として今から学んでも「その他大勢の中のひとり」になるだけにすぎません。エンジニアが多くいて、さらにはできるエンジニアが多い領域なので1つの案件に対してすごいできる人が5人も10人も応募があるような仕事の中で、これからそれらの勉強をしてそこまでに追いつける人がいるのかというとなかなか厳しいものがります。ビジネスの世界では稼ぎにくい環境稼ぎやすい環境をそれぞれレッドオーシャンとかブルーオーシャンとかいます。界隈のビジネスは規模も大きいですが、エンジニアがエンジニアとして売る場合にはレッドオーシャンだということですね。余談ですがSESの営業業者(エージェント)としてビジネスをするなら.NETやJava分野のエンジニアをお客さんとのところに入場させるビジネスを運用するのはブルーオーシャンというほどに旨味があるかどうかはわかりませんが、レッドオーシャンというほどではないでしょう。そこで稼げるとは思います。エンジニアにフリーランスをアドバイスするエージェントさんは「Java技術者いけますよ!」とアドバイスくれるかもしれません。エージェントには都合のよいスキルだからです。エンジニアとして稼げるわけではないです。いうのは見抜かないといけません。ビジネス領域また言語選択と関係するビジネス領域というものがあります。使ったクライアントサーバー(クラサバ)系のシステムになります。これはシステムとして古臭いです。枯れた技術とはいえますが業界では最新ではありません。最新ではなければいずれ廃れていく傾向があると知っておいてください。サーバーに使う会社も少ないでしょう。学ぶ価値があるものではありません。最新のいろんな場所でも動くように改善されていますが、全体として古臭いテクノロジーになっていっているので今後10年先などが安泰とまではいいにくいものです。金融機関が使うような大規模なシステムの開発に使われているのですが、これも世の中の最先端かというと違います。開発が済んだ、これから新規開発ではなく改良開発が行われるような言語です。大規模な開発というのは何百人ものエンジニアが同時に働いて、そのような仕事現場では一人ひとりのエンジニアの腕など要求されず、誰もができることを誰もができるようにして働いていれば仕事がまわるような内容だったりします。エンジニアの腕はあがりません。このような言語を選択して学ぶということは、戦略ミスということになります。エンジニアの自分とくらべてフリーランスエンジニアとしての契約金額が段違いなんです。C#やJavaエンジニアは稼げません。上級のエンジニアでもたいして稼げないのですから、初心者エンジニアですと仕事を得るのも苦労します。エンジニアの収入は何の言語が世の中で使われているのかという需要と供給のバランスの上でも評価されるのです。呼ばれる業種があります。ITエンジニアがひどく過小評価されて、IT土方とか呼ばれて長時間労働と非効率で無駄な作業が多い仕事になります。SIerという系統の仕事でしたらプログラミング言語選択にかかわらず、仕事内容は技術者としての誇りに思えない低スキルの仕事が多いでしょうから、避けたほうがいいです。プログラミングを組まない仕事も多くあるので技術スキルはつきにくいです。自分の経験ですが、1年間のプロジェクトがありそれを外注として作業することになりました。その時は文章の日本語がよくないとかなんとかかんとかひどい扱いをされて仕事していました。エンジニアに日本語の書き方を求めるなよ。思いましたがそれが仕事なので仕方なく。仕様書書く仕事が終わりそこからプログラミング開発をはじめたのですが、半年という期限で開発しなければいけなくて実際に開発期間には余裕はありませんでしたので、日々納期をせまられて焦らされる仕事になりました。最初から俺や数名の開発者が仕様書など書かずにプログラム開発をしていれば十分な余裕をもってよいものを仕上げる事ができたのですが、なぜかエンジニアに半年も仕様書を書かせて開発期間を圧迫して、そして日本語の文章についてネチネチと文句をいうリーダーがプロジェクトを仕切るというものでした。効率的とは到底思えないのですがそれがSIerの仕事なのですから仕方ありません。外注には仕事遅れるなと文句をいい、同時にSIerの発注元社員である人たちも残業をしまくっていましたが、その残業はプロジェクトの成果にはほとんど関係なく「俺たちたくさん働いて難しいプロジェクトをがんばってやっているんですよ。評価してくださいね」ということをアピールしたいがためにやっているように見えました。(一緒に働いていたらわかりますから。俺もSE経験長いのでそれくらい見抜けます。)彼らSIerの会社の中での出世のために必要な残業でした。ちなみに不治痛のグループ会社でのネズミの国のドリームランド案件でしたね。