Cogito Ergo Sum.

我思う故に我あり

デバッガー組合の構想

 他人のプログラムのデバッグが一番楽しい(無責任に知的好奇心の追求を楽しめるから。つまり遊びだから)。
 自分のプログラムのデバッグは苦しい(責任があるから)。
 他人のプログラムのデバッグだけやってりゃ楽しいのに(遊んでるだけだから)。

 本当にそうすればいいんじゃないのか? それを実現するのがデバッガー組合。

 デバッガー組合の構想は、
 他人のプログラムのデバッグを楽しめる人が集まる。
 自分のプログラムのデバッグが苦しくなったら、デバッグ待ちリストに載せる。
 そのプログラムのデバッグを楽しめる人がそれをデバッグする。
 それだけ。

 これは「助け合いのシステム」とは少し違う。つまり「皆で困っている人を助けるシステム」「困っている人を助けるかわりに、自分が困ったときに助けてもらえるシステム」ではない。

 ポイントは、他人のプログラムの(責任を負わない)デバッグは楽しい、という点にある。責任を負うべき自分のプログラムをほっぽりだして、他人のデバッグに首を突っ込む人を僕はたくさん知っている(もちろん皆文系Sundayプログラマ。仕事じゃこうはいかないだろう)。自分のプログラムのデバッグより他人のプログラムのデバッグの方を自ら進んでとるわけなのだから、互いのプログラムをデバッグし合うのは双方にとって利益になる。デバッガー組合は、自分のプログラムをほっぽりだして他人のプログラムのデバッグに首を突っ込みたい人同士を出会わせるシステム。

 つまり、世の中には趣味としてプログラミングを楽しんでいる人がおり、他人のプログラムのデバッグをわざわざ進んで行う人がいる、という点を利用するのだ。そういう人に集まってもらって、やっかいな問題を彼らに片付けてもらうのだ。大切なのはデバッガーは無責任であること。彼らはやりたいデバッグだけを行う。デバッガーはコストを払って困っている人を助けるのではなく、遊びとして本人が楽しめる範囲でデバッグを行うのである。つまり、ここでのデバッグはコストを払って他人に利益を与える行為ではなく、自己利益追求行動なわけ。それが困っている人にとっても助けになるという話。

 もちろん、誰かのプログラムのデバッグを行ったのに、自分のプログラムが誰にもデバッグしてもらえない、という事態が発生しうる(そのデバッグがあまりに困難であるとか、あまりにつまらないという場合)。あるいは、自分のプログラムのデバッグばかりしてもらって、他人のプログラムのデバッグを一切しないというフリーライダーも当然現れる。しかし、デバッガー組合の趣旨を考えるとこれも当然許されるべきである。デバッガー組合は、助け合いのシステムではなく、単にデバッギングを遊びとして楽しめる人のためにデバッグすべきプログラムを提供するシステムなのだ。デバッグしてもらった人はデバッグしなければならないというルールを導入すると、他人のプログラムのデバッグが無責任な遊びではなくなり仕事になってしまう。「他人のために骨を折った人は報われる」的なルール(これそのものは社会を構成するための重要なルールではある)を導入することは、デバッガー組合構想のキモである「無責任な遊びだからこそ強制されなくても自発的に行う」という点を破壊してしまう。

 より深刻な問題を1つ思いついた。悪意あるデバッガーの存在だ。デバッグを装って悪意ある機能を仕込むようなデバッガーを排除する必要がある。この問題は、デバッグされたプログラムをテストするテスター組合を作ることによって解決されるだろうか。ダメだろう。悪意あるデバッガーが悪意あるテスターと共謀する可能性がある。テスターを評価するテスターテスター組合を組織する? これじゃ無限ループだ。

 悪意あるデバッガー排除の方法についてはまた後日。後日っていうか良い方法を思いついたら。