Melting Pot of Thoughts

SaaSスタートアップのCTOです。思考の整理のため考えたことをメモとしてアウトプットしていくブログです。

プログラミングは体で覚えるもの

『プログラミングは体で覚えるもの』

めちゃくちゃ脳筋なタイトルですが、私は昔からずっとこう感じており、プログラミング経験が浅い人にはこのアドバイスをしています。ただ他の人が言ってるのを聞いたことなかったので、記事にしてみました。

 

プログラミング経験がない人のプログラマのイメージは、個人的な想像ですが
『ロジカルなパズルのようなものを解いていく頭脳労働をしており、優秀なプログラマーはパズルをきれいに解くアイデアを閃くことができてものすごい速度でコーディングする』
といったイメージではないでしょうか?
現役プログラマの方もプログラマについて似たようなイメージを持っているしれません。

私個人はそのようなイメージを持っており、プログラミングはクリエイティブな仕事だと思っています。
ただそれでもプログラミングはスポーツなどと同じく体で覚えるものだと思っており、たとえどれだけ頭が良くても、机上で考え抜くより手を動かしてモノを作らない限り上達しないと考えています

 

 

なぜそう考えるのかというと、『どれだけクリエイティブで画期的なプログラミングであったとしても、他でみない全く新しい部分はかなり限られている』という背景があります。
『巨人の肩に乗る』という表現がありますが、プログラミングに慣れてくると目新しいロジックは少なくなってきて大体似たようなロジックに出くわすことが多いです。
たとえばWebフロントエンドを例にとると、表示/非表示制御やリストデータ構造の表示など、基本的には似たようなロジックを書くことが多くなります。基本となるデータ構造もList, Map, Setなどをベースとして利用し、それらを操作して新たな値を得るようなケースは大体似たようなロジックが多いです。
また違う領域(例えばWebフロントエンド・Webバックエンド)同士でも似たようなロジックをよく見かけますし、何ならプログラミング言語が違っても似たようなものだったりします。

 

これは個別の小さなロジックだけでなく、大きな機能についても同じことが言えます。
大きな機能も結局細かなロジックが組み合わさってできています。
その細かなロジック自体は似たものですし、また細かなロジックをどう組み合わせるかについても似た構造がパターンとしてよく表れます。


ひとつひとつのロジックに初めて出くわしたときゼロベースで正解を考えるとかなりの時間がかかるのですが、いっそ正解を調べて(or 聞いて)それを書き写してしまったほうが、結果的に上達が速かったりします。
つまり、とにかくたくさんコードを書いて体で覚える、というのが上達の秘訣になります。
プログラミングを初めて覚えるときには
写経(=サンプルコードそのまま見ながら書き写す)が有効だという人もいますが、それもまさに体で覚える一例です。
最終的に『その問題に出会った時、ほぼ頭を働かせなくても体が覚えているので勝手に指が動く』というのが理想の状態だと思います。

 

スポーツの基礎練習みたいもので、そうやって体で覚えて基礎的なパターンを体に染み込ませておくと難問に遭遇したときも『初めて見たロジックは特定箇所だけであり、他の部分はどこかで見たことがある』状態になります。
どこかで見たロジック部分は頭をあまり働かせない状態で高速でコーディングすることで、じっくり考える必要がある部分が狭い特定箇所だけになり、問題がぐっと簡単に解けるようになります。

 

いちプログラマとしてプログラミングがクリエイティブな仕事であることに誇りを持っている方は多いと思っていますが(私もそのうちの一人です)、プログラミングは腕組みして思考していれば勝手に閃くようなものというよりは、スポーツのように泥臭く体を動かして覚えていくものだと思っています。スポーツ同様、センスある閃きプレイは日々の基礎の積み重ねがあってこそ生まれるものだと思っています。

 

もちろんスポーツと同じで、がむしゃらに体を(指を)動かしているだけではいずれは上達しなくなります。
そのとき初めてスポーツの場合同じく、自分の今までのプレイ内容(コーディング内容)について振り返ってみて改善すべき点がないか、何を新しく練習(勉強)すれば上達するのかについて考えることになります。

"守破離"という言葉があるのですがまさにそれに近いイメージです。
武道などで使われる言葉ですが、『守:最初は型を忠実に守って体に染み込ませ』、『破:型を改善する』、『離:自分なりの型を編みだす』という意味の言葉になります。
なお余談ですがこの概念はプログラミングやスポーツに限らず、ほぼどんな職種の仕事においても多かれ少なかれ当てはまると思っています。

 

 

年齢を重ねると自分の手を動かすのが億劫になってくるので、自戒も込めつつ書いてみました。