スポーツは1日サボるだけで腕が落ちる
スポーツしてる人だと当たり前かもしれませんが、1日でもさぼると筋力がおちたり観がにぶったりします。
長時間する必要はないですが、短い時間で継続的にするのが、スキルを維持するのに必要だと思います。
翻って、プログラミングも同じで、ブランクの期間があると観が鈍ってしまいます。
コーディングが速い人、遅い人
コーディングが速い人は、経験年数が長かったり、案件が変わっても使える汎用的な設計思考を持っています。たとえば、命名規則、モジュールの分割方法とか。こうした細かいところで悩む時間が少ないです。
また、エディタなどPCの操作も重要です。コーディングが早い人は、VimやEmacsなどのショートカットキーだけで、操作ができるエディタで作業をしていることが多いです。
EclipseなどのIDEを使うにしても、Vimのプラグインをいれたり、IDEのいろんなショートカットを覚えて、
マウスを使わず、手元だけで作業を完結させます。
そして、それらのショートカットは「暗記」しています。それも、自転車を乗りこなすように、自然と指が動くのです。
遅い人は、上記の真逆をしているといっていいでしょう。
コーディングも、1行1行すごく悩むか、後先見ずに安易な設計をして、最後に大きなバグに引っかかるとか、マウスをつかってちまちま作業をしている。とにかく、至るところで時間を掛けています。
設計思考の蓄積、エディタなどの操作の記憶
プログラミングは「論理的な設計 + コーディング」です。
論理的な設計については、なれがあればだいぶショートカットできます。毎日欠かさずして、いろいろその都度考えていくと自分のスタイルが生まれてきます。
顕著なのはおそらく、命名規則とかモジュールの分割でしょう。なれていたら、どんな言語でも案件でも共通した処理があるので、それらの命名やモジュール分割は時間をあまりかけずにできます。
コーディングについては、手の速さが要求されますが、Vimなどのエディタを毎日つかって、ショートカットをつかいこなせば、かなり時間の短縮ができます。
コーディングのステップ数をみればわかりますが、数万や数十万とかは普通にします。そして、その1ステップ1ステップにそれなりに時間がかかっています。仮に、10秒で1ステップ書いても、100,000秒、すなわち、27.8時間です。実際は、もっと時間がかかるでしょう。
つまり、簡単にできることはできるだけ速く済ませるにこしたことはありません。
コピペすれば誰でもできるけど、速度や信頼性が大切
プログラミングは、ネットや本からコードをコピーして貼り付ければ動きます。
でも、実際にものをつくるとなると、それだけでは完成しません。
やはり、ユーザーさんの要求に即したように組み直さないといけないし、あとあとメンテしやすいようにわかりやすく、無駄がないように設計していかないといけません。
コピペだけではできません。そうしたとき、やはり個々の作業ですごく時間がかかります。それを短縮するためには、日々、スポーツのような「練習」、そして、「蓄積」が大切です。
やはり速くコーディングができる人の方が生産性は高く、組織としてもお客さんとしてもそういう人を求めます。もちろん、そうした人のほうがより多くの報酬とやりがいのある仕事につける可能性は広がります。
ただし、毎日すればいいというわけでもなく、どうしたらよりよい設計ができるだろうか、無駄を省けるだろうかという観点が大切です。それをもった上で、日々、蓄積していくことがプログラミングのスキルを上げるには必要だと思います。
好きな人は、休みの日でも強制ではなく、趣味とか当たり前の動作としてしているんだと思います。スポーツ選手も練習が日課であるように、プロのプログラマーもまた、それが日課なのだと思います。