Engineer

【未経験】エンジニアを目指すなら一つのプログラミング言語だけでやっていくのは無理な話

どうも、こんこんです(*´Д`)

現在Web系エンジニアとして働いていて主にバックエンド側を担当しています。

結論から話しますと実務でエンジニアは複数の言語を扱うのが当たり前になります。

なぜなら言語には得て不得手があり、制作する会社や案件によっても使用するプログラミング言語が変わります。

それなのに言語が1つしか使えないというのはエンジニアとしては致命的です。

これからの時代どんどんフリーランスの流れが来ていて、フリーランスを目指すべくエンジニアが沢山生まれてきます。

自分もその一人です。

その中で1つしか言語を扱えないのは厳しくなってくるはずです。

複数のプログラミング言語を扱えるようになるには

複数のプログラミング言語を扱えるようになるには2つから3つほどのプログラミング言語を触ってみることです。

これは、おそらく未経験者からすると「は?」ってなったことだと思います。

しかし、経験者がこれを読むと「そうだよね」ってなったでしょう。

プログラミング言語は根幹の部分の思考は似ている

本当のプログラミング初学者はそれぞれがまったく別の言語という意識があると思います。

ですが、プログラミング学習は複数の言語を、ある程度の学習するとわかることは共通することが多々出てくるということなんです。

書き方は違うが動きが似ている

結局は動きは似ているんです。

データの移動とか変換型とか繰り返しとか根幹部分の考え方っていうのは変わりません。

言語それぞれの違いって何?

言語の仕様が違います。

言語の仕様とは例えばPHPではこの書き方(移動)ができるけどPythonではこの書き方(移動)ができないなどの違いです。

仕組みといってもいいかもしれません。

言語の仕様の理解がプログラミング学習の速度を加速させるし、出来るようになることも多くなります。

プログラミング学習をするときに意識すること

完全なプログラミング初学者なら1つの言語の仕様をある程度、理解することをお勧めします。

あとはアルゴリズムの理解です。

そうすることで、2つ目の言語の学習に移ったときに共通部分がなんとなくわかります。

共通する言語って何があるの?

これは賛否あると思うので言及はしがたいですが、自分的には同じレイヤー(階層)の言語を横並びに学習すると感覚がつかめると思いました。

つまり自分の場合ならバックエンド側を処理する言語を2つから3つ学習するということです。

自分がプログラミングの共通概念を理解するためにしたこと

自分はWeb系のエンジニアを目指していてバックエンド側をやりたかったので、とりあえず3つの言語に触ってみました。

順番でいえば

Ruby

Python

PHP

の流れで触っていきました。

この言語は主にサーバー側の言語なので書き方が似ている部分があるんです。

得て不得手などもあります。

これらを触ってきて気づくのが若干書き方が違うし、こっちではAルートでいけるけど別のほうではショートカットかけるななどがあるんです。

個人的に、一番苦労するのは言語仕様の理解です。

なぜ複数のプログラミング言語を扱えるようになる必要があるのか

1つの言語に縛られると、もし自分の勤めている会社から不利益なことをいわれたときに抜け出すのが難しくなるからという理由もあります。

プロって言葉はいい言葉ですし否定はしませんが、1つだけのプロっていうのはリスクもあります。

そして企業はコストをかけたくないのでイノベーティブな企業以外は既存の言語で開発することも多々あります。

できれば不利益なことを突きつけられた場合、それを撥ね退け別の企業に移ったとして大丈夫なように複数の言語を扱えるようになっておいたほうがリスクは少なくなります。

1つの企業で働くことが難しくなった現在では1つの言語のプロというのは一握りくらいなのかもしれません。