在某个范围内,对多个项目进行横向对比似乎是领导们非常喜欢的做法。这种做法一方面可以激发项目团队之间的竞争(希望是良性竞争),另一方面也可以通过度量来了解各个项目的实际情况。
然而,我们真的能够用绝对数值来对比不同项目吗?实际上这是非常困难的,甚至是不可能的。每个项目都有其独特性,包括业务、技术栈、团队规模、技术规模和复杂度等,很难直接将它们拉到一起,用某个具体的衡量指标来判断哪个项目做得好,哪个项目做得差。
例如,假设项目A已经历经10年,拥有上百个微服务,持续维护百余名开发人员,而项目B则是新开发项目,只有20个微服务,不到50名开发人员。如果我们希望通过缺陷率来衡量这两个团队的开发质量,显然是不公平的。对于已经上线10年的项目A,业务复杂度可想而知,开发新功能需要保证不破坏既有功能,需要花费大量精力进行全面的测试和验证。而对于项目B,作为新项目,线上功能很少,用户也不多,开发新功能产生问题的可能性要小得多。假设两个团队的开发人员能力基本一致,要达到相同的缺陷率,两个项目花费的成本是完全不同的。
针对横向对比这一做法,初衷是通过对比来激发团队提升的动力。然而,更推荐的做法是根据团队的实际情况设定不同的目标,让团队自己跟自己比,不断提升技术和实践,让每个团队不断发挥能动性,通过创新的方式突破自己。相反,追求指标的横向对比往往会导致恶性竞争,大家都为了获得更好的数字而不是更好的产品。