私のようなタイプの人は、記憶が厳密でなくても回せる職につくと楽しくやっていけるだろう。事実、私もそれらの職種では“努力”した覚えがない。
しかし、自分がやりたいのは「プログラマ」であって、子供の頃からの執念であり夢だ。だから、自分のネイチャーに反して、「記憶」という大問題に真剣に向き合うことにしたのだ。
理解が浅いと記憶も悪くなる
同僚やマネージャは、はるか前に書いたコードについても、私が聞いたらすぐにレスをくれるし、オンラインの会議でコードやアーキテクチャに関してディスカッションしても効率よくやれる。
なぜ彼らは記憶力がいいのだろう? 私なんて、つい先日自分で書いたPull Request のコードですら、すっと思い出せないことが多いのに。
これを突き詰めて考えたとき、ふと頭に思い浮かんだのは「もしかすると、これも理解の浅さが原因じゃないだろうか?」ということだった。
つまり、私がアドリブではうまく説明できないのも、あまりディテールを覚えていないのも、実は十分に理解できていないからではないだろうか。
自分がコードを書いて、既存のデザインを変更し、各種テストもしっかり通して、新たに動くと確信を持てるコードを書いたのであれば、大抵「理解しているだろう」と思いこんでいる。だが、試しに書いたコードについて口頭で説明しようとしても、曖昧模糊として、全然うまく伝えられない。
「そうか、自分がやったからといって、理解できてるとは限らないんだ」という事実に行き着いた。
人に説明可能な状態にもっていく
そこで、時間は気にせず、自分がやったことをクリアに説明できるよう時間をかけて言語化してみる。すると、いろいろな箇所で「あれ、俺なんでこここうしたんだっけ?」「ここって、他の実装でもいけないかな?」「この部分って、こういうペイロードが来たら破綻するのでは?」と疑問点が湧いてきた。
結果的に、書いたコードを書き換える必要はなかったが、説明のためにコードを見なおして整理して考えると、自動テストを通すことによって、動いているけど「わかっていない」部分をたくさん発見した。
2024.09.07(土)
著者=牛尾 剛