未経験からのITエンジニアは最新技術を学ぶべきか?
巷で「未経験者は最新技術を学ぶべきだ」「最新技術を教えていないスクールなんてダメだ」といった意見に対して今回は答えていきたいと思います。
未経験者は最新技術を学ぶべきか?というと今でもエンジニアとして仕事もしている僕としては、
半分YES、半分NO
です。
未経験から学び始めて就職をする場合や事業として考えた場合と職場環境といった部分で言うと半々です。
僕は最新のEdTechや最新の動画広告プラットフォームを提供するAdTechベンチャーなどにいましたが、
使ってる技術はレガシーもレガシー
ですから。
最新のAdTech業界は実はレガシー
今業界がとても伸びている動画広告ともなれば、動画を配信する先の端末はスマホがメインです。しかも、広告となれば「より多くのお客さんが見れる」必要があり、ユーザー規模も大きいため、普通の中規模程度のサービスであれば排除してしまう、たった1%の使用率しかない古いスマホでも軽快に動作させる必要があったりします。
特に女性メディアを取り扱ってる場合、スマホの利用割合がかなり多く、しかも古い機種をずっと使ってる人も多くなります。
僕はそういったところにフロントエンドエンジニアとして入っていましたが、そうなると最新のjavascript技術で使われるような「constでの定数定義」なんてとてもじゃないですが使えませんし、TypeScriptやES6で書くなんてとてもじゃないですが出来ません。
非力なスマホ端末で軽快に動作するためにはファイル容量やコード量を削減しなければならず、
jQueryなりライブラリなんて一切使えない
という状況。なので、うちでも教えているwebpackやBabelといったいわゆる今風のモダンな環境で書きたくても書けません。
そんな中で、
ワタシ、サイシンギジュツシカワカリマセン
ではお話になりませんよね。
もちろん、そこまでの現場は多くはありませんが、実際の現場の大半はそれなりにレガシーです。
そうなると
現場数(案件数)
的に案件取りやすく稼ぎやすいかどうかというのがフリーランスとして長くやる上でとても大事になります。
初心者ほど入れる現場数の多さが大事
実際、システムというのは長く稼働するため、古い技術がそのままの現場が多くあります。
いちいち最新にしていてはとてもじゃないですが企業も資金が足りません。ましてや、最新にしたところで売上が上がるわけでもコストがさほど下がるわけでもなく、最新のものにリプレイスする事で不具合も生みやすくなるのであれば、経営的には「そのまま」という判断になります。
もちろん、そういった現場に入って最新技術にリプレイスしていった事もいくつか経験はありますが、システムとしてはそういうものが多いわけですし、大抵はリプレイス途中でエンジニアが辞めてたりして、新旧混在しています。
5年前、10年前のフレームワークやライブラリが使われて、バージョンも古いという事はこの業界往々にしてあり、そういう現場数の方が実態としては多いわけです。
住宅に例えると分かりやすいでしょう。
最新の技術を使ったマンションや戸建てが世の中にどれだけ多いですか?
エンジニアというのはそういった既に建てられた建物をメンテナンスしていったり、新たに建てるのが仕事ですから、自ずと古いものに携わる事の方が多くなるというのは分かるのではないでしょうか。
もちろん、そんな中でも新規サービスなり、家でいう最新技術の建物を建てる仕事もあるので、
どういう現場に入りたいのか。
どういう現場が入りやすく、稼ぎやすいのか
で技術を学ぶ方が僕はいいと思います。
競合を考えるべきだ
特に今はプログラミングスクールも増え、大学を出ていなくてもエンジニアには簡単になれます。
そうなればどうなるか?
競合が増える
という事です。もちろん、業界全体としては人材不足ですが、不足しているといっているのは
出来る人が不足している
使い捨てやすい人材が不足している(Javaなど業務系は特に)
だけであって、ほとんどの場合、そこらへんの主婦でいい。というわけにはもちろんいきません。
大型出資を受けているわけでないベンチャーなり、一般的な企業となれば採用枠はさほど多くはありません。特に技術レベルが高くもなければ、生徒同士でそういった枠を競い合う事になります。
そんな中で、どう現場数の多い技術セットとレベルを学ぶのか。です。
エンジニアになるだけ。転職するだけ。なんて簡単です。うちでも1、2ヶ月学べば転職するだけなら出来ますしね。
でも、僕はエンジニア何年もやってきている中で、収入低い人もレベル低い人も数多く見てきている中で断言します。
エンジニアに転職すれば手に職ついたわけでもないし、転職して年収が100万上がったところで実際まやかしの安定でしかない。
ということです。もし安定していると本人は感じていたとしても、経営陣からすれば真っ先に切り捨てていく人材ですからね、そういう人は。
募集人数が多い職場ほど環境は悪い
また、現場数だけでいうとJavaの現場は多いですが、僕や周りも経験していますが、ほとんどの現場が、
お堅い現場
です。エンジニアなのにスーツが当たり前とか、ネットを使わせてもらえない、スマホも入口のロッカーに預けるといった現場がざらです。
そういった現場ほど大規模なので人数がかなり必要になり、募集も多いのですが、
そもそもそういう仕事をするためにあなたはプログラミングを学んでいるの?
ということです。どうせ就職するなら職場環境が良いところで就職した方が確実に成長しますから。特にネットが使えないって未経験者の成長を確実に阻害してますからね。
もちろん、個人の成長より会社のセキュリティの方を優先させなければいけないのは大規模になるほど当たり前ですし、経営者観点からも賛同しますが、個人観点から言わせてもらえば
やめとけ
です。
僕はどちらの業界でも仕事をしてきましたが、あくまで、ラフに仕事出来て、おかし食いながらヘッドフォンつけて、フリーアドレスで仕事場所はどこでやってもいい。というところでどうせなら仕事をしたいと思ってます。(もちろん、やる事きちんとやるという責任の元です)
そういう選択の自由を手に入れたくてプログラミングを学んだんですから。
それが、一般の方が考える本来の「手に職」ではないのでしょうか?
もちろん、レガシー過ぎても現場がないので、確実に
最新もちょいレガシーもどちらも学ぶべき
です。
最新でもレガシーでも出来るエンジニアには関係がない
まぁ、そもそもの話、最新かレガシーかとかってある程度エンジニアレベルがあるとどうでもよくて、どっちも卒なくこなせます。
だって、根本同じなので。
結局、その根本をきちんと学ばなければ最新がどうのみたいな風説に惑わされるんですよ。マーケティングも同じで、横文字でカッコいいマーケティング手法みたいなのはいくつもあるんですが、結局根本は一緒でそこを抑えてない限り、
初心者と何ら変わりません。
マーケティングもなんでもそうですが、根本や基礎をきちんと培ってない人って成果出ないんですよね。
僕は投資も好きですが、投資の世界でもテクニカル分析ではRSIやMACDといったさまざまな最新の分析手法がありますが、根本は古いも古い「移動平均線」なりの理解できてないと意味がないわけです。(根本はそこから色々と派生していて、EMAはSMAの改良版ですし、MACDはそのSMAを使っているので、皆根本のSMAを理解しないと真に理解は出来ないわけです)
「今時、移動平均線なんて教えてるの?」と投資の世界でバカにする人はいません。
プログラミングの世界でも、例えば弊社ではFuelPHPとLaravelといった最新とレガシーをどちらも教えていますが、2つ学んでおけば結局「どんなフレームワークでも扱える」わけです。だって、
根本同じ
ですからね。もちろん、技術大好きなエンジニアさんからすれば「いや、全然ちげーわ!」という人も中にはいるでしょうが、そんな細かな部分を実際現場で求められる事はほぼありませんし、そこまでのレベルでなくとも十二分にエンジニアとして1000万プレーヤーで稼げるので、
無駄な学習コスト
だと僕は思っています。もちろん、そういう人も世の中に必要ですけどね。
javascriptだって、「TypeScriptでしょ!」なんて言う人いますが、そもそもTypeScriptはjsやクラス概念が分かってればすぐ書けますから。そういうのは現場で必要なら、面談前にちょちょっと学んでやればいいレベルのものです。
因みに弊社ではフロントエンドエンジニアとしてもbackboneというフレームワークの元祖のようなものでフレームワークという仕組みがどう作られているのか根本的な部分を学び、さらにvueだけでなく、reactとreduxを使っての簡易SPAを作る事で状態管理やコンポーネント設計、データフローを学んでいきます。
backboneなんて教えてるの?なんて言うエンジニアがたまにいるんですが、そういう人は申し訳ないですが確実に低レベルです。教え方が分かっていないのでしょう。
現にウェブカツ!!をレビューしているサイトには5段階評価で1をつけて、
「卒業生です!SPAを教えていないしモダンじゃないです!」
なんてことを書いている人がいるんですが、確実に卒業生な訳がありません。
うちは卒業生には卒業証書と証明番号を渡していますからね。(そのレビューサイトはログインせず本人確認もなく誰でも書けるようなので、嫌がらせなんでしょう)
学習というのはしようと思えばどこまでだって出来ますが、仕事やフリーランスであれば事業としてやる以上は「ちょうど良い塩梅の費用対効果」を産むものでなくてはいけません。
実際、ある程度の技術レベルからは収入は鈍化していきます。プロボクサーの村田諒太さんも
100m飛ばせばホームランなのに160mも飛ばす必要はないようにボクサーでも人を倒すのに必要なパンチ力が150kgなのに200kg、300kgを出そうと練習しているプロの方がいて、とてもおかしい
と語っていますが、ITエンジニアも全く同じです。
もちろん、好きで身につけたいなら自由ですからやればいいですが、特にそういった技術一辺倒な思考ではないとかこだわりがあるわけでもなく、お金を効率的に稼ぎたいという事であれば、収入に寄与しないものを学んでも仕方がありません。
そもそも、技術で物は売れない
エンジニアの技術はあくまで道具です。実際、経営者など社内のアッパー層な人たちからすれば、
どんな技術か。は正直どうでもいい
んですよね。でも、「うちは最新技術使ってますよ!」みたいに募集しないとエンジニアが来ないのでそういう触れ込みをしているわけです。
ぶっちゃけ、どうだっていいんですよ。
売上上げてさえくれれば。
なので、どんなサービスやシステムを作るのか、そのサービスをどう伝えどう売上を上げてスケールさせていくか。
の方がよっぽど重要です。そして、その中で「こういう事をやりたいのなら、こういう課題を解決したいのなら、こういう技術を使おう!」という事でシステム、サービスが作られています。(そうでない事もあるけど)
ですので、
技術が物を売っているわけではない
ということです。
実際、Twitterにしろメルカリにしろ、多くのシステムは作るだけならどんな技術でも作れますし、システム的にも1ヶ月もあれば作れるほどいわゆる「レベルの低い」代物です。
でも、「売れるサービスになるかどうか」はまた別なわけです。
シリコンバレーでも、技術は高くても潰れる会社がよくあり、なぜなら、彼らエンジニアは
技術に力を注ぎすぎて売り方に力を入れなかった
という本末転倒なダメなエンジニアあるあるというのがあるくらいです。それだけ、技術なんてものは「それなり」で十分なんです。
もちろん、技術にある程度作る時の工数とかセキュリティをエンジニア側が常に気にしないといけないとか、後々の保守コストが抑えられるとかありますが、技術好きなエンジニアが気にする温度感と経営者層の温度感は異なります。大規模ほどそういうちょっとの違いで利益率が違ってくるので大事ですが、中小規模のシステムであれば「そんな事より売上をさらに上げる事の方が先決」ですからね。
弊社ではこういった考え方の下、フリーランスエンジニアを養成するプログラミングスクールとしては最大級のウェブカツ!!を運営していますので、学んでみたい方はコチラからどうぞ↓