現代はデジタルテクノロジーが人びとのさまざまな営みに大きく関わっていて、ほとんどすべての産業でITエンジニアの人材力が必要です。売り手市場なので、エンジニアの方で転職を検討している人も多いでしょう。
もちろん現役のエンジニアの転職は難しくないですが、その後も継続的に活躍するためには、市場が求めるスキルを身につけていかなければなりません。この記事では、エンジニアへの転職を考えているみなさんに向けて、将来的に必要なスキルについて詳しく解説します。エンジニアとしての転職のビジョンを描く参考にしてください。
※基本的なスキルについては、こちらの記事で解説しています
IT技術が人びとのあらゆる営みに深く関わっている現代において、産業の各方面からITエンジニアの人材が求められています。そんなITエンジニアへの転職を考えたり準備したりしている人も多いことでしょう。しかし、IT業界においてエンジニアとして第一線で活躍するためには、最低限必要なスキルを身につけなければなりません。また、エンジニアになってから学んでいくべきスキルもあります。この記事では、エンジニアへの転職を考えているみなさんに向けて、必要なスキルについて整理して解説をしていきましょう。エンジニアにはスキル... エンジニアに転職するときに必要とされるスキルとは? - 35ish |
目次
転職のために身につけて損はない汎用スキル
エンジニアにとって必須ではないけれど、身につけておいて損はない汎用性が高いものがあります。それは、以下の3つの言語に関するプログラミングスキルです。
- PHP
- JavaScript
- C言語
個別に詳しく解説します。
PHP:最も広く使われている言語
PHPとはサーバーサイドのスクリプト言語で、動的にWebページを生成できるのが特徴です。仕様や文法が他のプログラミング言語と比べるとシンプルで学習コストが低いと言われています。MySQLなどのデータベースとの連携がしやすく、Webアプリケーションの開発に重宝されてきた言語でもあります。CMSの代表的存在であるWordpressもPHPで作られています。
競合の言語にはRubyやPythonがありますが、このシェアの高さが、PHPの人気の秘密とも言えるでしょう。他にも、PHPが広く使われている理由として、主なものを挙げてみましょう。
- 学習コスト(習得に要する時間と労力)が低い
- 日本語情報が充実している
- LaravelやCakePHPなどのPHP向けのWebフレームワークが充実している
- PHPを使えるエンジニアは非常に多いので開発者を集めやすい
PHPを学ぶメリット
PHPを学ぶメリットとしてはPHPを使う仕事が豊富にあり、働き口に困ることが少ない点です。実際にPHPをメインの言語として使用している企業は、開発実務が未経験あるいは浅い人たちにも門戸を開いていることが多いです。そのため、エンジニア経験が浅い転職志望者は、PHPを学ぶことで仕事に就ける可能性は大きく広がるでしょう。
ただし、すでにバックエンドの開発経験を積んでいるエンジニアにとってPHPを学ぶメリットは少ないです。なぜならPHPをメインとして使用するエンジニアは「初心者」と見なされされがちになり、就職や転職でも評価が低いためです。このため、PHPはエンジニアとして経験が浅い人にとっておすすめです。
JavaScript:あらゆるブラウザ上で動く唯一の言語
JavaScriptは学習コストが低く、初学者でも習得しやすい言語です。現時点でPC用やスマホ用ということに関係なく、ほとんどすべてのブラウザ上で動く言語はJavaScriptだけであるといわれています。フロントエンド開発に関しては、勉強すべき言語の選択肢がそれしかない状況です。
JavaScriptを学ぶメリット
JavaScriptを学ぶメリットは、比較的簡単に習得できるにもかかわらず、フロントエンドとサーバーサイドを共に開発可能である汎用性の高さによって仕事の幅が広がることです。また、豊富な開発実績によりノウハウが蓄積され、 優秀なフレームワークや豊富なライブラリなどの使いやすい環境があります。
C言語:古い歴史と高い汎用性を持つ言語
C言語は、1972年に開発されたプログラミング言語で、汎用性が高いことや簡潔に記述できるという特徴を持っています。
C言語を学ぶメリット
C言語を学ぶメリットとしては、汎用性が高い点です。実際に、C言語を学んでから、C++、Python、Rubyといった他のプログラミング言語の学習に進むエンジニアも少なくありません。さらにC言語が適用できる分野はOSなどの基幹開発やスマホアプリの作成から、注目されるIoT、産業ロボット分野やゲーム、ハードウェアの制御の役割を担う組み込みソフトウェアまで多岐にわたります。このため、C言語ができると、転職に有利であることは違いありません。
汎用スキルを紹介したところで、ここからはエンジニアを「開発系」「Web系」「インフラ系」と大分類した場合の代表的なスキルについて解説します。
開発系エンジニアにとって今、重要なスキル
まず、開発系エンジニアにとって今、重要なスキルを紹介します。システム開発やアプリケーション開発、Webサービス開発などで用いられるものです。重要なスキルの対象として、ここでは以下の4つを挙げておきます。
- Ruby
- Python
- Kotlin
- Flutter
それぞれを詳しく見ていきましょう。
Ruby:豊富なライブラリで日本語情報が潤沢
Rubyはまつもとゆきひろ氏により開発されたオブジェクト指向スクリプト言語です。日本発信のプログラミング言語として初めて、国際電気標準会議(IEC)で国際規格に認証されました。使用される分野は広く、多くのWebサービスで使われています。特にスタートアップ系の企業が開発言語としてRubyを選択するケースが、ここ数年でかなり増えています。
ソーシャルゲームやEC系はPHP、アドテク系はJavaが使われますが、Rubyは上記以外の多種多様な分野のWebサービスで使われています。その背景にはRuby on Rails という非常に有名なWebフレームワークの存在も寄与しているのは間違いありません。
多数の便利なライブラリの存在
Rubyのライブラリは「gem」と呼ばれています。ひと言でいえば、Rubyで書かれたプログラムをパッケージ化したものです。コマンド1つでそのパッケージをインストールあるいは削除できるので大変便利です。一般的なWebサービスを開発する観点からすると、Rubyの場合はそういう用途に使える便利なgemをすでに誰かが作ってくれているケースが多く、また日本語の参考情報が豊富です。
Rubyのコミュニティは充分に活発で、この言語が将来においても広く使われていくだろうという期待感と安心感があります。
Rubyを学ぶメリット
もし将来的にスタートアップ企業で働くことを考えているのであれば、Rubyを学んでおけばメリットが大きいです。なぜなら、多くのスタートアップ企業ではRubyおよびそのフレームワークであるRuby on Rails(通称Rails)を選択しているので選考に有利であり、入社してからもパフォーマンスを発揮しやすくなります。
Railsを選択している企業には、モダンな開発手法を志向していることが多いです。そういう企業に入りやすくなるという観点からすれば、RubyとRailsをある程度習得しておくと有利です。
このような現状から、RubyとRailsに関しては、当面は広く使われ続ける可能性が高いです。他のスクリプト言語やWebフレームワークが、現在のRubyとRailsのポジションをわずか数年で奪っていくということは考えにくいでしょう。
エンジニアへの転職を目指す方にとって、将来エンジニアとして働いていく中で「スクリプト言語」と「コンパイル言語」に関して、それぞれひとつ以上は得意な言語として持っておく方がよいです。その際に、スクリプト言語としてRubyを選んでおくことは、総合的には悪くなに違いありません。
Python:機械学習の普及によって一躍注目
Pythonは日本よりも海外で人気が高い言語です。Google社内の開発基準言語のひとつとしても知られています。Pythonは機械学習の分野においてはすでに事実上のデフォルトな言語で、ここ数年の「機械学習ブーム」によってPythonの需要が一気に伸びました。
Pythonを学ぶメリット
Pythonの学習コストはPHPと同じくらいか、多少高い程度だといわれています。しかし、機械学習系のサービスを提供している企業が、サーバーサイドの開発でもPythonを使用するケースが増えてきています。その理由は機械学習の言語とサーバーサイド用の言語をPythonに統一してしまった方が開発効率がよいからです。
Pythonは、機械学習系のエンジニアにつきたい人にとっては今や必須となっています。機械学習に興味があり、その方面の仕事をやってみたい人にはPythonを学ぶことはおすすめです。
Kotlin:最も勢いのある言語のひとつ
Kotlinは、統合開発環境の開発元として有名なJetBrainsという企業が開発した言語で、JavaやScalaと同様にJVM系言語のひとつです。
Androidの公式開発言語
KotlinはAndroidの公式開発言語に選ばれたことにより、一気に人気が出ました。日本だけでなく世界中のエンジニアコミュニティ内で「最も勢いのある言語のひとつ」だと考えてよいでしょう。バックエンドに関しても、以前であればJavaやScalaが選択されていたようなケースにおいて採用される事例は増えてきています。
その理由は、Javaにはないモダンな文法でプログラムを記述できる点です。また、エンジニアコミュニティでも人気が非常に高いです。そういう背景から、Better Javaというカテゴリにおけるファーストチョイスの言語のポジションをKotlinが確保しかねない状況です。
特筆すべきはKotlin/Nativeという技術を使って、iOS/Android/Linuxなどの各プラットフォーム用のネイティブのバイナリファイルを出力できることです。Kotlinで記述されたプログラムを各プラットフォーム向けのネイティブバイナリに変換すれば、それぞれのプラットフォームが持つ性能を最大限に発揮することができるというメリットがあります。
よって、今後は「クロスプラットフォーム開発用言語」としての使われ方もさらに広まっていく可能性があるでしょう。
Kotlinが持っている優位性を知ろう
Kotlinが持つ優位性は以下の通りです。
- Androidの公式開発言語である
- バックエンドの開発でも使用可能
- Javaと比較すると文法がモダンである
- Scalaと比較すると学習コストが低い
競合する言語は、Java、Scala、そして静的型付け言語のGoです。
KotlinとGoのふたつの言語を比べると、学習コストの低さや開発者人気の高さなどではどちらも遜色ないので、「JVM系言語の資産やノウハウを活用したいかどうか」によって、このふたつは棲み分けがされていくのではないでしょうか。
Kotlinの学習コストは、同じJVM系言語であるScalaと比較するとかなり低く、Goと比較するとやや高めですが、文法的にJavaに似ているので、Javaの経験がある人にとっては低めかもしれません。また、Javaと同様にJVMで動作するので、Javaと100%の互換性を持っているのもKotlinの特徴です。
Coroutinesという非同期処理用の機能を理解するのは少々時間が掛かりそうですが、それ以外に難易度の高いところはそれほど多くはないといえます。
Kotlinを学ぶメリット
Android開発に関しては、すでにKotlinがファーストチョイスの言語と考えてよいでしょう。よって、Androidエンジニアにとって習得しておけば転職やアサインに有利になるというメリットがあります。さらに、バックエンドに関してもメイン言語に積極的に採用される傾向があるので、バックエンドエンジニア にとってもKotlinを使えれば強みになるというメリットがあります。
また、Kotlinを使うということは必然的にJavaの勉強もある程度することになります。そのため、JavaをやりたいわけではないがJVM系言語の経験を積みたいという人にとっても学ぶ価値があるでしょう。また、エンジニア コミュニティ内で非常に人気が高く、現在世界中で最も勢いのある言語のひとつです。
しかも、学習コストはそれほど高くありません。JVM系言語であるがゆえにJavaの資産やノウハウが活かせます。「新たに静的型付け言語を導入する場合はより学習コストの低いGo」「JVM系言語の資産やノウハウを活かしたい企業の場合はKotlin」のように棲み分けながら、安定して伸びていくかもしれません。
Flutter:iOSとAndroidのアプリ開発が同時にできるフレームワーク
Googleが2018年にリリースし、モバイルアプリフレームワークとして紹介されることが多いFlutterは、iOSとAndroidを同じソースを共有しつつ同時進行で作成できます。厳密には完全に同じソースとは言い切れないので、広義でモバイルフレームワークと呼ぶ場合もあります。
特におすすめできるのは以下のような人たちです。
- Androidアプリ開発者であるがiOS開発も始めたい人(またはその逆)
- モバイルアプリ開発をこれから本格的に始めたい人
- Apache Cordovaをそろそろ卒業したい人
- React Nativeに馴染めない人
FlutterはDartという一般的には聞きなれない言語を使って開発をします。これは、JavaやJavaScriptを知っていればそれほど難しくありません。この言語はもともとJavaScriptの代替言語としてリリースされたので、TypeScriptとよく似ており、ほぼ同レベルの言語と捉えてもよいでしょう。また、Flutterを使ってモバイルアプリを開発する際に、Dartについて勉強していなくても大丈夫です。
Flutterのメリット
同時にiOSとAndroidのアプリを作れることが、Flutterの最大のメリットです。また、Googleが潤沢なドキュメントを提供しているので、参考情報には事欠きません。ほかにも、ウィジェット(部品)の汎用性が高く、UIのパーツが豊富にあります。仕様変更もやりやすく、テスト工数数を抑えることができます。
Web系エンジニアにとって今、重要なスキル
エンジニアの中でもとりわけ将来性が見込まれるWeb系エンジニアにとって今、重要なスキルの対象は以下の3つです。
- AWS
- Kubernetes
- Go
個別に見ていきましょう。
アマゾンの広範囲なクラウドAWS
AWS(アマゾン・ウェブ・サービス)は、地球上で最も包括的で、広い範囲で採用されているクラウドプラットフォームです。数々のフル機能のサービスを、世界中のデータセンターから提供しています。何百万ものクライアントが利用しており、その中に含まれるのは急成長を誇るスタートアップ企業や、巨大企業、主要な政府機関などです。
クライアントはAWSを使用して企業としての俊敏性を高めつつコストを削減し、業務革新を加速させています。
当面は価値の上昇が続く技術
Web系のエンジニアが技術の価値を認められるための条件として、一般的に以下の3つが挙げられます。
- 上流工程を担当する
- 新規開発案件に参画する
- 機能要件と非機能要件が複雑な案件に参画する
それに加えてAWSのさまざまなマネージドサービスの知見があれば、今後の好条件案件に参画するうえで非常に有利になるのは間違いありません。
クラウドインフラの大半を占めるAWS
Web系自社開発企業で使われているクラウド系のインフラの、90%以上はAWSと考えてよいでしょう。つまりAWSのマネージドサービスでアーキテクチャ設計をすることなどもできます。さらに自分で手を動かしてそのインフラを実際に構築して、本番運用まで持っていけるようなスキルと経験があると、良質な案件に参画できる可能性が非常に高くなるといえるでしょう。
AWSの基本的なマネージドサービスは「VPC」「IAM」「EC2」「RDS」「S3」「Elasti Cache」などです。ほかにも「ECS」「API Gateway」「Lambda」「Cognito」「Kinesis」などの比較的よく使われるサービスがあります。
これらに関する知見をしっかり実務で経験しておくことは、効率よくエンジニアの人材価値を高めていく上で、優れた選択になるでしょう。
エンジニアはよりハイレイヤーを目指す
クラウドが登場して以降のWeb業界におけるWebサービスの開発方法は、自分たちでゼロから手作業にてインフラを構築したり、あらゆるコードを書いたりするのではなくなりました。優秀なエンジニアはAWSなどのクラウドベンダーが提供してくれている便利なマネージドサービスに上手に乗っかって、よりハイレイヤーでビジネス的付加価値の高い部分に集中するアプローチを取る傾向があります。
キャリアアップや転職を目指している人は、まずはAWS周りの技術経験を積むことを重視するのが得策です。
ポータブルかつ拡張性を持つKubernetes
Kubernetesは構成管理と自動化を促進する、コンテナ化されたワークロードやサービスを管理するための、ポータブルかつ拡張性のあるオープンソースプラットフォームです。今後需要が増えると考えられるも扱える人材の少なさから、Kubernetesを扱うことができれば間違いなく重宝されるでしょう。
もともとKubernetesの名称は、ギリシャ語のパイロットあるいは操舵手の意味です。2014年にこのKubernetesプロジェクトをオープンソース化したのはGoogleです。
壮大で成長し続けるエコシステムを備えていて、それらのサービスやサポート、そしてツールはさまざまな形態で利用できます。
Googleが本番環境で大規模なワークロードを稼働させた15年を超える経験と、コミュニティからの良質なアイディアのフィードバック群も反映されたKubernetesは盤石といえるでしょう。
マイクロサービス向けの揺るぎないコンテナ基盤として
一般的にマイクロサービス・アーキテクチャのWebサービスというのは、ある程度規模が大きくて、機能要件や非機能要件が複雑で、企業側もかなり大きな予算を投下している場合が多いです。Kubernetesの用途に関して正確に定義することは難しいのですが、少なくともWeb業界においては「マイクロサービス向けの揺るぎないコンテナ基盤」として使われていると考えて差し支えないでしょう。
細かくいうと、「マイクロサービス・アーキテクチャのWebサービスを効率よく管理運営するためのコンテナ基盤」ということです。マイクロサービスというのは、1つのWebサービスを単体の大きなアプリケーションで構成するのではなく、複数の小さなアプリケーション(マイクロサービス)の連携によって構成する方式のことです。ここ最近のWeb業界では、この「マイクロサービス・アーキテクチャ」が非常に注目されています。
さまざまな企業が1つの巨大なアプリケーションを、複数の小さなアプリケーションに分割するというという取り組みにチャレンジしています。
なぜなら、主に以下のようなメリットがあるからです。
●サービスごとに異なった技術の採用が可能
大きいひとつのサービスの中において、個々の小さいサービスは他のサービスと通信さえできれば問題ないので、すべてのサービスが同じ言語や同じ技術で開発されている必要はありません。
それぞれのサービスの担当チームが最も得意なやり方で開発を進めることができるので個々のクオリティが上がります。
●保守性や障害耐性が高い
個々のサービスが独立しているので、一部のサービスが停止しても全体としてはサービスの継続が可能です。また、メンテナンスも該当するサービスのみを一時的に停止すればよく、保守性も高まります。
●スケーリングや冗長化がしやすい
別々のホストで個々のサービスを実行すれば、それぞれでスケーリングや冗長化ができるようになります。負荷が高いサービスに限定してスケールアウトしたり、ミッションクリティカルなサービスに限定して冗長化したりといったことが容易にできます。
●チームを分割して品質を維持できる
通常サービスが大きくなると、どうしてもエンジニアの数が増えてコミュニケーションパスも増え、バグ発生のリスクは高まります。
しかしサービスごとにチームを分割して、それぞれの小さなチームとして開発することにより、品質の低下を防ぐことが可能です。
●個々のサービス一が小さく把握しやすい
通常の大きいサービスはコードベースが大きくなるので、それだけ全体を把握しづらくなっていきます。一方、マイクロサービスでは個々のサービスが小さいので把握しやすくなります。
●再利用性が高くなる
個々のサービスをシンプルな構造に保つことで、新たに別のプロダクトを開発する機会に再利用しやすくなります。また、サービスと通信さえできればよいので、再利用の際に実装が容易です。
このように多くのメリットがあるマイクロサービス・アーキテクチャに向いている基盤としてKubernetesが選択されることが多くなりました。それゆえ、重要度が非常に高くなっています。
扱えるエンジニアは人材価値が上がる
しかしながら、ノウハウを持つエンジニアがそれほど多いわけではありません。よって、需要と供給の関係で、マイクロサービスやKubernetesに関して充分な知見があるエンジニアの評価というものが、かなり高くなりやすい状況になっています。
ただし学習コストもかなり高く、習熟するにはそれなりの時間と労力が必要となります。しかし、おそらく今後数年間にわたって価値が高まり続ける技術であることはほぼ確実です。
よって、マイクロサービスとその運用基盤であるKubernetesに関しては、少なくとも現時点ではWeb系エンジニアにとって学ぶ価値が高いと考えて問題ないでしょう。
右肩上がりのプログラミング言語Go
GoはGoogleによって開発された言語です。公式サイトの言葉を借りると、Goはオープンソースのプログラミング言語であり、シンプルで信頼性の高い効率的なソフトウェアを簡単に構築できるとされています。
その説明のとおり、Goを採用すればプログラミングはシンプルな構文で容易に書ける上に実行速度が速いという強みがあります。
また「コンパイル後の実行ファイルのサイズの小ささ」や、マイクロサービス構成での開発においてエコシステムが整っていて、事例が多いことなども強みです。そのため、近年では採用する企業が増えつつあります。さらに、GCPというクラウドを使う際に非常に優遇されているので、価値があるでしょう。
2009年にリリースされた、この比較的新しい言語は当初ではLinuxとMac OSのみのサポートだったのが、2013年3月リリースのバージョン1.0以降はWindowsにも対応しています。
Goの習得は当面、転職にも有利
さらにここ最近は、前述の「マイクロサービス構成」でWebサービスを開発する際に、Goはファーストチョイスの言語の地位を確立した感があります。
本来マイクロサービスというものは、さまざまな言語が選択可能ですが、そういう点でGoの価値は非常に高くなっているといえるでしょう。しかもGoは学習コストが低いのです。マイクロサービス構成を採用しているかなり多くの企業が、言語にGoを選択するケースがとても多いです。ということはGoをある程度使いこなせると、マイクロサービス構成の開発案件に参画できる可能性が高くなります。また、そういう案件はKubernetesと同様な理由によって、高評価を獲得しやすいのです。現時点でバックエンドの言語では、最も学ぶメリットが大きいのはGoであると考えて間違いないでしょう。
同様のポジショニングのライバルとしては、RustやNode.jsです。Goが完璧というわけではないけれど、前述のような複数のメリットを比較すると今のとことろはGoに軍配が上がります。よって、今後もまだしばらくは、Goの右肩上がり状態は続くと考えられるのです。そこに乗っかっておくのは、賢い選択に違いありません。歴史が浅い言語だけに、Go言語を使いこなせて上流工程ができるエンジニアは希少価値があり、好条件での転職がしやすいといわれています。
インフラ系エンジニアにとって今、重要なスキル
インフラ系エンジニアにとって今、重要なスキルの対象は以下の3つです。
- クラウドサーバーに関するスキル
- インフラ設計に関するスキル
- セキュリティに関するスキル
それぞれを紹介しましょう。
インフラの仮想化に関するスキル
かつては企業がサーバーを保有するオンプレミス型が主流だったため、WindowsやLinux、UnixのサーバーOSの知識とスキルで充分でした。しかし近年はクラウドサーバーを使ったネットワーク構築が普及してきています。GoogleのGCPやAmazonのAWS、MicrosoftのAzureなどの主要なクラウドサービスを利用したインフラの仮想化に関するスキルも必要です。
インフラ設計に関するスキル
インフラ設計工程が担当できる上級エンジニアになるには、インフラ設計スキルが必要不可欠です。インフラ設計においてはシステムの処理できるキャパシティを考慮した上でサーバー構成や台数を想定します。また、処理高速化要件として負荷分散をするためのサーバーや、セキュリティ要件としてユーザーを認証するためのサーバーな設置するケースなど、多種多様な構成があります。
そのため、各システムに最適なサーバー・ネットワーク構成を設計するスキルが、インフラ系エンジニアに求められます。習得難易度が高そうなイメージはありますが、学習書や講座などが多数あるので、学習しやすい環境になっています。インフラ系エンジニアとしてのキャリアアップを視野に入れるなら、身につけておきたいスキルです。
セキュリティに関するスキル
近年は企業にとってセキュリティの重要性は甚だ大きくなっており、そのセキィリティ設定もインフラ系エンジニアの仕事に含まれます。そのため、インフラ系エンジニアには情報セキュリティマネジメントへの理解やアプリケーションやネットワークの知識とスキル、そしてウイルスや不正アクセス手法などの攻撃に関する知識やスキルが求められます。
インフラ設計を行う際にも、セキュリティ対策は必要不可欠です。具体的な対策にはシマンテックやノートンなどのセキュリティ製品を扱うことになるので、それらに関する知識もあると良いでしょう。
エンジニア転職に必要なIT関連以外のスキル
エンジニアとして転職するためには、IT関連以外のスキルも必要です。特にコミュニケーションスキルとドキュメント作成スキル、そして英語スキルが求められます。
コミュニケーションスキル
エンジニアの業務の中で、社内での他のスタッフとの連携やミーティング、社外のさまざまなステークホルダーとの交渉や面談など多くの場面で、コミュニケーション能力が問われます。システム要件を設定するために重要なクライアントからのヒアリングや提案の説明、説得、進捗の確認報告などのコミュニケーションレベルがプロジェクト進行に影響します。つまり、成果物のクオリティに反映するほど重要なので、エンジニアにとってコミュニケーションスキルはとても必要です。
ドキュメント作成スキル
特に開発に関わるエンジニアは、ドキュメントを作成する機会も多いです。例えばSEなら、効率的に工程が進むように考えて設計書を書かなければなりません。システムに不具合が起きると、ユーザーは設計書などのキュメントを見て判断するので、ドキュメントは長期のシステム運用を視野に入れて書く必要があります。つまり、後から誰が読んでも理解できるようなわかりやすい文章で、なおかつトラブル解決の糸口になりえるように、論理的に書くスキルが必要なのです。
英語スキル
エンジニアにとって英語のスキルの中で、特にリーディングスキルが重要です。理由はいろいろとあります。エンジニアとしての調べ物(例えばバグの解決方法)を英語でリサーチできれば、日本語よりも圧倒的に多い英語情報で解決策や糸口が見つけやすいということです。最新技術の研鑽をするにあたっても和訳された情報や技術ドキュメントが出回るまでタイムラグがありますが、英語文献が読めればリアルタイムで情報をアップデートできます。
また、コードを書く場合も英語が出てくるので、わかる人はある程度の意味を理解しながら書けて効率がよく理解度も高くなるので、パフォーマンスが向上しやすいでしょう。それらの理由で、英語のリーディングスキルはあったほうが有利です。高校英語の文法をおさらいして、後は英文の技術ドキュメントをどんどん読むという訓練法が有効です。これこそリーディングスキルを磨きつつ技術情報も得られる、効率が良い学習方法といえます。また、英文技術ドキュメトをPCで読むなら、Google翻訳の拡張機能が便利です。知らない単語をポインターで選択すると、翻訳をポップアップで表示してくれるので効率よく読み進められます。
エンジニアが転職を視野に入れてスキルアップする方法
エンジニアが転職を視野に入れてスキルアップするためのアプローチを紹介します。代表的なものは以下の8つです。
- 書籍
- プログラミングスクール
- オンライン学習を活用
- 勉強会に参加
- IT企業のオンラインカンファレンスに参加
- IT企業の公式ドキュメントに学ぶ
- IT関連の副業にトライ
- 有名エンジニアのSNSをフォロー
それぞれを解説していきましょう。
書籍
学習書や技術書は豊富に選べて、自分のペースで学ぶことができます。基礎から応用、専門性が高い特化した内容のものなど、レベルに応じて選べます。ただし、ITスキルは机上で学ぶだけでなく、実際に手を動かし、自分で調べながら作業をすることでこそ身につくといわれるとおり、読むだけで終わっては意味がありません。
そこで、以下のようなプログラミングスクールで実践的に学ぶというアプローチも検討材料のひとつです。
プログラミングスクール
費用は掛かりますが、基礎から組まれているカリキュラムに沿って学ぶことができます。何から始めればよいかわからない人でも、ひととおりの基礎体力をつけるにはよいでしょう。オンライン対応も増えているので、必ずしも通わなくても受講できます。ただし、ある程度学習の方向性が理解できる人なら、以下のように、ネット上でコストをあまり書けずに学ぶことも可能です。
オンライン学習を活用
ネット上には良質な学習情報が多く存在し、無料の学習サイトもあればコスパな学習プラットフォームもあります。ピンポイントで学びたい項目だけ受講できるようなケースも多いので、何を学びたいかがはっきりしているなら、オンライン学習はおすすめです。そうやってある程度基本ができてくると、同じような目標を持つ人たちが学び合う、以下のような勉強会の利用価値が生まれてきます。
勉強会に参加
以前からエンジニアには勉強会に集って、切磋琢磨してスキルアップする文化があります。個人が主催するものや有志が集って開催するもの、企業が開催するものなどさまざまです。
代表的なフォーマットは以下の4つです。
- セミナー:講師エンジニアが登壇して講義を受ける勉強会
- ハンズオンセミナー:講義を受けながらも実際に手を動かす勉強会
- ライトニングトーク会:参加者が発表しあう勉強会
- もくもく会:参加者が黙々(もくもく)とテーマに沿って自習する会
本来は会場に集って行うものですが、現状ではコロナの影響でオンライン開催が増えています。
勉強会に参加するメリットは以下のとおりです。
- 価値ある情報を知る機会となる
- アウトプットする機会となる
- 人脈が作られる
- 先輩エンジニアの話を聞ける
- 同じ目標の人と出会ってモチベーションが上がる
IT企業のオンラインカンファレンスに参加
IT業界のリーダー企業であるMicrosoft やGoogle、Amazonなどは幅広くエンジニアを対象に、無料にて参加できるオンラインカンファレンスを定期的、あるいは不定期で継続的に開催しています。すぐにでも活用できるソリューションや話題性があるイノベーション、最新のテクノロジートレンドなどがセッションやプログラムで学べる貴重な機会です。リアルタイムでの質疑応答にも参加できる場合もあって、新たな知識と刺激と最先端の息吹を感じることができるオンラインカンファレンスに、ぜひ参加してみましょう。
IT企業の公式ドキュメントに学ぶ
最先端のテクノロジー情報は、大手IT企業の公式サイトの公式ドキュメントで学べます。AWS やMicrosoft 、Googleなどの公式サイトでは、開発プロセスや構成管理のコンセプト、クラウドアーキテクチャやマネジメントなどに関する技術ドキュメントも読めます。GCPの新しいサービスやAWSの新しいサービス、Pull Requestの将来のビジョンや新しいフレームワークの開発状況など、最新知識の宝庫ともいえます。
目下の業務には直接関係がなくとも、転職やキャリアアップを視野に入れるエンジニアにとっては知識をアップデートできる価値ある学習ソースといえるでしょう。
IT関連の副業にトライ
IT企業が提供する成果物が不完全なクオリティであった場合、企業としての深刻な信用問題になります。そのため、エンジニアとしてまだ経験が浅い場合に与えられる仕事は、どうしても簡単な内容が多いです。しかし、簡単な仕事ばかりこなしていては、自分のエンジニアとしての位置付けや成長度合いが分からず、転職をしたくてもビジョンが描けません。そんな場合には、より高いスキルを身につけるために副業を始めることも有効です。
エンジニアのスキルは、実践経験の中で「手を動かして」「壁に当たって」「悩んで」「自分で調べて」「解決する」これを繰り返すことで、より短期間で磨くことができます。また、副業では報酬を得ながら学べる上に、優秀な先輩エンジニアからコーディングや設計のレビューを受けることも大きなメリットです。レビューを受けると視野が広がり、知見も深まる機会となります。
ただし、現在の職場に迷惑をかけないように注意しましょう。
環境構築で実践
前述のようにエンジニアは手を動かすことがスキルアップにつながるので、コマンドやプログラムミングを実践するのがスキルアップに有効です。特に、自宅に開発環境を構築してみるのはよい訓練になります。そのメリットは、プログラミングを何度でも実践できて、実務に近い経験と、それを通して生きた知識が得られることです。システムが実際にどんな環境で稼働しているのかを理解することができるので、エンジニアにとって実践の価値があるスキルアップ につながります。
有名エンジニアのSNSをフォロー
多くの有名エンジニアが、TwitterやFacebook、YouTubeなどで情報発信をしています。最新テクノロジーについても惜しみなく発信しており、アカウントをフォローしてまめにチェックしているだけでも、テクノロジートレンドについてのアウトラインがわかるほどです。専門領域ごとに有名な人がいるので、興味があるエンジニアをフォローして情報を吸収していきましょう。
まとめ
現役エンジニアとして、転職して活躍するために必要なスキルを紹介しました。経験が浅いエンジニアにとっては、身につけて損はない汎用スキルから取り組むのがベターでしょう。ある程度経験を積んだエンジニアは、転職先を想定した系統別の市場で注目を浴びている重要スキルを身につけると、キャリアパスが広がるでしょう。ここでの情報も参考にし、紹介したスキルアップ方法も自分に適したものをチョイスして転職の準備に励んでください。