2分間コーディングのすすめ、コードを書く習慣のハードルを下げる
最近私は「2分間コーディング」と呼んでいる取り組みを行っています。文字通り2分間で完了する程度の、非常に簡単なコーディング作業を繰り返すことで、
- 技術書の最初のページの数行のコードだけ写経して走らせる
- ネットで見つけたサンプルコードをコピペして走らせる
など、多くはコピペするだけで終了するくらいの作業量です。しかし、その頻度を今までの何倍にも増やすのがポイントです。実際にはやっているうちに気分が乗って、そのまま5分、15分以上とコーディングが続くことも多いのですが「まずは2分で終わることだけを始める!」と強く意識することで、コーディングの頻度が大きく増えました。
この記事では、私にとって2分間コーディングがどういう効果があったか、なぜ取り組みを始めたかを紹介します。
効果: 新しい技術を覚えやすくなった
2分間コーディングを始めてから、今まで公式ドキュメントや本を読んだだけで終わってしまい、手を動かして試していなかった技術を触る機会が増えました。直近ではGCPのCloud PubSubやCloud Functions、それらとBigQueryを連携しTwitter APIのデータを流す、おもちゃみたいなアプリケーションを少しずつ書いています。
他にも、何年もやろうやろうと思っていたPythonも最近書き始めました。ほとんどコピペを繰り返しているだけですが、それでも1度触ってしまえばその後が学習が速くなるのを感じています。
今まで知っているだけだった技術が、一部触ったことがある技術になったことで、ふたたびプログラミングが楽しくなってきました。
2分間コーディングを始める前は何に困っていたか?
長年私はコードを書くことが遅いのが悩みでした。転職活動のコーディング面接で、コードを書くのが遅すぎて落されたことがあり、その時はたいそう落ち込みました。プログラマなのにプログラミング能力を否定されたような気分になったものです。
また私は幅広い技術分野に興味があるタイプなのですが、新しい技術をコードを書きながら学ぶと、どうしても時間がかかってしまうため、必然的に読書偏重な勉強法に陥っていました。
悪循環には気づいていましたが、どうにもコードを書く腰が重いのは変わりませんでした。しかし、今年になってようやく現実に向き合う覚悟ができてきました。
読むだけで技術をマスターしたソフトウェア技術者がどこにいるんだい?
人間は普段やってないことはできない、なら普段から書ける程度の少量のコードだけ書けばいい
コードを書く頻度をふやそうとして、苦行のように毎日キーボードに向かい続けるのは、長続きしないことはわかっていました。人間「一念発起!」みたいに気合をいれたところで、普段やっていないことはできないものです。
必要なのは気力で頑張るのではなく、普段のコーディングのハードルを下げることでした。2分間しか時間がないとなると、短いコードをコピペして走らせるだけというのが非常に多くなります。冒頭で以下の例を紹介しました。
- 技術書の最初のページの数行のコードだけ写経して走らせる
- ネットで見つけたサンプルコードをコピペして走らせる
しかし写経やコピペする場合でも、複数ページに分割された長大なサンプルを、全部書き写して走らせようとしないでください。一部のコードだけを抜き出したり、思い切って大幅にコードを単純化したり、2分で終わりそうなことだけに集中しましょう。エラーが出たらそこで諦めて、自分の個人GitHubレポジトリにgit pushしてもよいです。私はそうしています。
- 新しいライブラリを、ドキュメントを読み始める前にGetting Startedだけ動かす
というのもよくやっています。だいたいどこかでエラーが出て行き詰まるので、これもそこで放置してgit pushしています。時間をおいて放置したところから再スタートするのですが、1度も試したことがない状態と、少なくともエラーまで起こした状態だと、2回目に取り掛かるハードルが全然違います。
- 以前に自分が書いた2分間コーディングの内容を、もう一度書き直す
- 以前に自分が書いたある程度規模の大きなコードを、何も書き換えず、ただもう一度走らせる
ということも時々やっています。子供の稽古事の反復練習みたいですね。30分や1時間かけて反復練習するのは気が滅入ってしまいますが、2分間なら気が楽です。2分で動かせる部分だけササっと動かすだけでも、思った以上に理解が深まることがあり、反復練習は結構気に入っています。
気分が乗ったら2分以上続けていい
もちろん作業中に気分が乗ってきたら、2分以上続けるとよいでしょう。実際には私の場合、2分で終わってしまう作業よりも、5分以上以上続く作業の割合の方が多いです。ただし、コーディング作業の区切りが長時間のものばかりになってしまうと、しだいにコーディングのハードルが上がってしまいます。割合としては少なくても「気になるコードがあったらいつでも2分で試せるし、実際に試している」という状態を保つことが重要です。
GitHubの緑の草がモチベーションになる
私にとっては下図のGitHubコントリビューション、通称「草」がモチベーションになっています。日記をつけるように、あるいは小学生がドリルを終えたらシールをもらうように、時々ながめては「今日も続いてるなー、フフフ」とニヤけています。同じように緑で埋まったGitHub草をながめるのが好きな人にはとくに、この2分間コーディングの習慣はおすすめです。