代码永远是罪魁祸首吗?

  • Vikas Hazrati
  • 金毅

2010 年 12 月 19 日

话题:敏捷语言 & 开发架构文化 & 方法

软件项目的失败可能归咎于各种各样的原因。一些项目因糟糕的需求而失败,另一些则由于钱和时间超支了,还有少数单纯是因为糟糕的管理所致。如果我们探究其根本原因,是否会发现所有项目失败的罪魁祸首是糟糕的代码呢?全都是这样吗?

Bob 大叔坚信糟糕的代码所带来的成本之大足够让一个项目失败。他提到:

我知道许多项目都败在代码问题上。更有甚者,许多公司因为代码问题而失败。

Bob 觉得原因其实很简单。若维护代码所需的成本超出项目预算,项目就会失败;若成本超出公司预算,公司就得关门。再看另外一个极端,Bob 认为,如果代码成本近乎为零,也就没有项目会失败了。

项目为什么会因为糟糕的需求、糟糕的管理、不合理的计划和预算而失败呢?其实它们的失败是由于错误成本太庞大。为什么错误成本会如此庞大呢?因为代码的成本大得惊人。如果产出代码没有花费,错误成本将几近为零。

然而,不是所有人都同意这一观点。

当这个问题被贴在 twitter 上,大多数人认为商业运营问题才是导致项目失败的原因。Alex Chaffee 认为,糟糕的管理和需求根本无法通过优质的代码来弥补。

如果你的需求很烂、管理差劲,即使是免费的即时代码 (instant code) 依然拯救不了你的业务。如果你马上发布一个完美无瑕,但没人想要的、毫无价值的产品,并且为这个蹩脚的产品不断迭代,发布更多恐怖的版本,那么最终你还是会花光所有的钱和时间,甚至声誉,你的项目以至于生意仍旧以失败告终。

同样地,James Iry 提出,糟糕的代码只是项目可能失败的原因之一. 他认为:

免费的代码当然会使公司有能力交付更多、更频繁的迭代,但如果迭代只是基于糟糕的想法、或者听上去不错但不适合市场需求也卖不出去的想法、又抑或卖得出去,但在设备或维护或其他什么方面成本过高的想法,那么公司最终还是会失败的。

Michael Dubakov认为,如果公司不能提供正确的解决方案,项目就会失败。他提到,如果代码整洁,那么对其进行重构,从而获得正确的解决方案就会比较容易,但这并不意味着好的代码就等于好的解决方案。Michael 提议:

在这个世界上,你可以创建一个拥有最整洁代码的完美架构。你可以达成 100% 的测试覆盖率,不用布尔参数就将关注点、层次结构和方法完全分离。你可以在每个技术方面都做到完美,然而如果程序不能有效地解决用户的问题,最终依然难逃失败。

Michael Norton补充道 几乎所有项目失败的根本原因都会归咎于人。他认为:

如果一个项目由于解决的是错误的问题而失败了,这个项目就是由于参与的人错误地理解了问题而失败的。如果一个项目由于代码(或其它什么)质量不好而失败了,它就是由于参与的人相应写的代码太烂而失败的。

如此说来,虽然没人会轻视整洁代码的重要性,但也不是每个人都认同糟糕的代码是项目失败罪魁祸首的论调。你的想法如何呢?

查看英文原文:Code is the Culprit! Always?

敏捷语言 & 开发架构文化 & 方法