いかに脳みその負荷を減らすか
クーパーはさらにこう解説してくれた。
「実装は極力見ないようにして、インターフェイスと構造を理解するようにするんです。ダイヤグラムや、関係性のグラフを書いたりしながら。実装はちゃんとできていると信じて、読んでいるメソッドやクラスのインターフェイスの役割やパラメータをしっかり理解するようにしてるかな」
確かによくよく考えると、コードを読むのは本当に必要な部分(クラスの役割やパターン、インターフェイスの理解)で十分だ。自分は理解するために端から端まで実装を読んでいたが、そうすると脳みそのCPUをフルに消費してしまう。そして、肝心な部分に脳のリソースを使えないため、ひどく疲れる割に頭に入らないことに気づかされた。
読むことを減らして、脳に余裕を生む―早速このクーパーメソッドに従って、コードリーディングしてみた。本来、構造的にややこしいはずだが、余計なコードは極力読まず、使っているインターフェイスだけを理解しようと努めてみる。すると、2時間もたたないうちにこう思った。
「楽勝じゃね?」
「難しすぎる」と感じるのは脳の使い方が間違っている
新規のコードベースや、そのプロジェクトと別のプロジェクトがどう関連しているのかはわからない。でも、それでよかったのだ。全部をゼロから理解するのは難しいから、不明な点は素直に人に聞いた。もちろん一部の実装コードは読んだが、普段と比べて脳の疲れが全くない。読む箇所が少ないのでつらくもなんともなく、正確に読めている。
プログラマにとって、コードリーディングの正確さとスピードは最重要な要素だが、やみくもに頑張るのではなく、いかに「自分の脳の負担を減らすか?」と考えるアプローチが非常に有効だったのだ。
人が「自分にとって難しすぎる」と感じるものには二つのケースがある。一つは、自分の基礎的な学力が足りていないもの。これは地道に積み上げるしかない。例えば私なら証明書の実装を自分で書けと言われたら初歩の勉強から始めないといけないだろう。でも、こんなケースはまずないし、そもそも手を出さなければ良い。
二つめは、自分が無理なやり方をしているケースだ。「自分には何かが足りない、才能が足りないから、こんなに大変」と思い込んでいる場合だ。自分にとって難しすぎると感じるときは、たいてい脳の使い方が間違っているサインだ。
才能の差なのではなく、脳に余裕のない状態で酷使している可能性が高い。