Ambivalent Wanderer

脳科学(認知科学)、ロボット、現代美術。興味があること、考えたことについて細々と書いています。

プログラミングのスキルレベルは「ピアノ」で例えると伝わりやすい

こんにちは、Mikenerianです。


最近飲み会でふと思いついた、自分のプログラミングスキルを表す表現についてです。


中途半端にプログラミングを学ぶと、全然プログラミングを知らない人から

「プログラミングできるの?!すごいじゃんっ!」

って反応をされるのではないでしょうか。


いや、でも、自分はあんまり上手くないし…

ここで語っちゃうと情報学部に嫌味を返されるんじゃないかと思い、
うまい切り返しを模索した結果気づいたことが、


ピアノのスキルで例えると、初心者でもわかりやすい!


ということです。




f:id:Mikenerian:20180530062425p:plain:w300



以下主観的に、プログラミングのスキルをレベル分けしたいと思います。

雑なところはご容赦ください。




f:id:Mikenerian:20180530064311p:plain:w400



レベル1―言葉を知っている

ピアノでいうと、ピアノという存在を知っているレベル。


プログラミングという言葉はニュースでもよく話題に登るため、知っている人がほとんどだと思います。

それはピアノという楽器を知っているけれども、そんなに弾けないのと同じ状態だと思います。


全く知らない人でもキーボードを押すことはできますよね?それと同じ感覚です。



レベル2―ちょっと触ったことはある

ピアノでいうと、「猫ふんじゃった」を弾けるレベルくらいかなと。


よくプログラミング教室で最初にやることは、パソコンで環境を構築して、「Hello world!」の出力を得ることです。

これがようやくプログラミングの入り口にやってきたところです。


ここからが果てしなく長い。


ピアノでいうとまさに、「1曲は弾ける」状態から「楽譜を見てどんな曲でも弾けるようになる」までの道のりです。

と言うと何となくその大変さが分かるのではないかと思います。



レベル3―参考書などを見ずに書ける

ピアノでいうと、楽譜を見てどんな曲でも弾けるようになるレベルです。


プログラミングの知識については、「Qiita」や「@IT」などのウェブサイトをよく活用しています。

それらは別にして、ある程度自力で構築できる段階がこのレベルだと思います。


独学でもここまでは到達できるという段階です。



レベル4―コードを見れば大体のことはわかる

ピアノでいうと、楽譜から曲を想像できるレベルです。


プログラミングは「記述する」スキルだけでなく、書かれたコードを「解読する」技術が求められます。

これが意外に難しく、見たことのないコマンドがあるとそのシステム全体に対しての知識が必要になる場合があります。


この作業を自力でやるととても時間がかかり、非効率です。

ピアノでも先生に教えてもらわないと、音感みたいな感覚を養うのは難しいのと同じです。



レベル5―複数のシステムを自力で構築できる

ピアノでいうと、improvisation―即興が弾けるレベルです。


ここでシステムの定義は難しいですが、例えばスマホ用のアプリケーションなどがこれに該当します。

プログラミングの醍醐味は、やはりオリジナルのコンテンツを次々と世に売り出せるところです。


ピアノの場合は誰もが作曲するわけではないので、そこはこの比喩の限界かなと思います。

しかし両者に共通してこれ以上がプロレベル、職業として通用するレベルだと思います。



レベル6―プログラミングは呼吸することと同じ

ピアノでいうとそのまま、ピアノは呼吸することと同じ段階です。


要するにプロレベルです。

プログラミング、ピアノどちらも共通して、
考えたことをそのまま直にアウトプットできるレベルというか、
条件反射的に出力をコントロールできるレベルというか。



レベル7―神

神です。プロです。一流です。


プロのピアニストということであり、一流ハッカーということです。

もちろんハッカーだけがプログラマではありませんが。



番外―プログラミング言語の違いについて

またピアノの例えが素晴らしいのは、取り扱う言語の違いも比喩で表現できる点です。

例えばC言語Javaの違いを、「Jazz」と「クラシック」の弾き方の違いというふうに表現できます。


この例え方、個人的に気に入っていますがどうですかね?




少しでも飲み会のネタになれば幸いです。