いかに「レベル1」を増やすかが生産性に直結する
この問題を仕事の難易度レベルにそって、さらに深掘りしてみよう。脳の使い方のアプローチがよりクリアになるはずだ。
レベル1:何もググらずに即座に実装できるもの。
レベル2: 問題をどう解決するかはすぐに思いつくが、具体的な方法は忘れているので、ググる必要があるもの。
レベル3: 自分は解法を知らないが、スパイクソリューション(課題把握のための大まかなプログラム)をしたらできそうなもの。
レベル4:自分だけでは解決が難しい、もしくはものすごく時間がかかるもの。
これまで私は、レベル4をクリアできるようにならねば、という焦りから必死に取り組むのだが、一人でやると丸一日つぶれたり、それでも理解が中途半端だったりすることがよくあった。自分のできなさ加減を思い知らされて、相当つらい気分になるし、仕事としての成果も出ない。
自分の実力を冷静に分析したとき、エバンジェリストやコンサルタント職が長かったおかげで、レベル2の知識は結構ある。例えばリフレクション、動的クラスローディング、コンカレントなプログラミングのコンセプトも「知っている」が、作業には「Google が必要」である。
そこでふと、生産性とはいかに「レベル1」を増やすかではないか――レベル2がそこそこある私の場合、レベル3や4の増加を目指すよりも、レベル2案件をレベル1に向上させたほうが生産性が高いのではという気づきを得た。
自分がしんどいと思う「努力」は一切やめる
コードリーディングが遅い根本的な原因は、コードを見たときにどういう挙動をするか明確にすぐにイメージできないか、もしくは構造の把握が下手だからだ。だが、レベル1のものが増えると脳の負担は激減する。
例えばプログラマなら、プログラミングを学んだら最初に出てくるものの一つFor ループ(プログラムを繰り返し実行する構文)の挙動は、誰でも自信を持てているだろう。このループを見て一瞬で把握できるような理解を、他のコーディングにも広げていけばよい。すると、もっと重要で細かい部分に目が配れるようになる。
構造の把握は、パターンやイディオムや、その言語のライブラリの癖に慣れてくると理解のスピードが上がるだろう。重要なことは、自分がしんどいと思う「努力」は一切やめてしまうこと。自分が「楽しくなくて、苦しい」と思うときは、「無理」があるサインだ。自分のレベルに合ってないことをやっても上達しない。