見出し画像

"クソコード"は人格攻撃ではないのか

これは仮説というか自分がこうだという話なのだが、自分のアイデンティティを侵食されると怒りが湧く。たとえば、自分が非常に大事にしている価値観に対して、同僚から「君のその価値観は間違っている」と言われたり、あるいは、作品とか、経歴とか、家族とか、そういう自分自身と非常に密になっていて同一視されるようなものをけなされたら、腹が立つということだ。

プログラマーにとって、ソースコードというのは一つの作品だ。仮に経験が浅い開発者であっても、あるいは経験が浅いからこそ、1行1行に時間をかけて考えながら作りあげる。それに対してこれはクソコードだと言われたらどうだろうか。考えてみる。

よく、クソコードというのはコードがクソだと言っているのであって、お前がクソだと言ってるわけではないから切り離して考えるべきだという言説がある。僕はこれには微妙に賛同できない。その人が生み出したコードは、少なくともその人のいくぶんかのアイデンティティを形成しているのだ。もっとも、芸術家の作品と違い、ソースコードはたいてい書いた人自身ではなくチーム・組織に帰属するので、コードが悪い理由は書いた人だけが原因ではない。とはいえだ。書いたコードは自分の子供のように愛着があるものではないか。少なくとも僕はそうだ(別にそんなことはないという人、それでも良いコードを書く人はいるだろうけど)。書いたコードは多分だいたいなんとなく覚えているし、重要なコードならなおさらで、それらは自己を形成するピースの一つ一つなのである。

少し話を難しくするのが、プログラマーも経験を積むにつれて手の抜きどころがわかってくるので、つねに100%良いコードだと思って書いているわけではなくなる。むしろ一旦50点でもいいから出すのがスキルであったりする。そういうふうになると、仮にクソコードと言われても傷つかなくなったりする。アイデンティティが書いたコード自体から、別のところ、例えばプロセスに移るわけだ。ある程度クソかもしれない自覚を持ってコードを出している。ただ、そうであっても力を入れて書くコードは存在して、そういうコードに対する受け止め方は変わらない。

だから、人のコードをクソコードって言っておいて、相手が怒ったら、お前のことをクソって言ってるんじゃなくてコードに言ってるんだ、なんていうのは、はっきりいってごまかしの類だと感じる。

じゃあお前はクソコードなんて言葉は使わないのか? っていうと、使う。使うんだが、使うのは以下の2パターンだ。(この2パターン以外で使っていたらそれは僕の至らぬところなので申し訳ない。)

・誰も傷つけないとき。誰のアイデンティティでもないコードに対して。誰もオーナーシップを発揮してないコードとか。あとはあんまり良くないけど、どっかの誰かの知らないOSSのコードなどに対して。(この世界は狭いから、これは避けたほうがいいね)
・そのコードを書いた人に対して、お前の少なくともその一部はクソだっていうことを伝えたいとき。相手を怒らせたり不快にさせてでもそう言うべきだという意志があるとき。

だから、これは僕の意見だが、そのコードを書いた人に聞こえるように「これはクソコードだ」と言うのは、少なくとも「一時期のお前の少なくとも一部分はクソだった」ということだと認識して、それでも言うべきだと判断するなら言って欲しい。

--------------------

朝方この文章を書いていたら、夕方にやたらタイムリーなツイートを見た。

これに対して、以下のツイートに僕は強く同意する。

「教育と訓練で乗り越えるしかない」はその通りだと思う。自分そのものだって批判されるべきなのだ。真剣にやった研究が浅はかなものだったら、つまり浅はかなのは自分自身なのだから。それに向き合うのは確かに痛みしかないが、しかし向き合って自分自身が成長していかねばなるまい。

-------------------------

追記: 

2009年の文。 "自分のアイデンティティをできるだけ小さくするのがベストだ" すごい指摘だ。少なくとも価値を発揮するコアなもの以外には間違いなく当てはまる(多くの人にとって、まさにここであげられている政治や宗教がそうだ)。一方で、プログラマーにとっての生命線であるソースコードに対してもアイデンティティを持たないのは、イコール情熱を失ってしまうことに繋がらないかという懸念がある。両立できる人もいるのだろうとは思うが。

---

注意深く読んでくださって感謝している。僕はクソコードという表現が嫌いなのではない、単にコードと人のアイデンティティは一部つながっているというのを言いたいだけだ。コードの改善提案はその人の一部への改善提案だ。コードをリライトされたらそれはその人の一部がリライトされたのだ。それはいいとか悪いとかじゃなくて、ただそういうことだと思うというのが言いたかった。

---

批判側はそれがどのような種類の批判であっても、本質的には受け手にとって人格攻撃の性質をもつという点を理解し考慮すべきだし、受け手は批判の全てが人格へと向かっている訳ではないことを理解し、意識的に成果物とアイデンティティの距離を置くべきである。

--------------------

追記。
反省文書きました。


noteの通貨流通量を増やしていきたい!!