もし自分が今からプログラミング学習を始めるなら、どの分野を攻めるか?
これからプログラミングを勉強しようと思っているけど、色んな分野がありすぎてどれがいいのかよくわからない。。
自分がこれから勉強していくプログラミングの分野に将来性があるのか不安。。
あなたはそんなお悩みをお持ちではないでしょうか。
この記事では、現在エンジニア歴8年目で様々な分野のエンジニアを経験してきた僕が、「これからエンジニアになるにはどの分野を選んだら良いか」について解説しています。
これからプログラミングを勉強したい方の参考になれば幸いです。
もし自分が今からプログラミング学習を始めるなら、どの分野を攻めるか?
どの山に登るかを決めるためには、まずどんな山があるのかを知らなくてはいけません。
というわけで、まずはITエンジニアにどんな分野があるのか把握しておきましょう。
どんな分野があるのか?
僕が思いつく限りだと、だいたい以下のような感じです。
- webアプリエンジニア
- スマホアプリエンジニア
- 機械学習エンジニア
- 組み込みエンジニア
他にはUnityを使ったゲームの開発のエンジニアとか、Solidityを使ったブロックチェーンエンジニアとかもあると思いますが、あまりこの辺は詳しくないのでここでは触れません。
それでは順番に1つずつ見ていきます。
webアプリエンジニア
webアプリエンジニアは個人的にオススメです。実際に僕自身も色々と試した結果、いまはwebアプリエンジニアに落ち着いています。
webアプリエンジニアをオススメする理由としては以下のような感じです。
しっかり勉強さえすれば仕事ができる
まず、webアプリエンジニアは、しっかりと勉強さえすれば多くの人がなることができる職業だと思います。もちろん、ラクしてなれるわけではありません。仕事が終わった後や土日にも勉強するときは割とありますし、ある程度の論理的思考力とかも備わっている必要があります。
ただ、偏差値でいうと60~65くらいでもやっていけるのがこのwebアプリという領域だと思います。
後に説明しますが、機械学習エンジニアとかブロックチェーンエンジニアとかは、これよりももっとレベルが高いです。
リモートで働ける
webアプリエンジニアは物理的な制約が特にないので、リモートワークしやすいのもメリットの1つです。
情報が手に入りやすい
webアプリの分野は比較的歴史が長いので、書籍やネットでの情報もありふれています。
そのため、勉強しやすいというのもメリットだと思います。
スマホアプリエンジニア
スマホアプリエンジニアは個人的に最もオススメです。 難易度で言うと、webアプリエンジニアとそこまで大差はありません。ただ、webアプリよりも若干難易度が高いと思います。
なぜなら、例えば以下のようなことを考慮しないといけないからです。
- ストアへの申請
- OSごとの動作の違い
- 実機での動作確認
順番に解説していきます。
ストアへの申請
スマホアプリの場合、iOSのアプリであればApple Store、AndroidのアプリであればGoogle Playストアに申請を出さないといけません。
そのためには、アプリのアイコン画像も用意しなければいけないといけなかったり、申請のための条件を満たすように修正したりと、地道な作業が必要になってきます。
OSごとの動作の違い
iOSとAndroidではOSが異なるので、どちらかでは動くけどどちらかでは動かないといったこともときどき発生します。この辺りは、スマホアプリの開発ではネックになるところです。
ただ、最近ではFlutterなどのクロスプラットフォーム(iOSアプリでもAndroidアプリでも1つのコードでできる)に開発できる技術があるので、そちらを使うと良いと思います。
実機やエミュレーターでの動作確認
スマホアプリの場合は、実機やエミュレーターでの動作確認が必要になります。
この辺りもwebには無い概念なので、プラスαで学ぶ必要があります。
このように、スマホアプリエンジニアには、webアプリエンジニア+αの知識が必要になってきます。
とはいえ、これからの時代がモバイルファーストなのは間違いない(というか既にそうなっている)ので、スマホアプリの開発を選ぶのは良い選択だと思います。
僕はプログラミングの知識ゼロで今からプログラミングを勉強するなら、スマホアプリエンジニア(具体的にはFlutter)を選ぶと思います。
機械学習エンジニア
機械学習エンジニアに必要なのは主に以下の知識です。
- Python
- 数学(主に統計学)
- AI
僕は機械学習エンジニアを目指していた時期もあったのですが、かなり高度な数学の知識が必要ですし、それに対して興味を持つことができなかったので、職業として機械学習エンジニアを選ぶのはやめました。
一応僕自身の数学やPythonのレベル感としては以下のような感じで、割と自信がありました。
- 高校は数Ⅲまで勉強
- 大学は同志社大学の理工学部卒
- 大学では統計学を勉強
- 社会人になってからはPythonやニューラルネットワークの基礎を勉強(3年ほど)
ですが、実際に機械学習エンジニアとして業務をこなしていく上では、僕の数学レベルでは厳しいし、そこまで高度な数学を勉強したくないなと感じました。
もちろん、こういった数学の分野が得意な方にとっては機械学習エンジニアを目指すのもアリかと思いますが、個人的にはあまりオススメしません。
僕の肌感になってしまいますが、機械学習エンジニアとして業務をこなしていけるのは、偏差値70超えの人たちだと思います。
また、AIと聞くと華やかなイメージを持つかもしれませんが、実態は結構地味です。
AIの精度を高めるために、データの前処理、質の良い学習データの取得、ハイパーパラメータのチューニングなど、地道な作業が多くを占めます。
組み込みエンジニア
組み込みエンジニアとは、プログラムでハードウェアの制御をするエンジニアです。例えば自動車やロボットのプログラムがこれにあたります。
僕は1年ほど組み込みエンジニアとして働いていたこともあるのですが、組み込みエンジニアは正直いってあまりオススメしません。
理由は以下のとおり。
リモートワークしにくい
まず、ハードウェアの物理的な制約があるが故にリモートワークがしにくいというのがあります。
リモートワークがこれだけ普及している今の時代に、あえてリモートワークしにくい環境を選ぶ意味はないんじゃないかなと個人的には思います。
大手の下請け構造に陥りやすい
例えば自動車業界だと、どうしても大手企業の下請けとして開発をすることが多いと思います。大手でルールがガチガチのところだと、仕事をする上でそれが非常にストレスに感じることが多いです。また、多くの人間が書いたソースコードというのは非常に読みにくいというのも良くない点です。
Xについて
僕のXアカウントでは、主にweb開発、AI、会社経営のノウハウについて発信しています。もし興味があれば、フォローしていただけると嬉しいです。
プログラミング学習サポート&キャリア相談について
プログラミング学習サポート&キャリア相談も始めました。興味のある方はこちらから詳細をご覧ください。
Discussion