一度、この話題でブログを書いてみたかった。

私は業務でもシステム系プログラマーですが、それとは全く別に、プライベートでも自分のためのウェブサービスを作ったり、たまにそれを公開したりしています。 ただ平日はほぼ朝から夜まで業務に携わっていて、プライベートでのプログラミング時間はかなり限られています。

そんな自分の時間をなるべく有効にプログラミングに充てるため、必然的に思いついたのが「通勤プログラミング」です。通勤時間をうまくプログラミング時間として活用しています。

ただ通勤プログラミングにはいくつか条件があります。まず「座れる」こと。座ってノートPCを取り出して膝の上でキーボードを開いて・・・というスタイルなので、立ったままではちと難しいです(まあ立ったまま「脳内プログラミング」をすることもありますが、こちらはかなり上級編だと思ってます)。いかに座席を確保できるか、というのも非常に大きな要素になります。私自身は電車の始発駅に居住していることもあって、「駅で少し待てば座れる」立場です。座ってしまえば最初の乗換駅まではプログラミングに充てられるため、それなりの時間を確保できます。

次に「通信手段の確保」も必要になることが多いです。駅にいる間は公共 WiFi を使えるケースもあるかもしれませんが、通勤での移動中はそうもいきません。タブレットで開発できるものであればタブレット自体の通信機能が使えるかもしれませんが、Eclipse を使うなどの本格的なプログラミングをするとなると現状はタブレットではなく、まだノートPCが必要になってきます。そしてノートPC単体では通信機能を持っていないケースがほとんどだと思うので、WiFi ルータなどのいわゆる「テザリング」環境を用意する必要があります。 プログラミング自体は通信なしでも可能ですが、サーバーアプリの動作を確認したり、デバッグやログを見る目的でサーバーインスタンスにリモートログインしたり、分からないことをちょっとググって調べたり、という際にネットワーク環境が必要になったり、あると便利だったりするので、この通信手段が確保できるかどうかも効率に影響します。

最近は「限られた短時間内で何をするのか?」を明確にしておくことも大事だと分かってきました。業務ではプログラミングに集中していて気が付くと1~2時間経っていた、なんてことも珍しくないのですが、通勤で座っていられるのは自分の場合はせいぜい30分程度です。この時間内に区切りが付くことをする、その1回のゴールを明確にしておくことも大事です。当たり前のことですが、この30分はプログラミングというか、コーディングのためだけに使いたいので、そのためにも前提となる設計や方針など座っていなくてもできることは可能な限り事前にまとめておき(あるいはプラットフォームで待っている間に脳内で行なっておき)、座ってノートPCを開いたらコーディングに集中する、というスタイルが理想です。

余談ですが、この超短期的なゴール意識は普段の業務にも好影響を与えているように思います。設計の時間と実装の時間を明確に分離することで、コミュニケーションを取る時間と一人で集中する時間のメリハリを付けるようになりました。集中できる時間はどうしても限られてしまうのですが、このスタイルを続けることで逆に集中しない時間をうまく活用できるよう、意識が変わってきていると感じています。

と、まあ簡単ですが、僕の通勤プログラミングはこんな感じ。 プログラミングに限らず、通勤中にノートPCを広げる人はたまに見かけるので同じようなことを考えている人はいるかもしれません。また、なるべく腕を動かさず、キーボード音もならないよう心掛けているつもりですが、それでも迷惑に感じている人がいるかもしれません。申し訳ないです。

本当は通勤プログラミングを快適に行う(笑)ためのアイテムやらコツやらにも触れたいのですが、それはまた別の機会に。こんな通勤プログラミングをしている人が他にいらっしゃるようであれば「PCは何使ってるの?」とか色々お話ししてみたいです。