プログラミング

プログラミング初心者は何を学ぶべき?デジタルノマド視点で考える

プログラミング初心者は何を学ぶべき?デジタルノマド視点で考える

プログラミング言語と聞いて何を思い浮かべるでしょうか。

Java, Python, JavaScript, C#などなど、世の中にはこれほどまでもか!と思えるほどプログラミング言語に溢れています。
もちろん一長一短な特長を持っていますが、「それだったらこの言語でもできるよ」というパターンも増えてきました。

数多く増え続けたプログラミング言語を「海外で仕事を得るときにも有効!」「時間・場所にとらわれずに働くのに便利!」という視点で今後何を学んでいくべきかを推考していきます。

プログラミング需要とトレンド

昨今、やたら日本でも人材不足が声高に叫ばれています。

実際に第一次産業である農業などから第三次産業のIT業界まで、まんべんなく人手不足が続いているようです。
人手不足だから待遇が良いかと思えばそんなこともないので、そのような引く手あまただからといって考えなしに選択してしまうのは危険なことです。

特にIT業界における技術者不足はどこの企業からも毎月のように聞く悩みです。
「誰か転職したい人いたら紹介してね」と言われますが、多くの場合は転職希望を出す前にヘッドハンティングされて転職先が決まっているパターンが多いのです。

海外有名サイトから見る需要

では実際にどういったプログラミング言語に需要が集まっているか。
海外の有名プログラミングQ&AサイトであるStackOverflowGithubの傾向では以下のようになっているようです。

↓こちらはStackOverflowの2018年の”Professional Developers”が利用している言語の調査の結果です。

 

マークアップ言語やデータベース操作言語であるSQLを除外して考えるとJavaScript, Java, Python, C#, PHPが上位になります。

この傾向は少し前からあまり変わっておらず、ややRubyが下がったなあという印象がありますね。

新しいiOSアプリケーション開発言語であるSwiftやAndroidアプリ開発言語であるKotlinのランクインや、Googleが開発しているGo言語の人気も定着してきたように思えます。

続いてBen Frederickson氏がまとめたGithub Usersのレポートです。

この傾向を見てもやはりWeb系、特にフロントエンドに強いJavaScript機械学習や深層学習に用いられやすいPython業務用アプリケーションでの利用頻度の多いJava、手軽にWebアプリケーションを開発できるPHPあたりの人気度が高いことがわかります。

結局JavaScriptとPython、それからJavaでしょ?

もしもあなたが言語の好き嫌いがなく、本当にまだ初心者だというのであればJavaとPythonはとても良い選択肢だと思います。

Pythonは言語特有のインデントによる制御によって、ソースコードが美しく見えますし、Javaは静的型付け言語として常にメインストリームなので、きっちりとしたプログラミング的常識が身につけられます。

JavaScriptに関しては、個人的な意見として最初に学ぶプログラミング言語としてはオススメできません。

もしもあなたがフロントエンドエンジニアを目指して、クールなアニメーションのあるWebサイトやユーザーに素敵な経験を与えるインタラクティブデザインがしたいのであればJavaScriptを学ばずにはいられないでしょう。

最近ではAngularJS, ReactJS, VueJSなどのフロントエンドフレームワークによって、UXが大きく進化しています。
さらにはNodeJSのようなサーバーサイドでも役立つJavaScriptも人気のあるフレームワークとしての立ち位置を確立しています。

そう考えるとJavaScript一択も一つの選び方ではあります。

実際にこの3つのプログラミング言語ができれば2018年現在では仕事の需要はかなりあります。
加えてPHP、Go言語、Ruby on Rails(あえてRubyとは書きませんが)もできれば鬼に金棒です。

最終的に自分の使い慣れた言語に落ち着く傾向にありますが、それでもやはり需要がある方向を選べば、それだけさまざまなユースケースと出会うことができるので能力向上につながります。

実際にデジタルノマドをしていて感じるコト

実際に私がデジタルノマドとして活動を続けていて、これをやっておいてよかった!と感じるのはPHPです。
ここまで熱を込めてPythonだのJavaだのJavaScriptの話をしておいてなんだよ!と思うかもしれませんが、圧倒的に個人受託レベルの案件で多かったのはPHPでした。

特にWordPressのテーマカスタマイズやEC-CUBEカスタマイズ案件、さらにはCakePHPやCodeIgniterのようなフレームワークに則ったプロジェクトまで、PHP案件は多岐に渡りました。

Pythonのプロジェクトがあったら大喜びでしたが、最近ではPythonのプロジェクトが増えつつあり、私自身の抱えるプロジェクトのほとんどがPythonによるものになりました。
それでもなお、PHP案件はたくさん見かけるのでPHPから入ることも悪くないのかもしれません。

PHPは開発環境の構築も容易ですし、WordPressのテーマ開発のように身近にすぐ使える場所があるので、経験も積みやすいです。

ただあまりどっぷり浸かってしまうとWeb言語以外できない、となりかねないので並行してPythonやJavaScriptの勉強をしても良いと思います。

意外とよく頼まれるサーバー構築

プログラミングだけしていればいい、ということもなく、わりとサーバー構築の段階から依頼されることもあります。

特に最近ではAmazon Web Services(AWS)やGoogle Cloud Platform(GCP)のようなクラウドプラットフォームからVPS構築まで種類が増えてきました。
それらを「ついでによろしくねー」程度に依頼してくるクライアントもいますが、技術的にはまったく別物であることはきちんと伝えましょう。

そして自分でもサーバー構築を一通りやっておかないと、「プログラミング的には合ってるのに動かない……」と涙目になることも起こりえます。

Linuxがどのように動いているかを認識しておくことで、プログラミング能力も格段に上達します。

最初は格安VPSから始めて、少しずつ黒い画面と仲良くなっていくことが大切です。

無理なことは断らないとデスマーチ化する

これはフリーランスやノマドで仕事を始めたてのころに起こりがちな現象なのですが、仕事をすべて受けてしまうと大変なことになります。

納期的に不可能なこと、技術的に不可能な依頼は断る勇気を持ちましょう。
クライアントがスケジュールを守らず(要件定義や契約書締結)に進行しない、ということも少なくありません。

そういった場合に断れるように、「これを逃したら生活できない……」とならないように日頃から気をつけておくべきです。
プログラミング言語をたくさん扱えるよりも、危機管理こそ一番必要な能力かもしれません。

需要に合わせて生き延びるのも一つの技術

ここまでプログラミング言語は何を学ぶべきか、という話題で述べてきました。(途中脱線した感も否めない)
何はともあれ、デジタルノマドにとって生き延びることが課題であって、それを達成するための技術としてのプログラミングであることを忘れてはいけません。

そのためには好き嫌いではなく、需要と供給を見極めて自身が提供できる商品(技術)の種類を増やしていく、という生存戦略が何よりも大事になってきます。

大企業のように「これがあるから大丈夫!」ということは個人単位のノマドには絶対にないので、技術一つひとつ、道具一つひとつを慈しみながら育てていく気持ちで精進していく必要があります。

一生勉強の人生だけど、一生だらだら過ごすよりも楽しいよ!

ABOUT ME
UOT合同会社 / SOT Co.,Ltd 合同開発部
UOT合同会社 / SOT Co.,Ltd 合同開発部
UOT合同会社 / SOT Co.,Ltd開発部の合同公式ブログ。 代表がITエンジニア出身のデジタルノマド→日本とベトナム・ホーチミンでIT企業設立。 海外デジタルノマドやエンジニアのリモートワーク、プログラミング、オフショア開発やミニラボ情報などをまとめていきます。