共通化は目的に相応しくない
ソフトウェアの共通化を作業の目的にしてはいけない。
チームAとチームBの似たコードを括りだしてCを作ることは、一般に良くない。
特に、共通化によって掛る工数が下がるだろうと言うのは大きな間違いである。
工数は決して下がらず、まず間違いなく増加する。そして開発の難易度が顕著に上がる。
また、共通化は自由度を下げる。これは特にトライアンドエラーが必要な状況における足かせになる。
もちろん、分散リポジトリなどの仕組みによって、共通化と派生を緩く組み合わせることが可能である。しかし、分散リポジトリを支障なく運用すること自体が、おそらく目的自体よりも非常に難しい。したがって、現実には無意味である。
共通化するべきときは、チームAがCに対して使う労力とチームBがCに使う労力を集約して、高品質なCを作りたいときである。この場合、必要な工数は低減しないが、得られるCの品質が向上する。Cが競争点であれば、これは有意な戦略になり得る。(単にチームAのCaとチームBのCbを、仕様の合理化なく統合すると、あまり良い結果にはならない。)