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