新しくプログラミング言語に入門するときの流れ

僕は Javaウェブアプリケーションエンジニアなんだけど、ちょっと前は色んなチームに入ってサポートをしていてそれぞれのチームが使っているプログラミング言語が違ったり、今は新しい場所で違う言語でコードを書こうとしていたりで、この4,5年間は新たにプログラミング言語を勉強する機会に恵まれていて楽しい。

そういう勉強をしながら、ある程度自分の中に新しくプログラミング言語に入門するときの流れみたいなものができてきたなぁと思ったので書いてみる

レベル

と、その前に、自分の Java のレベルを Lv.20 としたら

  • Java (Lv. 20) → 読み書きできる。プロジェクトの土台を作ることができる。Generics は雰囲気で触っている。JVM のことはあまり良くわからない。セミコロンなしでは書けない。

こんな感じなので、レベルを考えてみると、こうかなぁ?適当だよ

  • Lv. 0 → 知らん
  • Lv. 5 → 読める
  • Lv. 10 → とりあえず書ける
  • Lv. 15 → 言語の慣習などを把握して書ける。ライブラリやフレームワークをいい感じに使える。
  • Lv. 20 → プロジェクトの土台を作ることができる。ロギングや例外の処理などの方針を決めることができる
  • Lv. 30以上 → 言語の色んな細かい部分を理解している。言語の開発に参加できる

で、自分の他の言語のレベルはこう

  • Ruby (Lv. 2) 調べながら雰囲気だけ読める
  • PHP (Lv. 5) ある程度読める
  • JavaScript (Lv. 10) とりあえず書ける
  • React (Lv. 10) とりあえず書ける(プログラミング言語ではないけど)
  • Clojure (Lv. 4) 2冊目の本を読んでる途中。とりあえずコードを読めるようにはなってきた

で「新しくプログラミング言語に入門する」のは、読めればいいだけなら Lv. 5 を、書く必要もあるなら Lv. 10 を目指す気持ち

1. Getting Started をやる → Lv. 2

だいたい公式サイトに Getting Started みたいなのがあるからそれをやって雰囲気をつかむ。これで全く知らない状態から、ちょっとは読めるようになるので Lv. 2 くらい

2. 本を読む → Lv. 5

雰囲気が分かったら、その言語に詳しい人に勉強するのにおすすめの本を聞いたりして、とりあえず1冊読む。参考までに、僕はこの辺を読んだ↓

僕は Java の本を聞かれたら

をおすすめするかなぁ。

  1. 最初は、ざっくり最初から最後まで読む
  2. 2回目は、本に書いてあるコードを書き写して REPL とかで実行しながら、メモを取りながら読む
  3. そのメモをもう何度か読みなおして自分用のチートシートにまとめる
  4. もう1冊くらいさらっと流し読みして自分の理解を確認しておく。1冊目には書いてなかったことが書いてあったりする
  5. 最後に、公式サイトの API リファレンスみたいなものを眺めておいて、何か知らないものにであったときに調べられるようにしておく

って感じかな。ある程度読めるようになるのでここまできたら Lv. 5 くらい。細かい難しい部分は、「これは普段使うことはないやろ」ってところは深く理解するよりも、頭の片隅にインデックスしておいて、実際に目にしたときに戻ってこれるようにしておくくらい。ここで「入門できたー!」って気持ちになる。

Ruby は本を読んだんだけど、その後しばらく触れてないので、もうあまり覚えてない。とても良い本だったことは記憶に残っている。

3. 仕事で関わるコードを読む → Lv. 10

読めるようになったら、仕事で実際に関わるコードを読んでいく。使ってるライブラリや、フレームワーク、プロジェクトの構造や、アーキテクチャを書籍や公式ドキュメントなどで学んでいく。

これで、誰かにディレクションしてもらいながらではあるけど仕事のコードは書けるので「書けるようになったー!」って気持ちになる。

4. 色んなコードを読む → Lv. 15

Lv. 10 から Lv. 15 の間は数年かかるかな。実際に仕事でも理解を深めながら、仕事以外の色んなコードを読んだり、フレームワークやライブラリを触ったり、言語のもうちょっと細かい勉強をしたりしながら、その言語やフレームワークの慣習や歴史を把握していったり、どのライブラリやフレームワークを選ぶのが良いかとかを決められるようになっていく。

んで、Lv. 15 から 20 の間も、数年以上かかるかな。

という感じ

なんとなく読める(Lv. 2) → 読める(Lv. 5) →→→ なんとなく書ける(Lv. 10) →→→→→ いい感じに書ける(Lv. 15) →→→→→→→→→→ プロジェクトのコード全体を把握している(Lv. 20)

みたいな印象。おしまい。