世の中は、猛烈なスピードで変化しています。よく行くお店の会計が、あるとき急にすべてセルフレジに置き換わっていて驚いたりします。
我々が日常で感じる変化の多くは、IT技術があってこそのものです。
どんどん便利になるのはいいのですが、そのぶんちょっと負担もあります。人々は、PCが出てきたらPCの、スマホが出てきたらスマホの使い方を学ばなければなりません。電子決済は当たり前、今日もセルフレジの前でまごつく人の姿があります。
末端のユーザーでさえこれだけいろいろ学習しなければならないのだから、それを主導する立場のITエンジニアが勉強しないでいられるはずはありません。
エンジニアは、勉強が必要な職業です。もちろんすべての職業がそうなのですが、エンジニアは特に必要な勉強量が多いほうだと言ってもいいでしょう。
この記事では、変化の激しいIT業界でエンジニアが生き抜くための勉強術をお伝えします。
エンジニアであり続ける限り、ずっと勉強が必要
よく言われることですが、エンジニアである間は、ずっと勉強が必要です。
IT業界では、次から次へと新技術が生まれ、旧式の技術に取って代わっていきます。例えばWebに繋がる手段として、以前はPCが主流でしたが、今ではスマホが当たり前になっています。これが、あと何年か後には「ああ、あったね、スマホ」などと懐かしがっている可能性だってあります。
このように移り変わる業界で生き残るためには、常に知識をアップデートしていく必要があります。
高いスキルを求められる職業
ITエンジニアは、そもそも高度なスキルを要求されます。プログラミング言語ひとつ覚えるのにもかなりの時間を要します。覚えただけでは不十分で、要求仕様通りにコーディングできなければなりません。
そのほかにも、バージョン管理システムやフレームワークといった現場で使用しているツール類の使い方など、身につけるべきことは無数にあります。そういうものに行き当たるたびに、素早く吸収する必要があります。
高いスキルは、高収入にも繋がります。エンジニアとしての収入を増やしたいのなら、人一倍努力して抜きん出たスキルを身につけましょう。
変化の激しいIT業界
高度なスキルがいるといっても、もし今のスキルのままでずっとやっていけるのならそれほど大変ではありません。しかし、今のままでいたら現状維持すら難しいでしょう。確実に時代に置いて行かれます。
プログラミング言語そのものも、変化します。以前のバージョンから機能が増えたり、以前は使えた機能が使えなくなったりします。そのたびに学び直し、場合によっては既存のコードを書き直します。
技術の栄枯盛衰も激しいです。かつてFlashという、アニメやゲームなどをブラウザ上に表示する規格がありましたが、今はほぼ消えてしまいました。それに伴い終了したサービスもたくさんあります。それらに携わっていたエンジニアが皆、次の仕事を見つけられたことを祈るばかりです。
今現在仕事があるからといってうかうかしてはいられません。常に「次」を考えておく必要があります。AIにより仕事を奪われる人が続出する、と世間では騒がれていますが、IT業界では、新技術により仕事がなくなることなど日常茶飯事です。
何を勉強すべきか
エンジニアには勉強が大事だとして、では、何を勉強したらいいのでしょう。それはその人の置かれた状況や目指す方向によって違います。
残念ながら「これさえ勉強しておけば大丈夫」というものはありませんが、ひとつ言えるのは、プログラミング言語はいくつ使えても損はない、ということです。
プログラミングは必須科目
職種に関わらず、ITエンジニアにとってプログラミングは必修科目です。いまや小学校の必修科目なくらいですから。
未経験の人がエンジニアを目指す場合は、まずはプログラミング言語から学ぶことが多いわけですが、すでにエンジニアとして働いている人でも、やはりプログラミング言語は学ぶのです。
使える言語を増やすことによって直接仕事に役立つこともあるでしょう。また、異なる設計思想の言語に触れることによって、見識が広がります。開発者としての懐を広げるためには、言語の学習が最適と言えるでしょう。
職種によって異なるスキルセット
どんな仕事でもこなすスーパー・エンジニアを目指すのはあまり現実的ではありません。専門分野を持つほうが何かと効率的です。
専門が違えば、当然必要となるスキルも違ってきます。Web関連の仕事の中でも、フロントエンドかバックエンドか、あるいはセキュリティーの専門家なのか、などによって学ぶべきことは違います。
専門分野に必要なスキルが一通り身についたなら、隣接分野のことをちょっと学んでみる、というのもいいことかもしれません。例えばフロントエンドの開発者ならば、バックエンドのこともちょっと覗いてみるくらいはしてみましょう。
エンジニアになるための勉強
繰り返しになりますが、エンジニアである間はずっと勉強をしなければなりません。その前の段階の、エンジニアになるまでにもやはり勉強は必要です。
エンジニアになる前となった後で、学ぶことや学ぶ方法に違いはあるのでしょうか?本質的な違いはありません。ただ、一般にベテランよりも初心者のほうが理解するのに時間がかかるため、よりじっくりと学ぶ必要があります。
エンジニアになるための勉強では、腰を落として、時間を惜しまず丁寧に学ぶことが重要です。難しいところもあるかも知れませんが、慌てずゆっくり進みましょう。
必要な学習時間
プログラミングの経験がない状態からひとつのプログラミング言語を習得するまでには、おおよそ300時間程度はかかるものと見ておいたほうがよいでしょう。人によって、言語によって、学習方法によって違ってきますが、多めに確保するほうがよいでしょう。
プログラミング言語をひとつ習得しただけでは、まだエンジニアになったとは言えません。ちゃんと動作して、しかも読みやすい、「プロらしい」コードを書けるようになるにはさらに何倍もの時間を費やす必要があるでしょう。また、バージョン管理など様々な周辺技術も習得しなければなりません。
ただ、細かい部分は実際に仕事を通して学ぶことになるでしょう。逆に仕事を通してしか学べないこともあるのです。仕事時間がすなわち学習時間でもある、ということです。
勉強の手順
エンジニアになるための勉強、とりわけプログラミングの学習には、うまくいきやすい手順というものがあります。行き当たりばったりにやってもほぼ挫折します。目標を絞って計画的に学習することが大切です。
その手順とは、
- 目標を定める
- 学ぶ言語などを決める
- 学習方法を選択する
- 計画を立てる
- 学習を進める
というものです。順を追って説明していきます。
目標を定める
まず、学習の第一段階は目標を絞り込むことです。Web系とかAIとか、どんな分野に進みたいのかという目標を定めることによって、学ぶことを明確にし、計画を立てやすくします。
プログラミングを使った職業はこちらの記事でまとめています。目標を定める際に参考になるかと思いますので、ぜひご覧ください。
学ぶ言語などを決める
次に、学ぶ内容を決めます。具体的には、目標達成のために必要なプログラミング言語を決める、ということになるでしょう。目標とする分野でよく使われる言語のうち、学びやすいものを選びましょう。
初心者にお勧めのプログラミング言語はこちらの記事で紹介しています。
学習方法を選択する
学ぶ言語が決まったら次は学習方法を選択します。主に独学か、スクールなどを利用するか、の二手に分かれます。
独学ならば、どんな書籍を使うか、あるいはWebサービスなどを利用するかということを決めます。スクールを利用するなら、どのスクールにするかを選びます。いずれにせよ、自分に合ったものを選べるよう、よく検討しましょう。
計画を立てる
学び方が決まったら、学習計画を立てます。スクールならば、ここは講師などと相談して決めるところです。独学ならば自分の都合に合わせて、無理のないようにスケジュールを立てます。
例えば300時間かけてひとつの言語を学ぶ場合、1日3時間勉強するとして100日間かかります。そこから割り出して、今週は教材をここまでやる、今日はここまでやる、という小目標を定めます。
学習を進める
あとは、計画に沿って学習を進めるだけです。一番大事なのはモチベーションを維持することです。心が折れないように、慌てずゆっくり進めましょう。計画がきつすぎると感じたら、緩めましょう。少々遅れても、挫折するよりはましです。
ただし、少しでもいいのでなるべく毎日やるようにしましょう。前にやった内容を忘れないうちにやったほうが効率がよいです。
何週間も、何ヶ月もサボってしまうと、それはただの中断ではなく、「挫折」ということになってしまいます。「そのうち再開する」と思っていても、なかなかそうはならないし、もし再開したとしても前に学んだことを忘れてしまって最初からやり直すことになる可能性大です。それでやり通せるなら、最初から中断などしなかった、とも言えます。
独学での勉強
勉強方法に関してですが、独学でやる場合、主に「書籍を読む」か「プログラミング学習サイトを利用する」の二通りが考えられます。その他にも、YouTube動画など、ネットで探せば優れたコンテンツがたくさん見つかりますので、それを教材に組み入れることも可能です。
書籍を読む
まず王道と言えるのが、書籍を読むことです。玉石混淆のネット情報に比べれば、内容のしっかりしたものが多く、信頼できます。読むだけでなく、手を動かしてコードを書いてみることがとても重要です。
内容の良い本を選んでやり通せば間違いなく力が付きます。反面、最後まで読み通すのはなかなか大変で、多くの人が挫折するのも書籍による学習です。
プログラミングを独学する際のおすすめの書籍をこちらの記事で紹介しているので、参考にしてみてください。
学習サイトを利用する
ブラウザ上で実際に手を動かして学習するタイプのWebサービスがたくさんあります。動画を見て学ぶもの、スライド式の教材によるものなど、いろいろなタイプがあります。よりアクティブな学び方として、注目されています。
多くの学習サイトがある中で、この記事では初心者にお勧めのサイトを厳選して紹介しています!学習サイトに興味のある方は、ぜひご覧ください。
スクールを利用した勉強
プログラミングスクールもたくさんあります。目標達成のため、計画を立てるところも含めて全面的に学びをバックアップしてくれます。分からないところはすぐに質問できるため、効率的に学ぶことができます。独学に比べて、かなり挫折率が低いとも言われています。学習期間も比較的短く済みます。
転職志望者向けやフリーランスに特化したところなど、様々なタイプがあります。自分が将来どうなりたいのかに合わせて選ぶとよいでしょう。
プログラミングスクールについてはこちらの記事で紹介しているので、ぜひ参考にしてみてください。
業務をこなしながら
結局、一番多くを学ぶのは仕事を通してということになるのかも知れません。エンジニアにとって勉強することも仕事の一部ですが、逆に仕事が勉強の一部でもあるのです。
必要なスキルをすべて完全に身につけてからでないと、エンジニアとして仕事ができないわけではありません。たとえ不完全なところがあってもどんどん仕事にチャレンジして、時には失敗しながら学んでいきましょう。それで、だんだんと一人前のエンジニアになっていけばよいのです。
エンジニアになってからの勉強
時に「激務」とも表現されるエンジニアとしての日々の業務をこなしながら、勉強を続けるのは大変です。そのため、それまでに蓄積した知識を活かせる内容ならばサッと済ませ、よくわからない、まったく新しいものならばじっくりと学ぶというふうに、メリハリをつけることが必要になってくるでしょう。
エンジニアになってからの勉強は、独学が主体になります。専門性が高まるにつれ教えられる人も少なくなるでしょうし、まだほとんど学ぶ人がいないような技術にも、時には果敢に挑んでいく必要があるからです。
セミナーなどを利用して幅を広げることはあるにせよ、深い内容はやはり自分で学ぶ必要があります。
勉強の方向性としては、専門性を高める、スキルの幅を広げる、時代の変化に対応する、といったものが考えられます。
専門性を高める
自分の専門分野に関して、より深い知識を身につけるよう学びましょう。どんな仕事が来ても対応できる、その分野のエキスパートを目指しましょう。
仕事上のトラブルが学びのきっかけになることもあります。ある知識が欠落していたためにプログラムがうまく動かなかった、だったらその知識を身につけよう、という具合です。そうすれば、対処したトラブルの数だけ専門性が上がっていきます。
専門書などで学ぶほか、他の専門家が書いたコードを読むのも勉強になります。自分の得意な言語の中の有名なライブラリのソースコードなどは恰好の教材です。
また、より上の立場を目指すなら、ソフトウエアの設計やプロジェクト・マネジメントなども学ぶ必要があります。こういう上流工程のノウハウに関しては、ビジネス書など技術書以外の本を読んだり、現場で人について学ぶことも大事になってきます。
幅を広げる
いろいろな案件に対応できるように、スキルの幅を広げることを心がけましょう。手っ取り早いのは使える言語を増やすことです。ひとつの言語に習熟していれば他の言語の習得にもさほど時間はかかりません。どんどん学びましょう。
自分の専門分野だけでなく、隣接分野や、時には遠く離れた分野のことも学んでみましょう。いつ、そういう他分野のエンジニアと一緒に仕事をすることになるか分かりません。そんなとき、相手の話が理解できるくらいの知識があると、スムーズに仕事ができます。
変化に対応する
専門性を深めたり幅を広げたりするのは、これからどんな仕事が来るのか、どんなトラブルが起きるのか、ということがある程度分かっているときには大いに役立ちます。しかし、まったく思いもかけない角度から変化がやってくるのがITの世界です。
やってきた変化に即座に対応できる柔軟性を持ちましょう。時には今までのやり方をかなぐり捨てて、新しいものに乗り換えなければならないかもしれません。どんな技術もいつかは古びる、そんな覚悟が必要です。
もちろん、新しい技術はすべてそれまでの技術の上に成り立っていますから、蓄積したものが完全に無駄になることはありません。地道にコツコツ勉強して足腰を鍛えていたからこそ、急な変化にも怪我をせずにすんだ、ということもきっとあるに違いありません。
まとめ
高度な専門職であるエンジニアは、なるまでにも、なってからも勉強が必要な職業です。エンジニアひとりひとりの地道な努力が、世の中の激変を生み、今日のように便利な世の中を作っているのです。そのことをやりがいとして、頑張っていってください。