Cogito Ergo Sum.

我思う故に我あり

デバッグは楽しい

 文系Sundayプログラマにとって最も楽しい作業は何か? 他人のプログラムのデバッグである。

 デバッグ作業そのものは、その対象が自分のプログラムであっても楽しい。よくわからないがエラーが起こる。何故起こるのだろうか? エラーが起こる条件を探ってみる。エラー原因について仮説を立てる。そのあたりのことを調べて対策を考える。プログラムを修正し実行してみる。ダメだったらもうちょっと考えてみる。以上を(エラー原因が特定できて対策が功を奏するまで or 飽きるまで)無限に繰り返す。

 ある不可解な現象があって、その現象が発生する原因を特定したり対策を施すために、現象を観察し、仮説を立て、実験的に仮説をテストしてみる、というプロセスはまさに科学そのものであり、面白くないわけがないのだ。このプロセスそのものが楽しい。例え原因の特定や適切な対策に失敗したとしても。つまり、趣味としての、遊びとしてのプログラミングにおいては、プログラムをつくること、バグを直しつつ新たな発見をすることそのものが楽しい。プログラミングを始めたばかり頃の純粋な喜びというのはこういうところにあったのではないか。

 他人のプログラムのデバッグが一番楽しいのは、デバッグから感じる楽しさの根源が知的好奇心の追求にあるにも関わらず、自分のプログラムのデバッグにおいては知的好奇心の追求に没頭しているわけにはいかない事情が付随するからである。自分のプログラミングに関しては、遊びと言えど、いついつまでにこれくらいは仕上げたいという時間的制限もあるし、どこで妥協するかという現実的な落としどころを探る必要もある。自分は自分のプログラムを完成させなきゃならん。

 ところが他人のプログラムに関しては、自分がそれを完成させる責任はない。完全に無責任である。そこで発生するエラーを題材に知的好奇心を満たしたいだけなのだ。楽しいに決まっている。上記無限ループの終了条件の1つが「飽きるまで」というのはそのせい。遊びの終了条件は「飽きる」こと。飽きたらやめることのできるデバッグは遊び。遊びだから楽しい。

 もちろん仕事としてプログラムを書いている人はこんなこと言っていられない。彼らにはプログラムを完成させる責任がある。プロのプログラマにとってのプログラミングの喜びはまた別の次元にあるのだろう。自分自身の発見の喜びというよりは、高品質で汎用性があり使いやすいプログラムを提供する喜びというか・・・。

 文系Sundayプログラマにとってデバッグの本質は知的好奇心の追求である。だから文句なしに楽しい。