代码集体所有制的弱点在哪里?

  • Mark Levison
  • 郑柯

2008 年 5 月 6 日

话题:敏捷文化 & 方法

敏捷社区中许多人采取“代码集体所有制”实践有一段时间了,这段时间内我们确实发现了一些问题。

根据众多书籍的作者、ThoughtWorks 首席科学家Martin Fowler的说法, “代码集体所有制(简称 CCO)”抛弃了个人拥有代码所有权的想法。实际上,代码是由整个团队所有的,团队中任何人都有权对其修改。常为人提到的好处包括:增加了“卡车因素”、负载均衡(瓶颈最小化)和使代码向所有人开放。此外,Wiki 的发明人、AboutUs 公司 CTO,Ward Cunningham指出 CCO可以增加开发工作的自豪感,因为整个团队都可以看到一个人的全部开发工作,而不是仅看到一个很难理解的 API,而此人其他的努力都隐藏于其后。

Software Development 和 Computer Language 的前编辑Larry O’Brien认为:即使有这么多好处,CCO 还是有一个很大的缺陷——它会使得管理层无法发现恶劣的程序员。Larry 有两个核心观点:

  • 恶劣的程序员并不是工作速度慢的好程序员。他们在主动地对团队的生产力起到反作用。”
  • CCO 会隐藏恶劣的程序员,因为好程序员们会发现这些人制造的问题并解决掉;管理层无法知道恶劣的程序员在拖团队的后腿。

摩托罗拉全球电信解决方案部门(Motorola Global Telecom Solutions Sector)的首席软件工程师Brad Appleton已经见过很多案例,在这些案例中,CCO 被降级为“无人所有制”,没有人承担责任。实际上,他建议使用 “代码管事人(Code Stewardship)”机制(Martin Fowler 称之为“弱代码所有制[Weak Code Ownership]”),他说:

代码管事人既是监督者又是指导者,负责监督指导模块和类中的相关知识。代码管事人的工作不只包括担任并发访问代码的保卫,还要保证代码(在概念上和结构上)的完整性和一致性,以及向他人广泛传播知识及其专业技能。

所以“代码集体所有制”可以起到很好的作用,不过必须要保证它不会堕入“无人所有制”的混乱状况(无论通过纪律保证,还是使用“代码管事人”),而且要注意发现有意拖团队后腿的恶劣程序员。

查看英文原文:Are there weaknesses with Collective Code Ownership?
敏捷文化 & 方法