読者です 読者をやめる 読者になる 読者になる

間違いの中の正解

設計

お昼、つけっぱなしのテレビから、ふと、タレント木村祐一の一言が聞こえた。

 「間違いかたにも正解があるやろ!」

前後の文脈が分からないんだけれど、その意図するところは多分、こういうことだろう。

「いま、自分がやっていることが何か間違っているらしく、しかし何が正解か分からないし、だからどう間違っているかも分からない、という場合。"どう間違うか" を選択する余地はあるはずなので "どう間違うか" をしっかり考えて選べ」

あぁそうですよねー。すみません、僕できてないです。でも、こういう場面での身の振りが、その人の雰囲気とか礼儀とか人格に直結してゆくんだろうと思う。この気づきを以て、そういう大人の態度のアレコレについてさらに深く考えたりすると、僕も性格イケメンになっていけるのだろうけど、僕が次に考えたのは

 「これってプログラミングについても言えるよなぁ」

ということだった。何でもかんでもプログラミングに繋げるあたり脳味噌沸騰してんじゃないですかね。性格イケメンを目指す取り組みはまた次の機会に譲ります。


 プログラムって曲がりなりにも「これが妥当」というコードが何かしらあるように思う。しかし「これで万事 OK」と思ってコミットしても、時間が経てば "修正する余地がある状態" に変化してしまう。それは例えば機能追加によるシステム全体像の変化だったり、仕様変更の発生だったり、コーディングスタイル・文化の変化が理由だったりする。で、それは皆知ってるので、あらかじめある程度の変更に耐えられるようにソースを書くものである。変更に耐えるためのテクニックとして "マジックナンバー使うな" とか分かりやすいコンセプトがあるんだけどそういうのをかき集める話は Twitter でやるとして、今回書きたかったのは開発に対する姿勢の話。

 「間違いかたにも正解がある」というのは鋭い指摘だと思う。プログラムを「原則として時間と共に正解から不正解になってゆくものだ」と認識する*1と、開発に対する姿勢を変えることができる。今日書いたコードは間違っているのだ。そして明日書くコードもまた間違っている。チームで開発する仕事をしているということは、チーム全員が間違い続けているってことだ。だとすると、こういう風にコード書きましょう、設計しましょう、運営しましょう、保守しましょう、という具体的なコンセプトはいずれも「この方法が正解なのでそうなるように頑張りましょう」ではなく「たくさんある間違いかたの選択肢の中で、この方法はまだマシなほうだよねw」になる。なんだかぐっとハードルが下がる感じがする。


 このハードルの低さは、新人に何かを教えるときに効くんじゃないかな。効くというのは生徒側が比較的気楽に学習できるということではなく、教師側が凝り固まらずに気負いなく話ができるという点で。
 とかく、開発を教えるというのは何かと大変で、現場のプログラマと新人との間には圧倒的な知識差がある。それを埋めるために大量のノウハウやら「これが正しい論」を詰め込もうとしてしまう。しかし生徒側がそのカチコチ感に圧迫されるのは教育というひとつの事業においては失敗だと思うのだ。"たくさんの正解を知っている人が優秀" から "僕らはみんな間違っている" という姿勢に切り替えるだけで、余計なノイズを除去できるなら安いもんである。

 あと、こういう考え方って教師側の本業というか、現場のプログラマの普段の開発姿勢を肯定する。もし昨日まで正解だったことが明日には不正解になるとか言ってたら、開発情報を追いかけるだけで疲れてしまうしキリがない。そうじゃなくって、そもそも普段から間違いまくってるからもっとマシな方法を探してるんだと思えば学習動機として妥当だし、他人のコードでイライラすることも減るんじゃないかね。

 今回も偏見たっぷりの記事を書いたので余は満足じゃ。

*1:「そもそもプログラムに正解は無いのだよ」とか浅い指摘はフォローするのが面倒なのでここではスルーしますね☆杉