🧹

【リファクタリング】部屋が汚いかどうかは人それぞれ、衛生観念が低い開発者と折り合いをつける考え方

に公開

はじめに

対象

  • チーム開発におけるリファクタリングへの価値観の相違に悩んでいる方向け。

衛生観念の高い開発者が自分を妥協・納得させるための記事であり、スマートな解決策は出てきません。「なんか思ってたのと違うな」と思ったら、そっ閉じしてください。

前提統一

リファクタリング

リファクタリングとは、

プログラムの動作や振る舞いを変えることなく、内部の設計や構造を見直し、コードを書き換えたり書き直したりすること。
リファクタリングとは?意味を分かりやすく解説 - IT用語辞典 e-Words

https://e-words.jp/w/リファクタリング.html

を指します。

一部の現場ではリファクタリングに何でもかんでも詰め込んでいて、いわゆる保守作業や振る舞いを変える修正についてもリファクタリングと呼称していました。おかしな話ですが、改めて定義を確認しておきます。

価値観のズレは直すものではない

この記事を読むということは、少なくともリファクタリングをするか・しないか、あるいはその方針において議論が錯綜したことのある方なのではないかと思います。

事あるごとに言っているので、どこかで聞いたことがある方もいるかもしれませんが。何十年と別々に生きてきて、生まれも育ちもバラバラの人間がたまたま同じ会社の同じ部署に、数年あるいは数ヶ月前から居合わせているだけです。

観念といっても色々あります。固定観念、経済観念、脅迫観念、そして衛生観念。これらの観念は長年の生活の中で培われたものです。多くの場合、観念が根底にあって価値観が形成されます。

あなたはその人物のアイドルでも家族でもない。話を聞いてもらえるだけの信用も徳も積み上げていない。そんな関係性の赤の他人がいきなり「コードが汚すぎるから直せ」というのは、「箸の持ち方が汚いから直せ」というようなものです。ハラスメント認定されてもおかしくありません。

直そうとしてはいけないし、直せるものでもないです。変えるのは自分の行動だけにしましょう。

綺麗と汚いの境界線はどこか

リファクタリングは時に掃除に例えられることがあります。

部屋の掃除で考えてみましょう。キッチンシンクに洗顔料、洗面所に調味料、冷蔵庫に歯磨き粉という暮らしの方がいるとかいないとか。リビングの床には洗濯前の服が脱ぎ捨てられていて、あちこちにスナック菓子やペットボトルのゴミが散乱しているとかないとか。

この状況を普通と思うか、汚いと思うか。

確かに綺麗ではないかもしれませんが、住人からすれば実生活に問題はなく、直ちに影響はありません。リファクタリングが必要だと"思われている"コードは、この状況に近いです。

同じレベルの衛生観念の持ち主がルームシェアをすれば、あるいはリファクタリングの要らないコードかもしれません。調味料が行方不明になったり、床が見えなかったりするかもしれませんが、きっと互いに受け入れている不利益でしょう。

問題はここに衛生観念が著しく離れた同居人が増える場合です。

会社が人を採用するときに、いちいち衛生観念なんて擦り合わせません。超綺麗好きと汚部屋耐性のある人を一緒のプロジェクトに放り込むと悲惨です。話が噛み合う訳がありません。だからまずはこのズレを認識して、互いに譲れる境界まで歩み寄る必要があります。

ただし歩み寄ることは負担であり、歩み寄る量が多ければ多いほど困難です。先述の通り、スタート地点となる衛生観念は、余程のことがない限り不変です。いざ境界を決める段になれば、メンバー間の力関係や多数のメンバーの同意するところとなるでしょう。

だからこの例の場合、綺麗好きが間違って参画した後に取る行動は決まっています。勝手に掃除をして怒られるとか、同居人が掃除しないことを叱責するとか、愛想を尽かして出ていくとか。

目が肥えている自覚を持つ

一度上がった生活レベルは容易には下げられないと聞きます。この記事を自力で見つけて読んでおられる方は、目が肥えている方の開発者です。汚いものは見るに耐えない、一刻も早くリファクタリングがしたくて堪らない、そんな開発者の方ではないでしょうか。

書いている私自身も例外ではありませんが、『リーダブルコード』や『プリンシプル オブ プログラミング』を読んでいるのに、糞コードを書かされ続ける拷問にどれだけ耐えられるでしょうか。悲しいかな、勤勉な方ほど技術書を読んで勉強しているため、目は肥えています。

https://www.oreilly.co.jp/books/9784873115658/

https://www.shuwasystem.co.jp/book/9784798046143.html

他人の家に一時的に上がる程度であれば我慢できるかもしれません。しかし「自分が住む場所=当事者として働き続ける場所」とは認識できなくなる可能性が高いのです。無意識的にも次第に、プロダクトに愛着が持てなくなっていきます。

少なくともそういう傾向があると頭に入れておくだけで、同じ状況に陥ったとしても客観的に把握ができるようになるでしょう。ショックの度合いも幾分か違います。

自分でいうところの綺麗かどうかは別にして、どこだって住めないことはないのです。今までそれでプロジェクトが回っていて、大きな実害が出ていないのであれば。

おわりに

今回は「価値観の違い」だけで片付けがちな問題を、もう少し深堀りして説明してみました。

現実的には業務のコードが汚い場合、他の問題を合わせて抱えていることが多いです。例えば、

  • プロジェクトが黒字化できていない。
  • 何らかの理由でリファクタリングが禁止されている。

といったところでしょうか。この辺りの話も追々していけるといいなと考えています。

Discussion