僕の場合、実現したいことをコードで書けない時には、ひたすら似たコードを読んで理解して写して…を繰り返す。そのうちに手元に大量の自分のサンプルが溜まっていく。その繰り返しがパターンの細分化を促し、書けるコードの幅を広げていく。書けるコードを気持ちよく書き続けてるだけでは新しいコードは書けないからだ。
書き慣れたコードの延長で書いていると、自分でコードを書けている実感があって、何も見ず自分の力でプログラミングできている感があるのだが、ある時これはただ「慣れ」の感覚を高めているように思えた。素早く書けること自体は、それはそれで一種のスキルで素晴らしいのだけど、実現したいことをコードで書けるようになる、という観点で振り返ったときに、どうしても成長を感じなかったのだ。それ以来、まずいと思い、書けないコードを探しては読み写して学ぶようにした。
書けないコードを読んで真似をするという行為を繰り返している状態は、自分でコードを書けている実感がとても弱くなる。だからこそ、その漠然とした不安を払拭するためにそのプロセスを続けるのだけど、ある時振り返ると出来ないことをできるようになっていたという結果とその成長を感じるし、とはいえ不安はまだまだあるし、満たされることもないので取り組み続けられる。でも、満足感と満たされることのない感覚がうまく両立されるのだ。
自信や実感の無さにいかに向き合ってそれをエネルギーに変えるか、その際に周りとの相対比較による無駄な雑念をどれだけ取り除けるか、というのはとても大事で、そのような状態でプログラミングに向き合えたら、自分のために、実現したいことのためにただ書けないコードを書けるようにと学び続けられる。遅くたって構わない。ただひたすらに継続してやっていくだけだ。
業務でもプログラミングでもそうだけど、ある特定の狭い領域にのめり込むと割と簡単に全能感を得られてしまう。その全能感は気持ちよくて癖になってなかなかやめられないのだけど、その全能感故にその狭い領域や今出来ることから抜けられない。いかに簡単にその全能感を捨てられるかがポイントに思う。
周りよりも速く全能感を得られたのなら、次は自分のできないことに取り組みながら、俺が俺がとやってきたことを適切に周りに頼り任せていく。そうすると自分ができないことができるようになる間に、周りのできることが自分も少しずつできなくなっていくし、忘れてもいく。でも実は、そのように生じる役割分担とその連鎖は、実現したいことの限界を突破していくという意味では、集合知として専門性を高める作業にほかならないのだ。
このテーマで何が言いたかったというと、そうやってコードを読んで理解して真似してる時はコードを書けてない実感が強いから、それを避けて出来る方や慣れる方を優先しがちだけど、実はその不安は正しい学びのプロセスであって成長の角度が比較的大きくなるので、その不安と向き合ってしまうと良いと思うのであった。