maximum80の日記

「Empowering Engineers!! 世界中を楽しく働くエンジニアで満たす」を実現するための事業を展開しています。

常に学び続けることが唯一のエンジニアの生存戦略だと思います

新田です。久しぶりのエントリです。(相当久しぶりすぎる。)

JPHACKS2016を11月に終え、今年の2月にオンラインプログラミング学習サービスCODEPREPをリニューアルリリースしました。わりと鬼のようなスケジュールだったのですが、チームに恵まれて、なんだかんだ一つ一つ事業を進めていくことができています。

そして、こうやってこれらの事業を通じて今日も業界内で課題でもある高度IT人材育成・輩出領域にチャレンジしている定かではあるのですが、やっと少し一息つける(一息つけるとは言っていない)タイミングになったので、当エントリを書きます。

2017年も3月に入り、学校の卒業を控え春から社会人になる人や、これから就職活動をして自分自身が活躍できる環境を探している人も多いのではないでしょうか。

僕は普段の仕事の様々な場面で、そのようなエンジニア志望の学生と話す機会がたくさんあります。 その中で、 彼らによく聞かれる質問に今日は答えたいと思います。7割・8割ぐらいの確率で学生から聞かれる質問があります。こんな質問です。

「僕の今の技術は会社に入って通用するのでしょうか。」 「どのぐらい技術を学んだら、"エンジニアとして一人前"になれるのでしょうか」

きっと、これから社会人になる上で、特に 実力・成果主義がより一層加速するエンジニアという仕事だからこそ、沢山の不安を抱えている人も多いかもしれません。

そんな エンジニアとして一人前になりたい君へ 、僕が常に伝えていることを今日はブログでまとめてみようと思います。

心配しなくても大丈夫。いまの君の技術力はどこにも通用しない。

そもそも会社によって求められる事は異なる

同じエンジニアとしての仕事であったとしても、それぞれの会社のスタイルやビジネスモデル、フェーズ、組織体制など、様々な要因によって求められることは異なります。

また、技術的な側面でも、使用している言語やフレームワーク、社内の開発文化など、働き方は多種多様なので、一概に通用するしないという一次元の軸では判断ができないでしょう。

特定の会社内でも求められる事は常に変化し続ける

さらには、もし仮に同じ会社で働き続けたとしても、特にIT業界では会社や事業の成長に伴って、求められることが異なります。

立ち上げフェーズではとにかく素早い設計や実装力が求められることもあれば、 大きくなるにつれて、自動化や冗長化が求められたり、会社の規則をまもるコードを書くことを求められたり、システムをリニューアルするために一から新しい技術を活用することを求められるケースもあります。

会社で通用するかどうかというよりも、タイミングや状況にも関係するので、一概に今の技術力が通用するか、いつになったら会社で通用するかとは言い切れないのです。

でもそれは学生(未経験)の君だけじゃない

どんなに経験豊富なエンジニアでも、明日通用しなくなる可能性がある

会社のフェーズなどの事業要因だけではなく、技術の変化による要因もあります。そしてそのリスクは未経験者の君だけではなく、既に企業でずっと働いているエンジニアも同じく背負っているリスクです。

ちょっと簡単な例を紹介します。

今でこそ、皆さんはHTML5という言葉は聞き慣れているとおもいます。

しかし今から5〜6年前、当時まだスマートフォンは今ほど普及しておらずガラケーが主流の中、ブラウザ上で動的な画像やアクションを描画するために、ActionScriptを用いたFlashという技術が主流となっており、 Flashエンジニア というエンジニアが存在しました。

Flashは当時のWebをリッチなものにして、ブラウザ内でインタラクティブな表現を可能にしました。 しかし、セキュリティーの脆弱性、ブラウザのクラッシュ、ページのローディング速度など、様々な問題に直面しました。

そんな中、ブラウザの進化に伴いFlashに代わりって登場したのがHTML5です。 簡単なHTMLを記述するだけでビデオ再生、オーディオ再生を可能にし、canvasという技術を用いて沢山の図形やアニメーションなどを手軽に描画出来るようになりました。

そして現在、ほとんどの主流ブラウザではこのHTML5が主流となり、Flashのサポートを終了しています。

[参考] 主要 Web ブラウザーによる Flash の無効化について

そしてHTML5をサポートしているブラウザがどんどん重宝されるようになり、 Mobile HTML(HTML5のブラウザ対応状況をチェックできるサイト) のように、様々な主要な技術がどのブラウザで対応しているのかと、ブラウザは開発者に煽られてばかりです。

今、Flashエンジニアを求めている会社はほとんど無いに等しく、当時ActionScriptを用いて描画をしていたエンジニア達は、HTML5、CSS3、JavaScriptをメインに扱っているのが標準になりました。

これがこのたった5~6年間でおきた変化です。

我々は何度も何度もスタートラインに立たされる

いまご紹介した例は一例にしか過ぎません。

それ以外にも、iOSの開発言語がObjective-CからSwiftに変わったりとか、 VagrantとChefでの仮想環境の構築にハマっていたエンジニア達は、今はDockerに夢中になっています。

何を言いたいかというと、 今日の世界標準が明日も標準であるとは限らない。ということです。

標準が変われば、必要な技術も、知識も、求められることも変わってきますので、エンジニアもある特定の技術だけを身に着けていれば生き残っていけるとは限らないのです。

そうやって、標準が進化したり変わっていくたびに、私たちエンジニアは何度も何度も目まぐるしく振り出しに戻され、スタートラインに再度立たされ続けるのです。

"常に学び続けること"がエンジニアの唯一の生存戦略

スタートラインに立てば経験者も未経験者も状況は変わらない

そのため、冒頭にも言ったように、今もっている技術は十分通用するか、という議論や心配をする必要は全く必要ありません。 気楽に 「どうせいつかいらない技術になるかもしれない」ぐらいに捉えておく方が良いでしょう。

今自分が持っている技術に固執しないでください。いつかまた振り出しに戻ります。

逆に、何かの技術が進化すれば、経験者であろうと未経験者であろうと、また一から同じスタートラインに経つことが出来るのです。

そこから素早く走り出せる”柔軟性”や”応用力”を身につけよう。

そのため、 - 色々な変化に柔軟に対応できるようになること - 常に技術を学び続ける習慣づけをすること

のほうが、圧倒的に大事と言えるでしょう。

この技術柔軟性を得るためには、思想的バックグラウンドを理解することが必要です。

その技術がうまれた目的、どのような課題を解決してくれるのか、また、一体将来的にはどのようなものを目指しているのかを理解しながら習得すること、というような意味合いです。

バックグラウンドを理解できるようになると、道筋を正しく理解しながら習得することができ、道を踏み外す可能性は低くなります。

この直感を研ぎ澄ませるためには、何度も何度もスタートラインから進んでいく経験を積んでいくことしかありません。

経験者のほうが比較的有利なのは、 自分達よりも技術を持っているからではなく、何度も経験を積み重ねたことによって、この柔軟性や応用力を持ち合わせている可能性が高いからです。

とにかく変化を楽しもう!エンジニア人生は常に学習の連続だ。

結論、今の技術力や能力よりも、 常に学び続けることが唯一のエンジニアの生存戦略です。

そのため、スターラインに何度も何度も立たされ、また前進していく事、常に新しい技術を取り入れていくことや日々の技術変化を、本当に楽しめるかどうかが本来エンジニアに最も必要とされる素質なのかもしれません。

昨日までなかったテクノロジーがまたどこかで生まれ、新しいデバイスや概念が普及し、何かの仕様や要件が変わったり、そんなことがあちこちで日々発生しています。

「くそー!せっかく○○が出来るようになったのに!」という気持ちがあるかもしれませんが、これらの変化や課題をチャレンジだと思って楽しみましょう。

今の技術力を心配する時間があったら、一つでも多く昨日できなかったことを今日できるようになりましょう。

そして今日必要な技術を知らなかった過去の自分や、コードをいつも笑えるようになりましょう。

その積み重ねを繰り返していくうちに、気づいたときには周りから「一人前のエンジニア」だと思われているかもしれません。

ちょっとだけCODEPREP(コードプレップ)の宣伝

これまで書いてきたような、沢山の人達が常に 新しい技術を常に学ぶことを楽しみ、活躍できるエンジニアを目指し続けられるように、と想いを込めて、弊社ではCODEPREP(コードプレップ)というオンラインプログラミング学習サービスを提供しています。

CODEPREP(コードプレップ)

CODEPREPでは毎日10分から始められる実践的なブックを幅広く、どんどん提供していく事で、皆さんのエンジニアとしての飽くなき探究心、終わりなき学習をサポートしていければと考えております。

さらに現在は無料で提供しております(今後有料にしていくよ)ので、是非今のうちにたくさんお楽しみいただけると幸いです。 (最後宣伝ですみません。笑)