はじめに
よく講師業であったり、大学のゼミに呼ばれたときに「エンジニアとして力をつけたいのですが、言語の幅を広げようと思ってどの言語学べばいいですか?」といった質問を受けることが数える程度ですがありました。
エンジニアとしてであれば、言語のバラエティはあまり重要ではないかな、と捉えつつも、新たな言語をインプットしたくなる気持ちも理解できますし、暇つぶしに資格を取る感覚で新たな言語を覚えるのもおすすめはしています。
そういった際に前提としてPythonが使えるが次の言語候補としてどのようなものが最適か?を自分なりに検討し、現在進行系でインプットしているので、共有の意味も込めて記事に起こしておこうと思いました。
エンジニア視点と講師視点で紹介してみる
まず、エンジニア視点としてスクリプト言語のPythonから入ったのであればコンパイラ言語のC言語やJavaを1つプログラムのロジックを理解するうえでもインプットするのはいいかなと感じています。
同時に講師としてJavaの研修は需要が高く、講師としての需要も高いです。
なので、Javaを選定するといった選択は無難な選択かなとも捉えています。
逆に講師視点からだとトレンドの高い言語をインプットするのも有益で、前述したJavaのようにすでにマーケットとして存在する言語をインプットする他にもPythonのトレンドに合わせて新規の需要が発生するといった流れから、私は現在Rust言語をインプットしています。
Rustはコンパイラ言語に分類されますし、Pythonからの移行がとても容易である点が魅力の一つです。
また既存のC言語が使われているシステムでRust言語でリプレイスを行っているソフトウェア企業も徐々に増えてきています。
そのような時代背景も垣間見て、Rust言語は将来性並びにプログラミングの知識として幅を広げられるのではないだろうかと考えて、Rustを選定し、インプットしています。
結論としては個人の自由ですし、日本人が開発したRuby言語もとっかかりやすいと言われています。
加えて私自身がそうであったように、書きやすい、読みやすい言語から幅を広げていくのもいいのではないでしょうか?
エンジニアとして幅を広げるなら
エンジニアとして幅を広げるなら、一般的なエンジニアの幅を広げるのもいいですし、デザイン領域などエンジニアが苦手とする領域にあえて飛び込むなども1つ方法としては良いかと思います。
1エンジニアとしてデザイン領域などに入ると、全く違った景色が見えたりするのもなかなか面白いものです。
そして講師としてプログラミングを教える際も退屈極まりないスライドではなく、読みやすい話が入ってきやすいスライドを作ることができるようになるなど、エンジニア領域でも有効なスキルが多数潜んでいると考えています。
ただ、インフラ、ネットワーク、データベース、クラウド、IoT、セキュリティなどエンジニアとして貢献できる領域も多数あるため、まずは挑戦してみて、自分がとっかかりやすいと感じたものから少し深めるのが私なりのやり方です。
嫌なもの、興味がわかないものはなかなかスキルが上がらないといった点に関してはエンジニアとして働いている皆様なら重々承知していると思います。
好きこそものの上手なれではありませんが、好きなものからかじっていくのがとても有効かと感じています。
さいごに
時代の流れとともに若い人たちがプログラムを使って〇〇を開発したなどニュースを見ると「やばいな」「あとn年後には彼らと戦わないといけないのか・・・」といった絶望感が増したり、技術の進歩の速度に気が滅入ることもあると思います。
ただ、いつの時代も自分がプログラミングを始めたときのワクワク感を忘れずに、ソフトウェアを使って楽しむ心を持ち続けることが意外と最前線で戦うために必要なスキルかもしれません。
戦うといった表現も私個人としては適切ではないと感じています。
若い人たちと協業して、彼らの知識を尊重し、どのようにコミュニケーションを取り、自社であったり、社会のために貢献できるかなどを楽しく考えソフトウェアを開発する、嗜む大人の余裕を身につけるのが世代を超えて世の中に必要なモノかもしれませんね。
私自身も楽しみながら、ただときに楽しみを維持するための苦しみも感じながら日々鍛錬を続けていきたいと考えています。