![見出し画像](https://assets.st-note.com/production/uploads/images/13632701/rectangle_large_type_2_a194995c1e257c9ab99cbbd2d5c377f0.jpeg?width=800)
"クソコード"は人格攻撃ではないのか
これは仮説というか自分がこうだという話なのだが、自分のアイデンティティを侵食されると怒りが湧く。たとえば、自分が非常に大事にしている価値観に対して、同僚から「君のその価値観は間違っている」と言われたり、あるいは、作品とか、経歴とか、家族とか、そういう自分自身と非常に密になっていて同一視されるようなものをけなされたら、腹が立つということだ。
プログラマーにとって、ソースコードというのは一つの作品だ。仮に経験が浅い開発者であっても、あるいは経験が浅いからこそ、1行1行に時間をかけて考えながら作りあげる。それに対してこれはクソコードだと言われたらどうだろうか。考えてみる。
よく、クソコードというのはコードがクソだと言っているのであって、お前がクソだと言ってるわけではないから切り離して考えるべきだという言説がある。僕はこれには微妙に賛同できない。その人が生み出したコードは、少なくともその人のいくぶんかのアイデンティティを形成しているのだ。もっとも、芸術家の作品と違い、ソースコードはたいてい書いた人自身ではなくチーム・組織に帰属するので、コードが悪い理由は書いた人だけが原因ではない。とはいえだ。書いたコードは自分の子供のように愛着があるものではないか。少なくとも僕はそうだ(別にそんなことはないという人、それでも良いコードを書く人はいるだろうけど)。書いたコードは多分だいたいなんとなく覚えているし、重要なコードならなおさらで、それらは自己を形成するピースの一つ一つなのである。
少し話を難しくするのが、プログラマーも経験を積むにつれて手の抜きどころがわかってくるので、つねに100%良いコードだと思って書いているわけではなくなる。むしろ一旦50点でもいいから出すのがスキルであったりする。そういうふうになると、仮にクソコードと言われても傷つかなくなったりする。アイデンティティが書いたコード自体から、別のところ、例えばプロセスに移るわけだ。ある程度クソかもしれない自覚を持ってコードを出している。ただ、そうであっても力を入れて書くコードは存在して、そういうコードに対する受け止め方は変わらない。
だから、人のコードをクソコードって言っておいて、相手が怒ったら、お前のことをクソって言ってるんじゃなくてコードに言ってるんだ、なんていうのは、はっきりいってごまかしの類だと感じる。
じゃあお前はクソコードなんて言葉は使わないのか? っていうと、使う。使うんだが、使うのは以下の2パターンだ。(この2パターン以外で使っていたらそれは僕の至らぬところなので申し訳ない。)
・誰も傷つけないとき。誰のアイデンティティでもないコードに対して。誰もオーナーシップを発揮してないコードとか。あとはあんまり良くないけど、どっかの誰かの知らないOSSのコードなどに対して。(この世界は狭いから、これは避けたほうがいいね)
・そのコードを書いた人に対して、お前の少なくともその一部はクソだっていうことを伝えたいとき。相手を怒らせたり不快にさせてでもそう言うべきだという意志があるとき。
だから、これは僕の意見だが、そのコードを書いた人に聞こえるように「これはクソコードだ」と言うのは、少なくとも「一時期のお前の少なくとも一部分はクソだった」ということだと認識して、それでも言うべきだと判断するなら言って欲しい。
--------------------
朝方この文章を書いていたら、夕方にやたらタイムリーなツイートを見た。
「研究に向いてない性格」を研究職メンバーで話し合ったことがありますが、
— くりぷとバイオ@研究職×投資家 (@cryptobiotech) August 12, 2019
■研究への批判を“自身への批判”に置き換える
は満場一致で同意だった。
「その“研究”の進め方はおかしいのでは?」という指摘に対して「“あなた”はおかしい」と誤翻訳されてしまう人は成長機会を取りこぼしていると思う。
これに対して、以下のツイートに僕は強く同意する。
現象というか人間が生来持っている性質であって、初学者が全力投入して作った物への批判を自分そのものへの批判と感じるのは当然だと思う
— Sho Hashimoto (@shokai) August 14, 2019
これは教育と訓練で乗り越えるしかないし、それを「研究者に向いてない性格」等と雑に分析する研究者って研究者に向いてないのでは
「教育と訓練で乗り越えるしかない」はその通りだと思う。自分そのものだって批判されるべきなのだ。真剣にやった研究が浅はかなものだったら、つまり浅はかなのは自分自身なのだから。それに向き合うのは確かに痛みしかないが、しかし向き合って自分自身が成長していかねばなるまい。
-------------------------
追記:
"人は、自分たちのアイデンティティの一部となる何かについて、決して実りの多い議論をすることができない" "自分のアイデンティティをできるだけ小さくするのがベスト" "ラベルを多くするほど、人は馬鹿になる" / “らいおんの隠れ家 : ポール・グレアム「アイデンティティ…” https://t.co/7DanWsX14b
— Takuto Wada (@t_wada) August 15, 2019
2009年の文。 "自分のアイデンティティをできるだけ小さくするのがベストだ" すごい指摘だ。少なくとも価値を発揮するコアなもの以外には間違いなく当てはまる(多くの人にとって、まさにここであげられている政治や宗教がそうだ)。一方で、プログラマーにとっての生命線であるソースコードに対してもアイデンティティを持たないのは、イコール情熱を失ってしまうことに繋がらないかという懸念がある。両立できる人もいるのだろうとは思うが。
---
「コードとアイデンティティは切り離せない」から導き出せる結論は、「アイデンティティにダメージを与えるのでクソコードという単語を使うべきでない」ではなく「あらゆるコードへの批判はアイデンティティへのダメージとなりうるので常に言い方に気をつけよう」だと思った https://t.co/hhRCzp33oZ
— takasek (@takasek) August 15, 2019
注意深く読んでくださって感謝している。僕はクソコードという表現が嫌いなのではない、単にコードと人のアイデンティティは一部つながっているというのを言いたいだけだ。コードの改善提案はその人の一部への改善提案だ。コードをリライトされたらそれはその人の一部がリライトされたのだ。それはいいとか悪いとかじゃなくて、ただそういうことだと思うというのが言いたかった。
---
これ本当にびっくりした...元の僕の思いつきの文の論点が完全に整理されていて、その後の反応を見て思っていたことがほとんど全部書かれていてさらに深い考察がされている、なんてことだ https://t.co/LLelPqOVtM
— qsona (@qsona) August 16, 2019
批判側はそれがどのような種類の批判であっても、本質的には受け手にとって人格攻撃の性質をもつという点を理解し考慮すべきだし、受け手は批判の全てが人格へと向かっている訳ではないことを理解し、意識的に成果物とアイデンティティの距離を置くべきである。
--------------------
追記。
反省文書きました。
noteの通貨流通量を増やしていきたい!!