見出し画像

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

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

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

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

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

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

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

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

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

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

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

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

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

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

追記: 

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

---

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

---

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

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

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


この記事が気に入ったら、サポートをしてみませんか?気軽にクリエイターを支援できます。

note.user.nickname || note.user.urlname

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

249
Software Engineer

コメント6件

私も人格否定やろ。って思う派です。
実際私も同期の人間に「クソコードだな」、「コードがクソなのであってお前をクソとは言っていない」と言われて「こいつクソだな」と思った事があります。
それでもコードの良い悪いってあるんですよね。
仕事上、良いコードかどうかより結果を出せるコードかどうかの方が重要な事がほとんどだし、プログラムはどんなに良いコードでも環境と時が変わればクソになっちゃうのが当たり前。
それでもコードの良い悪いは存在する。そんな環境で常に良いコードを産み出そうとする所謂、技術屋とか研究肌の人にとって自分がどんな想いで書いたかに関わらず「クソコードだ」と言われて「そうですねクソですね」って言える人材って貴重なんだと思います。
教育や慣れの問題もあると思いますが
「コードがクソなのであって書いた人がクソかは関係ない」と素直に思える人がこの世には存在するのは事実だと思うし、そういう人が研究者に向いていると言うのは凄く納得が出来ます。
我々がそういうタイプの人間でないというだけで。
要するにクソコードって言う人にも利はあってそういう人達に我々が支えられている面もあるという事です。
良いコメントありがとうございます。批判する側、される側双方に努力すべき余地があるということを感じています。
とはいえ、職場で「ウンコード・マニア」級コードに出くわしたら軽く殺意が芽生えるのも事実。殺意は出ても人格攻撃(口撃)は思いとどまります。
ありがとうございます。
言い方は気を付けないといけないし、感情的になってはいけないけど「そのコードが悪いかどうか」は伝えてあげないといけないですよね。
記事を読んで片寄っちゃいけないなと思ったので聞いて頂けて嬉しいです。
ありがとうございました。
コメントを投稿するには、 ログイン または 会員登録 をする必要があります。