前回の記事では「プログラミング言語を徹底的に学ぼう」という一つの戦い方を示しました。
これはITエンジニアとしての一つの戦術です。
仕事とか職場とかそういうものの中で生き残るには「プログラミングすることができませーん」という人がいたらそれは仕事とか職場とかからの退場を意味します。お払い箱ですね。
プログラミングをどれほど細かく知っておくべきかということには「てめーの扱う武器についてはできるだけ細かく使い方を知っておけ」というアドバイスしておきます。可能な限り細かく知っていた方がいいですよ。細かいことを知っていないと負ける可能性が高くなります。そりゃそうです。必死になってください。
そして、その戦い方としては、あくまでもこれは戦術程度のものです。
もう一つ、一歩上から見た所の戦略という視点があります。
戦術と戦略
繰り返しになると思いますが書いておきます。
戦術とは端的に言うと小さい領域(戦場)での戦い方です。そして戦略とはより大きい領域、小さい領域である戦場を超えて全体としてどのように戦っていくかの計画です。
企業ビジネスの場ではさまざまな企業による戦術や戦略があります。一つの製品の性能では他者に抜きん出て勝利していたとしても、全体のビジネスの現場では勝てなかったりする場面ってありますよね。
個人ビジネスとしてのプログラマやITエンジニアにもそのような視点で考えると小さいビジネスだとしても戦術と戦略があります。
戦術としては先に紹介したことひとつ「プログラミング言語を極める」です。
そして戦略としていくつか考えられるのは「どのプログラミング言語に投資するか」ということと「どのような契約形態を選択するか」と「どのような規模やどのような形態でビジネスをしているか会社を自分の味方につけるか」ということになります。
戦略:「どのプログラミング言語に投資するか」という視点での言語選択
はっきりといっておきますが、いまさら .NET 系の言語C#やVB.NETや JAVA を勉強してそこにエネルギーを投資するのは業界にこれから入り込もうとしているエンジニアとしては戦略ミスになります。
それらの言語はめちゃくちゃ古臭いというわけではありません。それぞれが進化をしておりエンジニアとしてけっこう最新のことを学ぶことができるのは知っています。なのでそれらを学んでいる人が時代遅れではないことは知っています。
しかし、それらの言語は長年の歴史があるためにすでに極めている人が非常に沢山います。歴戦の勇者のようなエンジニアが業界にたくさんいるのです。そこに自分個人として今から学んでも「その他大勢の中のひとり」になるだけにすぎません。
エンジニアが多くいて、さらにはできるエンジニアが多い領域なので1つの案件に対してすごいできる人が5人も10人も応募があるような仕事の中で、これからそれらの勉強をしてそこまでに追いつける人がいるのかというとなかなか厳しいものがります。
ビジネスの世界では稼ぎにくい環境稼ぎやすい環境をそれぞれレッドオーシャンとかブルーオーシャンとかいます。.NET や Java 界隈のビジネスは規模も大きいですが、エンジニアがエンジニアとして売る場合にはレッドオーシャンだということですね。
余談ですがSESの営業業者(エージェント)としてビジネスをするなら.NETやJava分野のエンジニアをお客さんとのところに入場させるビジネスを運用するのはブルーオーシャンというほどに旨味があるかどうかはわかりませんが、レッドオーシャンというほどではないでしょう。まだまだそこで稼げるとは思います。
なので、エンジニアにフリーランスをアドバイスするエージェントさんは「Java技術者いけますよ!」とアドバイスくれるかもしれません。エージェントには都合のよいスキルだからです。でもエンジニアとして稼げるわけではないです。そういうのは見抜かないといけません。
戦略:「どのような規模やどのような形態でビジネスをしているか会社を自分の味方につけるか」.NET や Java のビジネス領域
また言語選択と関係するビジネス領域というものがあります。
.NET は基本的に Windows系の開発になりますので Windows PC を使ったクライアントサーバー(クラサバ)系のシステムになります。これはシステムとして古臭いです。枯れた技術とはいえますが業界では最新ではありません。
最新ではなければいずれ廃れていく傾向があると知っておいてください。
サーバーとしても Windowsサーバー上のプログラムになるので、今どき Linux ではなく Windows をサーバーに使う会社も少ないでしょう。学ぶ価値があるものではありません。
C# は最新のいろんな場所でも動くように改善されていますが、全体として古臭いテクノロジーになっていっているので今後10年先などが安泰とまではいいにくいものです。
また Java は金融機関が使うような大規模なシステムの開発に使われているのですが、これも世の中の最先端かというと違います。すでに開発が済んだ、これから新規開発ではなく改良開発が行われるような言語です。
そして大規模な開発というのは何百人ものエンジニアが同時に働いて、そのような仕事現場では一人ひとりのエンジニアの腕など要求されず、誰もができることを誰もができるようにして働いていれば仕事がまわるような内容だったりします。
エンジニアの腕はあがりません。
ですのでこのような言語を選択して学ぶということは、戦略ミスということになります。
C# のエンジニアとしてすごい腕をもっている人が自分の周りでもみかけますが、JavaScript エンジニアの自分とくらべてフリーランスエンジニアとしての契約金額が段違いなんです。C#やJavaエンジニアは稼げません。
上級のエンジニアでもたいして稼げないのですから、初心者エンジニアですと仕事を得るのも苦労します。
エンジニアの収入は何の言語が世の中で使われているのかという需要と供給のバランスの上でも評価されるのです。
戦略:「どのような規模やどのような形態でビジネスをしているか会社を自分の味方につけるか」SIerのビジネス領域
Javaをよく使う、あるいは C# や VB.NET を使う SIer と呼ばれる業種があります。SIerの仕事は ITエンジニアがひどく過小評価されて、IT土方とか呼ばれて長時間労働と非効率で無駄な作業が多い仕事になります。
SIerという系統の仕事でしたらプログラミング言語選択にかかわらず、仕事内容は技術者としての誇りに思えない低スキルの仕事が多いでしょうから、避けたほうがいいです。
プログラミングを組まない仕事も多くあるので技術スキルはつきにくいです。
例えば自分の経験ですが、1年間のプロジェクトがありそれを外注として作業することになりました。半年間は仕様書ばかり書いて概要(基本)設計書、詳細設計書、などを書きました。その時は文章の日本語がよくないとかなんとかかんとかひどい扱いをされて仕事していました。エンジニアに日本語の書き方を求めるなよ。と思いましたがそれが仕事なので仕方なく。でした。
そしてようやく仕様書書く仕事が終わりそこからプログラミング開発をはじめたのですが、半年という期限で開発しなければいけなくて実際に開発期間には余裕はありませんでしたので、日々納期をせまられて焦らされる仕事になりました。
最初から俺や数名の開発者が仕様書など書かずにプログラム開発をしていれば十分な余裕をもってよいものを仕上げる事ができたのですが、なぜかエンジニアに半年も仕様書を書かせて開発期間を圧迫して、そして日本語の文章についてネチネチと文句をいうリーダーがプロジェクトを仕切るというものでした。効率的とは到底思えないのですがそれがSIerの仕事なのですから仕方ありません。
外注には仕事遅れるなと文句をいい、同時にSIerの発注元社員である人たちも残業をしまくっていましたが、その残業はプロジェクトの成果にはほとんど関係なく「俺たちたくさん働いて難しいプロジェクトをがんばってやっているんですよ。偉いですよね。評価してくださいね」ということをアピールしたいがためにやっているように見えました。(一緒に働いていたらわかりますから。俺もSE経験長いのでそれくらい見抜けます。)彼らSIerの会社の中での出世のために必要な残業でした。
ちなみに不治痛のグループ会社でのネズミの国のドリームランド案件でしたね。ほんとにクソですよ。不治の痛みは。非効率なビジネスを行っているだめな会社は早く日本から消えて欲しい企業です。
戦略:「どのような規模やどのような形態でビジネスをしているか会社を自分の味方につけるか」Webベンチャー系のビジネス領域
対して、Webベンチャーと言われるような企業は技術的に最新のものを取り入れて仕事をしています。
Webで動くアプリケーションやスマホで動くアプリケーションを作っている会社は、その技術によってユーザーに高い価値を提供できるかどうかがビジネスが成功するか否かが決定されるので、エンジニアに対する評価は全体的に非常に高いと感じています。
これらの会社はJavaScript(ReactやVue)を筆頭にして、Swift Kotolin Go Rust Ruby Python などなどいわゆる新しい技術を投入して本当に使えるものかの検証したり使いこなせるエンジニアを随時募集していたりしています。
それらを深く使いこなせるエンジニアはそれほどいないので会社のビジネスのための投資として大きな金額をエンジニアに支払ってくれたりします。
そういう会社でエンジニアをすることで、私服は当たり前だし、定時で帰るのは当たり前だし、週2日とか3日で働きたいという希望もかなえたり、リモートで働きたいという希望もかなえたりする、収入も十分に高くもらうことができるという、エンジニアにとっては天国のように重宝していただける環境があったりします。
もちろん会社によってのレベルはいろいろあるものの、これらの会社と自分が取引したほうがより活躍を見込むことができます。
これらの会社と仕事をするためにはそれらの会社が求めているものを提供するために最新の技術を身につけておくべきだったりします。
ちなみに、Webベンチャーといってもメガベンチャーというかなりの大会社のところもあれば、ベンチャーの名前どおりにぼちぼちの中小の会社もあります。
私は Webベンチャーの中小の所についていくつか仕事をしているのである程度知っています。メガベンチャーというところは仕事したことないのであまりよくわかりませんが、聞く所によると技術者を大切にしてくれる雰囲気というのは共通しているようです。
戦略:「どのような契約形態を選択するか」
さて、次の戦略「契約形態」についてですが、長くなったので、次の記事に続きます。こちらです。