どのプログラミング言語を学ぼうか迷っている方向け。
せっかく時間をかけて学習するなら、需要が高く且つ長く使える技術を学習する方が好ましいです。
日本、海外で様々なプロジェクトを経験した身から、学ぶべき重宝するプログラミング言語について説明します。
この記事は以下のような方を対象者としています。
- プログラミング初学者の方
- スクールに申し込もうか独学にしようか悩んでいる方
- 長く開発現場で使える技術に興味がある方
- 将来海外でエンジニアとして働きたい方
前置き: 現場でよく使われる技術の理想と現実#
まずはこちらのツイートをご覧ください。
【駆け出しエンジニアの時】
— kzy@ダナン在住エンジニア🇻🇳 (@KzyRepository) March 29, 2021
学習当初から今でも使っているもの。
①SQL
②コマンドライン
③Git
④Javascript
特に①、②、③はどの現場でも必ず使うので、HTMLやCSS等よりも最初にやっておけば良かったと思う。
結論から言うと、このツイートで明記している通り下記技術は今でも案件でよく使われる技術になります。
※2024年6月に修正済みです。
- SQL
- Nodejs/Typescript
- AWS/GCP/Azure
逆にあれだけ昔は勉強したのに、今ではほぼ使わない技術は下記の通りです。
- HTML
- CSS
- PHP
当然アサインされる案件にもよりますが、この辺りは正直深く勉強しなくてもよかったと思いました。
この辺りは実際に開発現場を経験してから感じた使われる技術の理想と現実のギャップになります。
フロントエンドエンジニア VS バックエンド : どっちを学ぶべき?#
駆け出しエンジニアの頃は「フロントエンド/バックエンドどちらになるべきか」悩みます。
私も同じように悩み、結果フロントエンドエンジニアを目指すことにしました。
開発現場で数年働いた今思うのは、フロントエンドもバックエンド両方ともある程度理解が必要です。
理由は技術的な要件について議論をする時にどちらの知識も必要になるからです。
例えば「おすすめの居酒屋ランキング(票数表示有り)」を表示する開発タスクがあるとします。
そうすると、開発現場のフロントエンドとバックエンドチームではどちら側で処理をするかという議論が始まります。
◆フロントエンド側の主張
ユーザが快適に使えるようにフロント側に余計な処理を入れてパフォーマンスを落としたくない
→バックエンド側で集計して、その値をフロント側に渡してくれない?
◆バックエンド側の主張
バックエンド側では別の処理を行っていて他の処理にまで影響してしまう
→値だけフロント側に渡すから、集計ロジックを入れて表示するようにしてくれない?
このように、実際の開発現場ではフロントエンドとバックエンド両方のエンジニアが協力する必要が出てきます。
それぞれの事情を理解するためにも、フロントエンド/バックエンドの知識はある程度勉強した方が良いです。
プログラミング学習:フロントエンドエンジニアがおすすめの理由#
では一体何をどこまで学習すれば良いのでしょうか。
経験上、Javascript+何かしらのフレームワークを使って成果物作成が最良だと思います。
フレームワークとは「WebサイトやWebアプリを開発するためのライブラリの集合体」のようなものです。
フレームワーク側で用意された関数を使うことで自分で0から組み上げる必要がなくなり、手間をかけずに開発ができます。
ほとんどの開発現場では何かしらのフレームワークを使って開発を行う案件がほとんどです。
かつ、一度フレームワークを使って開発ができれば、新しいフレームワークであってもすぐにキャッチアップができます。
フロントエンドエンジニアの方にJavaScriptの学習をおすすめする理由は下記になります。
- フロントエンド、バックエンド両方で使われる言語である
- JavaScriptから開発できるものの種類が豊富(Web、モバイル、サーバサイド等)
- SPAやPWAなどストア申請が不要なモバイルライクなアプリが作れる
フロントエンドエンジニアの辛いところ#
上記色々とプラスの面のみ先に説明しましたが、マイナス面も併せて説明します。
実際の開発現場を経験し、下記がフロントエンドエンジニアの辛いところだと思います。
- 技術の流行り廃りが早い
- せっかく時間をかけて勉強してもすぐに使えなくなる
- 常に最新の技術にキャッチアップし続けなければならない
- 休みの日も常に学習を続けなければならない
- デザイナーのセンス次第で頻繁に手戻りが発生する
プログラミング学習:バックエンドエンジニアがおすすめの理由#
バックエンドとは基本的に裏側の処理部分を担当するので、フロントエンドよりも初めの難易度は高めです。
しかし、フロントエンドのように個人のデザインセンスや感覚の部分で修正が度々発生するようなことは大概は発生しません。
また、サービスの責任領域が広いことから給与はフロントエンドよりも高い傾向にあると思います。
※技術レベルによります。
バックエンドエンジニアの辛いところ#
バックエンドは実際の開発現場では度々の修正等はフロントエンドに比べ少ない傾向にあるかと思います。
ただし、下記の通りフロントエンドと比べてマイナスな部分も存在します。
- エラーが起きるとサービスが停止したり、クラッシュしたりと致命的なケースが多い
- サービスが停止するため、エンドユーザーへの影響度が大きい
- SLA(サービス水準合意)にも関わり責任領域が大きい
バックエンドエンジニアのおすすめの学習ロードマップ#
上記を踏まえておすすめする言語は同じくJavascript + Node.js + フレームワークの組み合わせです。
この技術スタックはWebサービスやWebサイトを構築する際に実際の現場でもよく使われるパターンです。
かつ、プログラミング初心者であってもとっつきやすく、日本語のドキュメントも豊富のためおすすめです。
データベース操作を行うSQLも学習しましょう#
この技術スタックに加えSQL(データを扱うプログラミング言語)も組み込むとより良いと思います。
DBエンジンの選択については、MySQLとPostgresSQLを選びCRUD操作を押さえておけば十分です。
CRUDとはデータの作成・読み込み・更新・削除の頭文字を撮ったもので、データベース操作の基本行動を指します。
エンジニアは誰にでも慣れるが、年齢による限界がある#
これは僕自身が開発現場で数年働いて強く感じたことです。
特に日本では未経験でエンジニアとして雇ってくれる企業が多いです。
そのためエンジニアになることは比較的容易にできます。
問題なのは、エンジニアをいつまで続けるのかという点です。
長くコードを書く仕事を続けることは下記理由からおすすめはできません。
- 肉体的限界がくる
- 若く優秀な人と常に戦い続けなければならない
- 実力主義の世界、年功序列はない
エンジニアの先のキャリアは何がおすすめなのか#
基本これは海外でもそうですが、ずっとコードをかくエンジニアを続ける人は少ないです。
感覚値になりますが、おそらく10%以下だと思います。
エンジニアの後にどのようなキャリアがあるのかというと、実は選択肢は結構広いです。
- 技術も分かる営業
- IT・システムコンサルタント
- 技術支援・テクノロジスト
- データサイエンティスト
- 起業家
- スクール事業
さいごに#
ここまでお読みいただきありがとうございました。
私のブログ記事を読んでいる方の中には海外転職・海外移住への興味がある方もいらっしゃるかと思います。
私自身ダナンで働き始めて7年目になりますが、海外就職を実現するために大事なのは英語力と開発現場で働いた経験だと感じました。
もし今後海外移住・海外就職を本気で実現させたい方はぜひこれらのサービスを活用してみてください。
レアジョブ - 実務で使える英語力を身につけよう#
レアジョブ英会話は英会話力の向上に特化したサービスです。 私の友人もレアジョブを通じて0から学習を続け、現在はベトナム人のエンジニアとも英語でコミュニケーションが取れるレベルまで英会話力を伸ばすことができました。
レアジョブが選ばれる理由は多岐にわたりますが、主な理由としては下記3点が考えられます。
- 優秀な講師陣:公用語が英語であるフィリピン人の方が講師となり、生きた英語を身につけることができる
- 豊富な教材: 5,000以上の教材を提供しており、学習者のレベルや目的に応じて最適な教材を選べます。
- 安心のサポート体制:初心者でも安心して始められるように、日本人カウンセラーが学習のサポートをしてくれます。
海外移住計画の第一歩として、スピーキング力を身につけたいと考えている方は、ぜひこちらの無料体験を試してみてはいかがでしょうか。