見出し画像

2021年にプログラム言語を勉強するとしたら、何がいいのか考えてみた - 第4話:言語から考えるエンジニアとしてのキャリアパス


Swift

Swiftを書けるようになると、iOSアプリディベロッパーとして、iPhone, iPad, AppleWatchなどのアップル製品で動作するアプリが作れるようになります。

会社などに属さず、AppStoreにアプリを公開して、収益を得て生活する

iPhoneアプリを開発している(したい)企業に入って、iPhoneアプリ開発に専念する

といったキャリアパスがあります。または、Apple社そのものに入ることができる可能性も高まります。

企業ではiOSアプリ開発は、それ専門の仕事と考えられていることが多いため、他のことと掛け持ちとなることが少なく、iPhoneアプリ開発に専念できる環境を得やすいことも、Swiftエンジニアの特徴だと思います。

Kotlin

こちらも、Swiftと同じくして、Androidアプリディベロッパーとして、

Androidアプリを開発している(したい)企業にはいって、開発に専念する

Google Playにアプリを公開して、その収益で生活する

そして、Google社に入社する道もあると思います。

Swiftエンジニア、Kotlinエンジニアは、AppStore、Google Playにアプリを公開できるのが強みです。

自分のアプリの収益だけで暮らす、というのは正直かなり難しく、人気のアプリを作る高いセンスが必要ですが、
そのような殿上人になるのは難しくても、趣味でアプリを公開して、少しだけお金が入ってくるだけでも、アプリストアができるずっと前からエンジニアだった私からすればすごく充実したエンジニア人生だなぁ。。と感じます。

Javascript

Webアプリディベロッパーとして、フロントエンドの開発をする企業に入る

node.jsのディベロッパーとしてバックエンドの開発をする企業にはいる

自分でWebサービスを公開して独立する

など非常に多くの道があると思います。WebはiPhone、Androidアプリ以上に、社会のインフラとなっていて必要としている企業・人が多いため、キャリアの選択肢は非常に広くなっています。

バックエンドエンジニアになる場合

優秀なバックエンドエンジニアになるには、正直Javascript(node.js)の知識だけでは足りないと私は思っています。
インフラ(AWSとGCP)の知識をある程度身につけることと、できれば他のバックエンド用の言語(Python, Ruby, PHP, Goなど)をもう1言語身につけられたらキャリアパスがさらに開けると覚えておいてください(もちろんバックエンドエンジニアをやりながらこれらを徐々に習得していくことができる企業、環境もあり、就職前にすべてができないといけないということではありません。)

フロントエンドエンジニアになる場合

人気のWebアプリ構築のフレームワーク(Vue.js、React.js、Angularなど)のうち一つに精通する必要があります。またHTML/CSSの知識は必須になりますので、平行して習得し、修練していく必要があります。
フロントエンドのフレームワークは数年ごとに新しいものがでてきてトレンドが変わっていくので、新しいものを学び続けたり、新しいものを使って試行錯誤をするのが好きな人、得意な人に向いています。

逆に言えば、1つの言語、フレームワークで長く極めて行きたいという人にはフロントエンドエンジニアは向いていませんので注意してください。

C#

Unityとセットで習得して、ゲームエンジニアやVR/ARのゲームやアプリを作るエンジニアになる。

Windows向けのソフトウェアを開発するエンジニアになる

などの道があります。私個人としては、C#を勉強する一番のモチベーションはWindowsアプリではなく、Unityだと思いますので、こちらを紹介してみたいと思います。

UnityがバリバリできてゲームやVRソフトが作れる人は意外と少ないので、希少価値の高いエンジニアになれます。また制作物が派手で楽しいのもこの領域の特徴です。私はまだUnityは片手間で使うくらいで、没頭してなにかを制作したことはないのですが、この領域に没頭しているエンジニアをみていて、楽しそうだなぁ。。と羨ましく思うことはよくあります。

ただ、ゲームやVRという市場は特殊で、Unityエンジニアを必要としている企業も絞られてきますので、企業の選択肢はWebやアプリよりは狭くなるということだけ頭に入れておいてください。

個人でUnityでゲームを制作して、Google Playや、App Storeに公開することもできます。Unityは1つのコードから、iOS、Android両方のアプリをコンパイルできるので、そこはすごく魅力的です。

2Dゲームを作る際は、UIやキャラクターはある程度自分でデザインできると思いますが、
3Dゲームを作る場合、独自のキャラクターなどを作りたかったら3Dグラフィックツールを使って自分でキャラクターをモデリングできるスキルが必要になります。UnityにはAsset Storeという誰かがつくった3Dモデルを買えるオンラインのストアがあるので、そこから買ってゲームが作れますが、
オリジナルのキャラクターを制作してゲームをつくる場合、Blenderなどの3Dモデリングツールを習得する、あるいは3Dモデルができるデザイナーにお願いして作ってもらう、というところが、個人制作ではUnity/C#以外のハードルになりますので、そこだけ覚えておいてください。

Java

Kotlinと同じくAndroidアプリを開発してGoogle Playに公開して収益を得ることができます。

ただ、Androidアプリを開発しているスタートアップやベンチャーは、すでにKotlinに言語を切り替えている場合が多いため、企業に入ってJavaでAndroidアプリを開発できる機会はどんどん減っていっています。

Javaは、エンタープライズと呼ばれる大企業向けの業務システムを開発するところで最も盛んに使われており、こちらの領域では就職の機会はたくさんあります。

C, C++

C言語は、IOTデバイスや家電、携帯電話などのハードウェアに直接アクセスするレイヤーのプログラムを開発する「組み込みエンジニア」という種類のエンジニアになることができます。

私も前職のソニー・エリクソンでは、この組み込みエンジニアでした。「組み込み」の意味は、作ったソフトウェアが、ハードウェアにあらかじめ「組み込まれる」(ダウンロードしたり、後からインストールするのではない)ということから、「組み込みソフト」、「組み込みエンジニア」という言い方をされています。

IOTデバイスなどのハードウェア機器のプログラミングをする能力を身につけることができますが、実際に日本でIOTデバイスを開発しているベンチャーもC言語でつくる組み込みソフトのレイヤーは中国の深センのメーカーなどにおまかせで作ってもらっていたりするので、なかなか自分の活躍する場に出会うことが難しくなっているのが組み込みエンジニアの現状です。

ただ活躍の場を見つけられれば、ロボットや自動運転車の中枢部分など、かなり社会にインパクトを与えるものを作れる可能性を持っているのが組み込みエンジニアです。

Python

DjangoやFlaskといったWebサーバーをつくるためのフレームワークに精通してバックエンドエンジニアになる

機械学習ができるエンジニア、あるいはデータサイエンティストになる

などのキャリアを考えられるのがPythonです。近年人気のデーターサイエンティストへの道が開けるのが魅力的ですね。

個人的には、Pythonでちゃんとバックエンドのサービスが作れて、なおかつデータサイエンスもできる、つまり自分でつくった機械学習のモデルをサービスとして提供するところまで作れるPythonエンジニアはキャリア的に最強なのではと思っています。
近年のデータサイエンス人気で、機械学習のモデルを考えたり、それに必要なデータを揃えたり、することはできる人が少しづつ増えていますが、それを自分でバックエンドに組み込んで、サービスとして動くようにするまで作れる人はほとんどいません。
逆にDjangoなどでバックエンドを作っているPythonエンジニアはなかなかデータサイエンスの知識を習得する機会がなかったりして、この2つ両方ができると、日本だけに限らず海外のスタートアップでも非常に重宝されると思います。

Ruby, PHP

RubyであればRuby on Rails、PHPであればLaravelに精通してバックエンドエンジニアとして企業で活躍する道が王道だと思います。

また、Ruby on Rails、Laravelには、フロントエンド側(Webの見た目側)を作る機能も備わっているので、先述したJavascriptベースのフレームワークでフロントエンドを作らなくても、Ruby on RailsかLaravelで、バックエンド、フロントエンド両方を作ることもできます。

つまり、一人でWebサービス全部をつくることも可能なのです。

自分一人でWebサービスを作って公開することができるため、うまくいけばそのまま起業、独立するという道も開けます。

世の中に”フルスタックエンジニア”という言葉がありますが、これは、バックエンドからフロントエンドまで全部1人でできるエンジニアのことを意味します。

Ruby on RailsやLaravelのエンジニアは、HTML/CSSを身に着け、必要に応じて少しJavascriptも書けるようになることで、フルスタックエンジニアになることができるので、一番フルスタックエンジニアへの道が近いキャリアの始め方とも言えるでしょう。

(PythonにもDjangoというフレームワークが、Node.jsにもExpressとうフレームワークがあり、これらでも同様にフロントエンド部分も作る機能を備えています)

以上、あくまで私個人の見解ですが、各言語を身につけるとその後どういうキャリアを描くことができるのかをまとめてみました。

以上は私のこれまでの経験や、周りのエンジニアの動向を見ていての見解ですので、まずは最初のとっかかり的な参考としていただき、自分のなかで候補となる言語が1〜3つに絞れてきたら、その言語のエンジニアをWebやTwitterで探してどんなことをしているかより深く調査してみることをおすすめします。

御清覧ありがとうございました!




この記事が気に入ったらサポートをしてみませんか?