コードの共同所有 :-<

現在のプロジェクトは開発をすべて海外に発注している。
しかし、やはり仕様の齟齬がおきたり、ソースレベルでも問題が多く発生している。そこで、最近、外部ネットワークにリポジトリサーバをたて、海外パートナとソースの共有をしようとしている。そこで、XPでいう「コードの共同所有」をお願いしたところ、海外とのやり取りを担当しているブリッジSEから反発を食らってしまった。

  • 私:「今後は、誰もがどこのソースでも自由に編集できるようにしようと思う。」
  • ブリッジSE:「それでは、開発効率が下がります。」
  • 私:「でも、すべてパートナに作業をしてもらっているようでは、開発効率も悪いし、時間もかかるよね。一刻も早く、現在の障害を対応しなければいけないんだから、お互い協力したほうが良いのではないかな。」
  • ブリッジSE:「彼らはアーキテクチャを熟知しています。彼らに任せるのがもっともパフォーマンスが良いはずです。」
  • 私:「確かにそうだね。だけど、我々も、障害が修正されるまで手をこまねいて待っているよりは、少しでも障害を修正する協力をしたほうが良いのではないかな。」
  • ブリッジSE:「どこをどう直されたかわからないし、効率も悪い。却って新しいバグを生むことになると思います。」
  • 私:「そうかもしれないけれど、構成管理があるのだから、いつでも戻ることができるよ。それに、我々だってソースの理解を深めていかなければいけないと思っているしね。」
  • ブリッジSE:「彼らは彼らのやり方で担当を決め、きちんと管理している。管理できなくなってしまう。」
  • 私:「だから、障害管理をしているんだよ。今、お願いしている障害はXXXとXXXだよね。でもそれ以外にまだ20件も障害があるんだよ。それらの中で、競合しないものを対応すればよい、といっているんだよ。確かに、自分の作ったソースを他人が修正するのは面白くないかもしれないけれど、最終的にはプロジェクトのためになるはずだよ。」
  • ブリッジSE:「では、あなたは自分の会社のソースコードを海外のパートナが勝手に修正したら、おもしろいと感じるのですか?楽しいですか?」(この辺で少し声が大きくなってきた。)
  • 私:「うん、楽しいよ。障害が修正され、リリースに近づけるのであればね。どんどん修正してくれてかまわないよ。」
  • ブリッジSE:「ソースのライセンスはどうするんですか。それに、間違えるかもしれませんよ。」
  • 私:「それは仕方ないね。ただ、何もしないで、できることをせず、待っているだけ、というのは良くないと思うんだ。」
  • ブリッジSE:「あなた方はアーキテクチャやソースの構造を知らないはず。知らないから、変に修正をすると、動かなくなってしまう。」
  • 私:「検証はじっくりしていくよ。でも、そうやってできることをしないで、待っているだけではプロジェクトは成功しないよ。」
  • ブリッジSE:「そういうやり方は絶対失敗します。」
  • 私:「失敗しても、構成管理があるので、いつでも戻ることができるよ。」
  • ブリッジSE:「今やることは他にあるはずです。」
  • 私:「何?障害を修正することがもっとも重要だと思うけど。」
  • ブリッジSE:「詳細設計書がぜんぜんありません。ドキュメントが一番重要です。」
  • 私:「今一番重要なのは、障害無く動くことだよ。確かに仕様書は無いけれど、仕様は障害票に細かく記述されているよ。まとまってはいないけれど、今、障害対応やテストに必要な情報はすべてそろっているよ。ドキュメントをまとめるのは、障害対応が終了してからで十分だと思うけど。」
  • ブリッジSE:「..画面周りは彼らが担当すべきです。サーバ部分なら..、あなた方が対応することもできるかもしれません。」
  • 私:「OK。では、サーバ部分の障害対応があるかを確認し、その部分を我々で対応することを検討するよ。」

なかなか平行線で分かり合えなかったが、最後に少しだけ譲歩を引き出すことができた。しかし、ちょっと強引だったかもしれない。また、結局コードの共同所有はわかってもらえていないのだろう。おそらく、納得できない感情があるのをブリッジSEには感じてしまう。

確かに、自分も以前自分の作ったソースコード(特に最適と思って良いコードだな、と感じていた部分)をすべて作り直されているときには腹が立った。(id:fkawakam:20051227 しかも単なる機能追加で0.5日程度で直せる追加をすべて、壊して作り直したため、3日もかけていた。これは以前の日記に書いた事件だ。)しかし、そのソースひとつをとると、確かにマイナスの生産性だったが、全体を通すとどうだろう。問題箇所を気づいた人間がその場で修正していくことを許可していれば、全体を通してみれば、はるかに効率的だと感じるのは私だけだろうか。

ソースは特にコーディングした人間にとっては、自分の創造物であり、著作物だ。愛着もあるだろう。それを他人に好き勝手いじられるのは、面白くないかもしれない。しかし、目的は、顧客のための動くシステムであるはずだ。その部分を忘れてはいけない。

ちょっと強引にブリッジSEを説得してしまったため、彼の心情が心配だ。時間をかけ、もっとゆっくり説得すべきだった。反省。