あなたが直接設計やリファクタリングのメリットを感じることは少ない

先週、資料作りながら時間があったので、ホスティング事業部のメンバーのレビューとかに入ってて、2個思ったことがあった。

一つはDB設計においてカラムのあり方や、名前の名付けにおいて、今いるメンバーがわかるような名前ではなく、明日入ってきたメンバーにも分かる名前にすべきだし、カラム名から投げられるクエリがわかるようなカラム名したほうがいいという話をした。

これ結構ある話で、自分たちはわかるから安易なネーミングにしたり、設計したりしがちなんだけど、あなたがいま悩む10分は将来他人の1時間、1不具合、1手戻りを防ぐことになるのだ。

もう一個はちょっとした修正でも、既存の実装がダサければ、ボーイスカウト精神でリファクタリングをすること。

僕はいまだかつて時間に余裕のある仕事をしたことがないし、自分の目の前にある微妙なコードは、いつか治すという守られない決心、それが堆積した歴史であると思っていて、暇ができたときにリファクタリングするみたいなことじゃなくて、リファクタリングは常にするのだと思っている。もちろんあれもこれも直したって氷山の一角みたいなのもあって、単に修正範囲が増えることでリスクだけが増えるみたいなのはあるから、そこはメリット、デメリット、変更範囲を見て決めるのはやる。

この2つ、いずれもあれだなぁと思うのは、悩んだり、リファクタした本人はほとんどメリットを目に見えて得ることがないことのほうが多い。でもあなたが使った時間は他の人に10倍位になって還元されるわけだから、宇宙規模で物事を考えたら良いのだ。