割れ窓理論再考

崩壊するアメリカの公教育という本を読む。ゆこっぷ(奥さん)が買っていた。アメリカ公立学校やばいよ、という話。自分は(仮に子が進学するまでこのへんに住んでいることができたら)公立はないな私立だな、と思っていたので特に actionable な要素はなかったが、文中で Zero Tolerance Policy が批判されていたのは興味深かった。

Zero Tolerance Policy はプログラマが大好きな「割れ窓理論」などを論拠とした施策で、すごく雑にいうと「悪いことをしたら一発で退場な」という方針のこと。学校だと、たとえば暴力をふるったら即座に休学/退学になる。これは自分のようないじめられっ子からすると歓迎な方針である一方、ガラの悪い環境で育ったせいで気が短くカッとして人を殴ったりしがちな子供の教育機会を奪ってしまう問題がある。そういう恵まれない環境に生まれた子供こそ教育が必要といわれればまあまあ説得力はあるし、そうでなくてもマイノリティはストレスが高いのでカッとしがち、みたいな面もある。白人メインの地域で黒人やってるとか。

結局のところ Zero Torelance Policy みたいのは弱者を守る体面でシステムを守っている。社会はその不気味さと向き合う必要がある。

振り返ってソフトウェア開発の世界では CI とか presubmit check, それらに組み込まれた各種動的および静的チェックの類が Zero Tolerance Policy を構成しているわけだが、こいつらはそうした批判を免れるのだろうか。

義務であり権利でもある公教育とある程度好きなものを選べる仕事とでは人に何かを強いる際の責任はだいぶ違う。ろくでもないが人権を脅かすほどでもない仕事というのは沢山ある、そしてソフトエア開発、特にでかいやつは、じっさいにシステムをつくる仕事である。なのでプロセスが(弱者ではなく)システムを守ることに特に欺瞞はない。

そうはいってもガチガチの presubmit check  にはしばしばムカつくことがある。このムカつきの理由には、本来 CI はプログラマを守ってくれる善きものだったはずなのになんで俺のジャマをするんだという裏切りへの怒りが含まれているのだろうな。でも(ある規模から先の) Zero Tolerance は(お前ではなく)システムを守っているのだ、そしてお前の給料はそのシステムから支払われているのだ、という風に考えるといちいち不毛な static analysis のチェックにムカつくこともなくなり、システムに感謝しつつ静かな心で SuppressWarnings できるかもしれない。