プログラミング言語の習熟度

レベル5
マスターレベル。拡張ライブラリを記述できるだけでなく、言語の内部仕様、処理系の実装等についても明るい
レベル4
問題なく日常的に利用できるレベル。言語を使うだけでなく、その言語のライブラリを作ったり、フレームワークを作ることもできる
レベル3
リファレンスがなくても任意の処理が記述できるレベル
レベル2
リファレンス本があれば利用できるレベル
レベル1
授業などで触れたことがある程度。日常的に利用できるわけではない
はてなサマーインターン2010

はてブ経由ではてなインターンシップの募集要項を見ながら,まず「レベル3」の壁が高すぎだなぁと言う感想を抱きました.私が自分の中で最も「書ける」と思っているプログラミング言語C++ ですが,C++ でも C++ライブラリ クイックリファレンスBoost C++ Libraries プログラミング などのリファレンスは必須です.また,CLX C++ Libraries と言うライブラリを公開しているのですが,これを自分自身が使う場合でも上記のサイトがないと危険だなぁとよく感じますw

リファレンスの有無(なくても大丈夫かどうか)と言うのは,普段書いているコードの範囲に依存するように感じます.例えば,私も C++ の標準ライブラリの内よく使うものについては,リファレンスを見なくともコンパイルエラーのないようにコードを書く事はできます.しかし,同じ C++ 標準ライブラリでもやはり使用頻度の低いものは存在するので,そう言ったものを使う際にはリファレンスは必須となります.

また,選ぶプログラミング言語によっても状況はだいぶ変わるような気もします.最近は C# を使う機会が増えたのですが,それまでに使っていた C++Ruby に比べて,全体的に名前が長いので(目的のクラスがいくつもの名前空間でネストされている場合が多い,クラス名やメソッド名自体も長くなりがち)リファレンス(正確には IDE の補助か?)の重要性がより一層高いように感じました(何となくで正確には覚えていない).

同じプログラミング言語で似たような処理(ある程度,書くコードの性質が決まっている)を何度も書くような人の場合,そのコードを書く際には徐々にリファレンスを見る機会は減るだろうと予想できますが,それでもやはり「リファレンスはなくても大丈夫」と言えるほどの知識・勇気はなかなか持てないように感じます.また,見ず知らずの人から「リファレンスはなくても大丈夫です」と言われると逆に不安になってしまう(信頼できない)ような気もします.

レベルではなく項目チェック方式か?

プログラミングのレベルを測るのは難しいとよく感じます.「あいつとこいつは明らかにレベルが違う」と主観的に思う事はよくあるのですが,これを言葉で伝わるように説明する事は容易ではありません.また,自分自身に関しても C++ とその他の言語とでは習熟度に差があるとは思っているのですが,具体的にどの程度の差があるのか等は説明できないし,自分でもよく分かっていません.

「レベル」と言うのは非常に分かりやすい指標です(純粋に数が多いほど良い).しかし,上記のような記事を見ていても「あるレベルの項目は満たせないのだけれど,これより上のレベルでも満たせる項目はいくつか存在する」と言う感想を抱くことは多く,やはり「レベル」と言う概念はプログラミング言語の習熟度とは適合しないのだろうと感じます.どちらかと言うと,いくつかの項目を設け,それらのうちいくつ満たせるかで判断する(場合によっては,項目毎に点数を設定して合計点で判断する)方が現実的なのかなと思いました.

誰を知っているか?

Slashdot(米国版)に、この記事に対するスレッドがありました。その中で、以下のような感じの書き込みがありました。

It's easier than you think: 

 1. Find a good programmer and learn his (or her) name. 
 2. Get to know him (or her). 
 3. Take him (or her) out to coffee a few times. 
 4. Engage in as many social activities with this
    good programmer as possible. 

After sufficient interactions like these with a good programmer
 you really should be able to recognize him (or her). 

訳

いや、簡単だよ:

 - 良いプログラマを発見し、名前を知る。
 - 知り合いになる。
 - 何度かコーヒーをおごる。
 - できるだけ課外活動などに一緒に参加する。

良いプログラマと、こうやって濃密に過ごしていけば、
   自然と良いプログラマを見分けられるようになるよ。

確かに、凄い人達のコミュニティに入っていた非プログラマな方々は段々と染まっていくような気もします。。。自分自身がプログラムを書けなくても「匂い」を感じるようにはなれそうですね。

良いプログラマの見分け方:Geekなぺーじ

プログラミング言語を限定した場合,非常に大雑把ですが「誰を知っているか?」と言う問いはその人の(そのプログラミング言語)に対する習熟度を測る上で一つの指標になるような気もしました.ただ,こう言った問いを募集要項に書いた場合,知らなくてもググって調べる事が容易に予想できるので,どの程度使えるかは不明です.