写点什么

代码永远是罪魁祸首吗?

  • 2010-12-19
  • 本文字数:1148 字

    阅读完需:约 4 分钟

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2010-12-19 09:292645
用户头像

发布了 114 篇内容, 共 29.9 次阅读, 收获喜欢 1 次。

关注

评论

发布
暂无评论
发现更多内容

直播预约|Search for Future,阿里云 × Elastic 中国用户峰会 2023

阿里云大数据AI技术

大数据 阿里云 搜索

预售登上计算机新书热卖榜TOP1,开年重磅,助力Java程序员飙升核心技能

图灵教育

Spring boot starter test java 后端、 程序员 java

软件测试/测试开发 | Spring Boot 异常处理

测试人

软件测试 springboot 自动化测试 测试发开

【经验分享】电路板上电就挂?新手工程师该怎么检查PCB?

攻城狮华哥

工程师 电路 PCB PCB设计

GitHub破千Star!Java多线程编程实战指南:核心篇+设计模式篇

做梦都在改BUG

Java 并发编程 多线程

Gartner首次针对中国市场发布产业数字化白皮书,联合卡奥斯共探区域经济发展最优解

Openlab_cosmoplat

数字化 产业数字化 白皮书 开源社区 Gartner

那些年,我们写过的无效单元测试

阿里巴巴中间件

阿里云 编程 云原生

预售登上计算机新书热卖榜TOP1,开年重磅,助力Java程序员飙升核心技能

图灵社区

Spring boot starter test java 后端、 程序员 java

2023年适用于Windows和Mac的FTP传输工具

镭速

一个可以早点下班的开发技巧

引迈信息

前端 敏捷开发 低代码 JNPF

如何让SpringBoot项目启动时执行特定代码

做梦都在改BUG

Java Spring Boot

软件测试/测试开发 | 数据持久化技术(Java)

测试人

软件测试 测试发开

黑盒测试方法—等价类划分法

测吧(北京)科技有限公司

测试

我在京东做研发丨【混合多云第一课】为何多云多活被称为“技术皇冠上的明珠”?

京东科技开发者

京东云 研发 混合多云

代码永远是罪魁祸首吗?_敏捷_Vikas Hazrati_InfoQ精选文章