ぷろみん

プログラミング的な内容を扱ってます

クソコードという言葉をなくすために必要なこと

私は汚いコードを見るとその管理者にリファクタリングして良いですか?と聞くのですが、その後コードを書いた人の反応が冷たくなったことがありました。
自身の書いたコードを否定されることはプログラマーにとって耐え難いものでしょう。
この問題の本質はそこにあると私は考えます。
この根本にある屈辱的な感情を解消しない限り、どう言葉を尽くしても軋轢は生まれてしまいます。

まず最初に良いコード、悪いコードを考えましょう。
私は過去にC++のautoやSTLのalgorithm、C#LINQ等で読みにくいからやめろと上司から言われたことがあります。
新しい記法の導入には利点と欠点があります。新しい記法で書かれたコードは本当に良いコードなのでしょうか。

現実的に考えると新しい記法が読めるプログラマは全体の割合で見ると少数派でしょう。
少数派の意見で書かれたコードは本当に悪いコードなのでしょうか。

結局良い、悪いなんてものは相対的なものでしかなく、誰かが誰かに悪意または好意を持っているという意味でしかないのです。
皆が読めるコードも数学的に疎結合に書かれたコードもメリット、デメリットがあるものです。

しかし、そうすると誰かが嫌と思うコードが存在していても指摘しないことが一番穏便な手段になってしまいます。
この場合の一番の問題は異なる文化が同じチーム内に存在していることです。

この問題を解決するために古くからリーダー的存在が求められてきました。現代のこの場合だとCTOでしょうか。
聖書や論語等の有名な思想のルールブックには「リーダー、こういう時どうすれば良いですか」「こうするんだ」といった問答が数多く記載されています。
このルールが一貫した態度であれば、いずれリーダー以外でもルールに適しているか適していないか、リーダーに聞いていない質問等に答えられるようになります。
これが文化であり、感情なしでの良し悪しの判断に至ればCTOの思想が好きか嫌いかという問題にまで持ち込めます。

好きな思想には従えば良いし、嫌いな思想だったら別の思想を探せば良いのです。

リーダー

反対にリーダーに私は強さを求めます。
状況によって判断を変える人と共に進んでいくことはできないからです。

自身の思想を徹底的に褒め、反対する思想を徹底的に否定して欲しいです。

私の尊敬する人にC#の超高速なライブラリ作者がいます。

私は徹底した可読性信者なので意見を違えてしまいました。
私自身が否定されたようでショックを受けました。
しかし、それで良いのだと思います。

技術の多くはトレードオフで共に歩むことはできないのですから。