はじめに
業務後も自己学習したり、難しめのタスクを積極的にチャレンジしてくれる頼もしい新人がいました。しかも、コミュニケーションも積極的なメンバーでいてくれてありがたい存在でした。しかし、口癖で「クソコード」というワードを言いがちで(95%くらいは軽口)、業務上では直接の関わりがあまりない直属の上司から評価が良くありませんでした。おそらく、「クソコード」と言う言葉が遠巻きによく耳に入り、チームの士気を下げているのだと思われたのだと思います1。
現場の評価と上司の評価が一致していなくてもったいないなと思ったのと、当時は有用なアドバイスができず、ここ数年で言語化できつつあるので、お焚き上げも込めて「クソコード」を言いたくなった時の向き合い方のポエムを投稿します。
クソコードと言いすぎることのデメリット
上長の評価が悪くなること以外に、以下のようなデメリットもあると思います。
- 自分以外のメンバーにとってクソコードではなかった時に、自分の印象が悪くなる
- クソコードだと思っているコードを書いた人が同じチームにいた場合に、クソコードと言われた人が傷付くかもしれない
- 本当にクソコードだった時に、クソコードと言っても信じてもらえなくなる
- 意図せず自分がクソコードを書いてしまった時に、ブーメランが返ってくる可能性がある
クソコードと言いたくなったら、言う前に考えるべきこと
対象のコードを「クソコード」と評価する前に、以下の4つの点を考慮してみると良いのかなと考えています。
-
ドメイン知識の理解
- 現場に入りたての場合、ドメインの専門用語や業務ロジックが理解できていないと、コードが意味不明に感じられるかもしれません。そのため、まずはドキュメントを読んでみたり、チームの先輩に質問するなどして、ドメイン知識を補完することをお勧めします。
-
ユーザに価値を提供しているかどうか
- 対象のコードがユーザに価値を提供している場合は、小さな積み重ねでそうなってしまった可能性があります。また、改修したいと思っているが、リソースの制限があり対応できていない場合もあります。その場合、「クソコード」と評価する前に、チームの先輩に歴史的な背景を聞いてみるのもありでしょう。
- 対象のコードがユーザに価値を提供できていない場合は、そのコードを直したとしてもあまりインパクトがないかもしれません。他に優先度の高いタスクがあって修正できなかった場合は、「クソコード」と言った事実だけが残ります。期待した通りに動いているのであれば、一旦は心に留めておくのもありだと思います。
-
公式ドキュメントで推奨されていない書き方かどうか
- 公式ドキュメントで推奨されていない書き方であり、重大な障害を引き起こす可能性のある場合は、チームのリーダーや上長に報告して、判断を仰ぐのが良いでしょう。
-
言い換えができるかどうか
- 「クソコード」という表現は感情的で、他者に傷つける可能性があります。代わりに、公式ドキュメントで推奨されていないコードは「非推奨のコード」と表現したり、複雑なコードは「保守や機能拡張が難しそうなコード」と表現したりすることができます。コードメトリクスと併せて言い換えることで、より客観的な表現にすることができます。
- 「クソコード」というとメンバーは攻撃されたと感じてしまい、反発してしまうかもしれません。適切な言い方や客観的な事実を添えることで、メンバーも協力的になり自分が考えていたより良い改善策が出るかもしれません。
まとめ
クソコードを書いてやろうと思って書いている人はいないと私は信じています。ただ、「クソ」という言葉は、自分が思っている以上にネガティブに強い言葉なので、使うときは考えてから使おうという話でした。強いエンジニアだけでチームが構成されていれば、いわゆるクソコードが産まれない可能性があるかもしれません。しかしながら、現実としては強いエンジニアだけでチームが構成されている方が珍しいと思います。
普段はコードメトリクスが悪くならないようにチームで動いたとしても、急を要する対応で影響範囲を抑えるために仕方なくそうしたままになっていることもあるでしょう。ですが、歴史的な背景を知った上で、本当にクソコードと言うのかどうか、考える必要があります。コードには、当時の状況が反映されていることもあり、単にクソコードと片付けることはできないと思っています。
余談(この記事を書くきっけ)
半藤一利さんの「幕末史」を読んだことです。本を読むと、幕末史で名を残した人は当時の文脈で優秀であることは間違いないと思います。しかし、勢いのある人に目をつけてもらい何かを任せてもらった結果、歴史に名を残したように見えました。環境はある程度自分自身で選べると思いますが、勢いのある人に目をつけてもらうということは運の要素の方が強いように感じました。運を自分でコントロールすることは難しいですが、悪目立ちをして目をつけてもらうチャンスを失わないことなら自分でコントロールできるのかなと思いました。気軽に「クソコード」と言ってしまうことは、悪目立ちだけしてしまうことにつながると思い、この記事を書くきっかけになりました。
-
自分も含めたいろんな話を混ぜて抽象化しています。 ↩