多くの開発者は日々、自分のプログラミング能力をどのように改善していけば良いのかに頭を悩ませているかもしれません。勉強会に参加したり、オープンソースプロジェクトに参加したり、競技会に参加したりといった、刺激を受けるための方法は多数ありますが、自分が何を行っているのか、記録をしっかりと取ることも一つの方法といえるかもしれません。
Monzoのバックエンド開発者James Routley氏は、エンジニアが使用する「ログブック」を使用して、プログラミング能力を改善する方法を提唱しています。
ログブックは以下のような手順で、技術上の問題を改善していきます。
- 解決しようとしている問題を考える
- 問題を解くためのの方法を記述する
- 方法を実行したプロセスを記述する
- 起こったことを記録し、どのような改善策があるか考える
プログラミング作業にログブックの手法を適用することで、難しい問題を解決するために行った一連の手順を記録しフレームワークとして再利用できることや、現在実行中の作業に集中しやすくなること、他の作業を行ったあと、元の作業に戻りやすくなることなどのメリットがある説明しています。
実際のエンジニアリングログブックは、特許紛争などの法的証拠として使用できる、紙とインクで記録されるものですが、ソフトウェア開発者が行う場合は、テキストファイルに情報を保存していく方法がよいとのこと。
例えば以下のようなシェル関数を作成しておき、~/logbookディレクトリ以下にMarkdown形式で情報を蓄えていきます。
function lb() { vim ~/logbook/$(date '+%Y-%m-%d').md }
この記事を受けRedditでは、具体的なログブックの記述方法のほか、Emacsのorg-modeを使う方法、 TiddlyWikiを使用する方法など、記録方法に関する議論が交わされています。また実際に20年間ノートにログを記録してきたというユーザーのコメントも書き込まれています。
今回提唱された方法をそのまま使うかどうかはともかく、作業の記録をしっかりとっていく事は開発者にとって重要なことかもしれません。