共同創業者のコードをリファクタリングしたくなる場合、どのように対処すればよいですか?

Christopher Mcclure
Christopher Mcclure
Seasoned entrepreneur with 15 years in tech startups.

やあ、相棒。この問題、本当にリアルだね。技術パートナーの半分以上が経験しているんじゃないかな。君の場合はまだマシな方だよ。少なくともリファクタリングを考えているんだから。中には、いきなり書き直したいと思っている人もいるだろうね(冗談だけど)。

この件は、やり方に工夫が必要だ。相手はパートナーであって、ただの同僚じゃないから、関係性がもっと重要なんだ。直接「君のコードはひどい」なんて言ったら、確実に相手の感情を損ねる。こっそり自分で直すのも、まるで裏切り行為みたいで、これもダメだ。

いくつかアドバイスがあるから、試してみてほしい。

ステップ1:まず冷静に判断しよう。「気に入らない」のか、それとも「本当にダメ」なのか?

  • 単に「気に入らない」だけ? 例えば、彼のコードスタイル、命名規則、実装ロジックが君とは違うけれど、機能は正常で、パフォーマンスの問題もない場合。もしそうなら、僕は「我慢する」ことを勧める。創業初期は、生き残ることが最も重要で、製品が動いて、迅速にイテレーションできればそれでいい。スタイルの不統一は些細なことで、後で時間ができたらゆっくり統一すればいい。
  • 本当に「ダメ」? 例えば、コードに明らかなロジックの欠陥がある、パフォーマンスのボトルネックが存在する(ユーザーが増えるとフリーズする)、あるいは拡張性が極めて低い(小さな機能を追加するだけで十数個のファイルを修正する必要があり、しかもエラーを起こしやすい)場合。もしそうなら、それは必ず修正しなければならない。さもなければ、会社に爆弾を仕掛けるようなものだ。

ステップ2:もし「本当にダメ」なら、「正当な理由」を見つけて話し合おう。

重要なのは、人ではなく事柄に焦点を当てること。パートナーを非難するのではなく、コード自体が引き起こしている「問題」に焦点を当てるんだ。

  • バグ修正の機会を利用して: 「ねえ、最近オンラインで発生しているXXXの問題、どうやらこのコードが根本原因みたいなんだ。見てよ、もしこの構造を調整すれば、完全に修正できるだけでなく、今後同様の問題を避けることもできると思うんだけど。」
  • 新機能追加の機会を利用して: 「次のバージョンでYYY機能を追加する予定だよね?今のコードを見たんだけど、直接追加するとかなり不格好になるし、新しいバグも生みやすいと思うんだ。だから、少し時間をかけてこの部分をリファクタリングして、将来のために道を整えるのはどうかな?」
  • パフォーマンス最適化の機会を利用して: 「最近、バックエンドのあのAPIが少し遅いと感じるんだ。分析してみたら、ボトルネックは主にここにある。これをXXXパターンに改善すれば、パフォーマンスがかなり向上すると思うんだけど。」

どう?ずっと話しているのは「製品の問題」や「将来の計画」であって、「君のコードに問題がある」とは言っていないだろう?こうすれば、相手も受け入れやすくなる。

ステップ3:事実で語り、小規模で「実力を見せつける」。

口先だけではダメだ。まず、自分のブランチで、小さな重要なコードブロックを自分の考え通りにリファクタリングしてみよう。そして、その結果を持って彼に話を持ちかけるんだ。例えば:

「見てよ、このコードを新しいアプローチで修正してみたんだ。コード行数が30%減って、単体テストのカバレッジが90%に上がったし、実行速度も20%速くなったんだ。今後、この方向で進めていくのはどうかな?」

彼が具体的なメリット(より安定し、より速く、より保守しやすい)を見れば、道理をわきまえたエンジニアなら誰もが断りにくいだろう。

ステップ4:未来を見据え、「チームルール」を確立する。

これは最も重要なステップで、根本から問題を解決できる。時間を取って、穏やかに一緒に話し合ってみよう:

「今後、僕たち二人の協力がもっとスムーズになるように、そして万が一新しい同僚が加わった時にすぐに慣れるように、一緒に『コード規約』を決めないか?例えば、PrettierやBlackのようなコードフォーマッターを統一して使うとか、基本的な命名規則やディレクトリ構造を決めるとか。そうすれば、誰が書いたコードでも一貫性があるように見えて、メンテナンスも楽になるだろう。」

「君のスタイル」と「僕のスタイル」の争いを、「チームのエンジニアリング標準」のレベルに引き上げるんだ。そうすれば、個人的な対立ではなく、会社のためになる。一度標準が決まれば、今後は皆がその標準に従うようになり、誰も文句を言えなくなる。

まとめると:

起業パートナーシップでは、コードよりも人間関係が常に重要だ。この種の問題を処理する核心的な考え方は、人ではなく事柄に焦点を当て、コミュニケーションを最優先し、団結がすべてに勝るということ。たった数行のコードのために、仲間との和を損ねてはいけない。それが最大の損失だからだ。