最近こんな記事を読んだ。 スポーツにおける「体力」と「スキル」を プログラミングに当てはめてみるとどんなことが言えるかという話である。非常に面白い記事だった。
自分はドラマーなので、ドラムに当てはめて考えてみたい。 ドラムはメロディ楽器ではないので、非常にシンプルである。 ドラムはタイミングとダイナミクスの楽器である。 グルーヴとはタイミングとダイナミクスの絶妙なコントロールの結果である。 そしてそれは飽くなき鍛錬の賜物である。 正確なテンポで狙ったタイミングでダイナミクスをつけてビートを刻む、 これこそドラマーにとっての「体力」である。
では、ドラマーにとっての「スキル」とはなんだろうか。やはりこれは、フレーズのバリエーションだろう。 フィルインやアドリブのフレーズの引き出しは「スキル」と呼ぶにふさわしい。
ドラマーの体力を高めるもの、これは疑いようもなく「基礎練」である。
メトロノームを使って様々なテンポで自分の狙った位置に音を入れる。 どんな難しいフィルインやフレーズも分解していくと「基礎練」ができているかに行き着く。 フレーズが叩けないときは、結局基礎練をすることになる。 それを怠るとリズムがキープできていなかったり、ダイナミクスがなかったりする。 つまり「思ったように」叩けなくなるのだ。後で録音を聞いて悶絶することになる。
これはプログラミングに言えるのでないかと思う。 ライブラリ・フレームワークを使ったアプリ開発というかっこいいフィルインにばかりに集中して、 基礎練を怠っていると、ぱっと見動いているけど、
- めちゃくちゃ効率の悪い
- 脆弱性がある
- 異常系でクラッシュする
などの「思ったような」 アプリにならずに後で悶絶、もしくは徹夜して書き直しをするハメになるのではないだろうか。 恥ずかしながら自分にはそういう経験が何度かある。
ではプログラマにとっての基礎練とは何か。それはコンピュータサイエンスであろう。 アルゴリズム、プログラミング言語、OSなど大学で学んだはずだが、今はうる覚えである。 ていうか昔の自分をひっぱたいてやりたいが、 バンドにかまけてあまり授業に時間を割いていなかったので、そもそもの理解が浅い。 今こうやって仕事でプログラムを書くようになって基礎練の大切さが身にしみているところである。
さて、また話はドラムに戻るが、基礎練は若いうちにやっておくものである。 正確に言えば、若い時にやる習慣を身につけておくものである。 基礎練自体はあまり楽しいものではない。ただ続けると少しずつ楽しくなるものである。 なぜなら、成果は少しずつしかでないし、成果がでないと楽しくならないからである。 大人になると時間はないし、金はあるわでもっとお手軽に楽しめるものが溢れていて、 なかなか継続するのは難しい。
とまあ最近楽をすることを覚えてしまい基礎練をサボりがちな自分へのいいわけっぽくなったが 基礎練は本当に大事である。 プログラミングに対しても危機感はそれなりにもっていて、 去年Courseraでアルゴリズムの授業を受けた。あれは英語の勉強にもなって非常によかった。 本当は続編の講義を受けたいのだが、課題が重すぎるのでなるべく暇なときに受けたいということもありまだ受けれていない。 半年以上経ったし、復習がてら講義ではJavaで実装されていたものをJavaScriptにポーティングするという 試みを始めた。 JavaScriptにしたのは自分が一番得意な言語というのとブラウザ上で視覚化したというのがあった。 今のところ Stackとか Selection Sort とかをやってみたが、なかなかいい感じに視覚化できた。
成果が見えるとモチベーションがあがる。 ドラムの基礎練も視覚化できるとモチベーションがあがるのかな。 メトロームのクリックとどれくらいずれているかとかでスコアづけしてみるとかいいかも。 四の五の言わずに基礎練しろって言われそうですね。