プログラマーとして仕事をしていたり、趣味でプログラミングをやっていると、必ず一度は芽生えてくる他のプログラミング言語への興味。
流行の言語であるという情報や、言語別平均収入についてのニュースを見たときに、気が移ってしまうことは当たり前のことです。
いいエンジニアの条件として、「常に新しい技術を追いかける」というものがあります。そういった意味でも多言語への興味関心は貴方のスキルアップや市場価値向上に大きく繋がります。
とはいえ慣れ親しんだ言語から未知の言語に移るという行為には、腰が重くなってしまう方も多いと思います。
今日はそんな方に向け、2年の経験でJavaエンジニアからRubyエンジニアに転身を果たした僕が、扱うプログラミング言語を変えるときのポイントについて解説して行きます。
まずは学習する際のポイントについて説明していきます。職業として転身を考えた際の面接等のポイントについてはまた改めて投稿していきます。
学習編
最初に、プログラミング言語が変わっても、基本的な仕組みは変わらないということを理解しましょう。
扱う言語を変えるということは、プログラミングに対する心得は少なからずある、ということになります。
この基本的なことは分かっている状態というのを上手く活かして学習を進めていきます。
ここで紹介するフローに則れば、副次的効果として現在扱っている言語への理解も深めることにもなります。
学ぶための下準備
最終的に習得にまでかかる学習時間を短縮するために、まずちょっとした下準備が必要です。いくら時間がかかっても問題ないと考えている人以外は絶対実施してください。
期間とゴールを定める
習得までにかける時間と、習得したと納得できるゴールを決めてください。
あらゆる学習や仕事に共通する話ですが、これがないとダラダラと時間だけを浪費して、結局諦めてしまう事態がかなり高い確率で発生します。
期間とゴールを設定することで学習にメリハリが生まれ、そうすることによって、学習効率も格段にアップします。
ゴールについてですが、その言語を使った本格的なプログラムを作成する、新しい仕事を見つける、など何でも構いません。
実現可能で自分の納得できるものであればOKです。大事なのは本気で目指そうと思えるものであること。
学ぶ対象のプログラミング言語を知る
次に新しく身に付けようとしているプログラミング言語についての下調べを行います。ネットで調べてもいいですし、参考書を斜め読みしてもOKです。
具体的には以下の通り
- そのプログラミング言語で何が実現できるか
- そのプログラミング言語を他の言語と比較したときの特徴
- どんなフレームワークやライブラリが使用されているか
その他にも項目を追加するのはもちろんOKです。学ぶ対象にしっかりと照準を定めるためのプロセスとなります。
この段階で繰り返し/条件分岐/変数宣言などのプログラミング言語の基礎といえる構文についてはザックリ把握しておきましょう。
これまで使ってきたプログラミング言語と紐付け、比較しながら見ていけば更に効率アップです。
基礎学習
下準備が完了したら次は実際に学んでいきます。
何はともあれ環境構築
まずは参考書や学習サイトを全部読んで暗記する、というのは今回のケースにおいては大きな間違いです。
参考書を読むにしても、実際にソースを書いて動かしたりしながら読んだ方が知識の定着率は遥かに高いです。
どんな学習アプローチをとるにしても、まずは絶対必須になる開発環境を構築しましょう。今の時代ネットで調べれば、ほとんどの言語の開発環境構築手順が出てきますので、プログラミングの心得があれば、特に苦戦することなく完了できるはずです。
どうしても分からないことや、原因不明なエラーが出たときは、エンジニアのためのQ&Aサイトであるteratailなどで質問してみれば心優しい先人たちが助けてくれることでしょう。
そしてこの手順やつまずいた部分などはメモに残しておくと、後々活用できる備忘録を作ることができるのでオススメです。
更に開発環境を構築しておけば、万一途中で挫折したときも再開するときの抵抗が非常に低くなります。退屈な作業こそモチベーションの高いうちに手をつけておくべきです。
好き勝手いじってみる
次にやるべきことは作った開発環境で遊んでみることです。
最初にプログラミング言語の概要を把握する段階で見かけた構文を作って、電卓や○×ゲームのような簡単なプログラムを作ってみましょう。
もちろん忘れていたらネットなどで調べてもOKです。
大事なのは学習効率を上げるために好奇心・探究心を掻き立てることです。無理に楽しめというわけではありませんが、これまで触れてきた言語とは異なる文法で機能を実現するというのは刺激のある体験のはずです。
そこまで大掛かりな成果物をここで作り上げる必要はありませんが、抵抗なく基本的な処理を記述できるようになるまで続けましょう。
応用学習
貴方が最初に定めた言語習得のゴールにもよりますが、一番大事なものがここで説明する応用学習です。
実際に役に立ちそうな成果物を作る
これまで身に付けた基礎的な知識を持って、実際に役に立ちそうなモノを作ります。
例えばライブラリを作ってみたり、Webに良く使われる言語であれば、Webサービスを作ってみたりなどです。
「まだ初歩的な知識しか身につけてないよ」という声が聞こえてきそうではありますが、だからこそいいのです。初歩的な知識しかない状態で何かを作ろうとすると、そこには必ず試行錯誤が生まれます。
分からないエラーや上手く動かない部分が出てきたときに、自分で調べ、解決するというのを繰り返すことによって、あなたの頭の中にはその経緯と紐付けられた状態で言語の知識が刷り込まれることになります。
そこで得ることのできる学習効率は、ただ参考書を読んで、ソースを書き写した場合に比べ、圧倒的に優れたものです。
今の時代プログラミングのベストプラクティスやエラー解決策なんてものはネット上にいくらでも転がっています。プログラミングをこれまで使ってきた人であれば、ログの追い方や調べ方は一通り身に付いているはずです。自信を持って成果物の作成を進めましょう。
参考書や技術情報サイトを眺める
成果物を作り終えて、やっと参考書・学習サイトを最も有効に活用する段階になります。
ここまでくると言語に対する理解や特徴がかなり深まってきているはずです。その状態で体系的な情報を見ることによって、大事な箇所・見るべき箇所がはっきりと分かります。
「自分で成果物を作ったときはこの方法でやったけど、そんなやり方があったんだ!」
という発見がいくつも出てくるはずです。そういった刺激がよりその言語に対する理解を進めてくれます。
あとはQiitaや前にも紹介したteratailなどで、学習している言語についての記事や投稿を眺めてみると、最新情報や斬新な手法などの発見によって、好奇心を伴った知識向上を望むことができます。
まとめ:経験者は自信を持って学習を進めよう
ひとつの技術・ひとつの分野しか扱えないエンジニアは近い将来、仕事を見つけるのに苦労する事態に見舞われる可能性が非常に高いです。
今の技術を極めたい、という人でも他の言語を学ぶことによって、より深い理解を得ることができます。
せっかくプログラミング言語に関する基本的な知識を持っているのですから、それを持って他の武器を調達しないというのは非常にもったいないです。
初心者であれば高い学費を払って、スクールやサービスを利用しなければならないところを、無料でかつ短時間で実現することが可能なのですから。
是非自分の長所となったプログラミングの知識を有効活用してもらえればと思います。
閲覧いただき、ありがとうございました。