为什么“烟雾弹”是一种反模式?

6
我最近阅读了维基百科的反模式列表,发现其中包含了以下内容:

幻象:演示未实现的功能将如何呈现

为什么这样做是不好的呢?我唯一能看到的问题就是如果您从未真正开始实现该功能。如果该功能在正式规范中,则“保证”完成,那么为了向潜在客户展示他们能够做什么,这样做是否仍然是不好的呢?

+1 是一种不做而是开发技术的技巧。我同意你的观点,它实际上并不是反模式,而是反道德。 - nerkn
5个回答

10
为了了解为什么“烟雾弥漫”会成为反模式,请参阅Smoke and Mirrors维基百科条目。从文章中可以看出:
“烟雾和镜子”是指欺骗性、虚假或不实的解释或描述。该名称的来源基于魔术师的幻觉,魔术师通过在混乱的烟雾中伸展或收缩镜子来使物体出现或消失。这个表达可能有欺诈行为的意味。
在计算机编程领域中,它用于描述尚不存在但看起来存在的程序或功能(如vaporware)。通常这是为了展示代码完成后生成的项目将会如何运行/外观 - 例如在贸易展上。
更普遍地说,“烟雾和镜子”可能指任何试图欺骗受众的演示,例如试图让潜在客户认为自己具备交付所需产品的能力。
通常情况下,“烟雾和镜子”被用于向管理层或客户展示演示文稿以获得/保持资金,但实际上没有真正的代码。这在一段时间内有效,但最终会导致其他反模式(如意大利面条代码、代码块等),以尝试在实际要求时获得真正的东西。

以虚假和欺骗为基础的项目往往会以惨败告终。就像一段关系,如果你在谎言上开发代码,最终一切都会瓦解。


2
+1 是将编程与人际关系进行比较。但是在人际关系中,不要想着你可以从头开始重写,以达到下一个阶段的目标,否则你的孩子进程会被分叉。 :( - corsiKa
2
+1 我认为第一句话已经概括了一切:Smoke and mirrors 是一个比喻,用来描述欺骗性、欺诈性或不实的解释或描述。这与 mock-up 应该具有的特点不同——它应该是预期的行为/使用情况,有时可能会有些雄心勃勃,但并不是欺诈或虚假销售。 - user166390
至少最不具欺骗性的烟雾和镜子仍需要您使用paint.exe绘制屏幕来开发所展示的内容。您可能会发现实际功能的实现遇到问题...而客户知道您已经让它工作,并且它看起来与他们拥有的图片完全一样。 - Tim Williscroft

2

此处的“烟雾弹”相较于模拟更为不同。

如果实现类似计算器这样的功能,您编写了所有的加、减、乘、除方法,但是更高级的函数都会返回随机结果,表面上看起来好像完成了工作。管理人员们会被一长串数字惊呼叫好。


1
不,那不是反模式。你所描述的是无限bug心态。请参见http://www.joelonsoftware.com/articles/fog0000000043.html第5节。 - corsiKa

2
虽然有一些回答已经暗示了(在我看来)真正的问题,但没有一个直接给出它。"烟雾和镜子"是一种反模式的真正原因是它混淆了原型和成品之间的区别。创建原型是完全可以的。许多人遇到的主要问题之一是经理说:“好吧,那似乎工作得足够好了,让我们发货。”创建原型通常是一件好事——但您必须始终非常小心地向内部和(尤其是)向外界明确指出它是原型,而不是成品。管理层通常希望相信原型是成品(或者至少可以成为成品的基础)。鼓励这种信念是一件非常糟糕的事情。

1

因为往往情况是90%的营销,10%的管理和0%的开发。

承诺少,做多。而不是相反。


不幸的是,在现实世界中,你很难一直这样做(除非你的管理层理解软件——这在非软件行业不是常见的情况)。在那种情况下,如果你按照自己的建议去做,最终你将不能得到资金支持,因此你实际上无法做自己想做的事情。真正的诀窍是向管理层展示你所要达到的目标(让它成为“闪光点”),并在幕后继续进行实际工作。为他们详细说明结果,以便他们理解。(这对任何销售策略都是有益的。) - JasCav
1
这只是一种反模式,因为它经常会适得其反。当你告诉他们某个东西存在,而实际上它并不存在时,“阻碍你的东西”就会出现,而且它一定会出现,你就会被困在客户和管理层寻找责任人的泥潭中...就像那个说它存在但实际上并不存在的人一样... - corsiKa

1

如果你点击Smoke and Mirrors的链接,你会看到这段话:

在计算机编程领域中,它用于描述一个尚不存在但看起来好像存在的程序或功能(与虚拟软件相似)。这通常是为了展示代码完成后最终项目将如何运行/看起来——例如在贸易展上。

这是危险的,因为在我们的世界中,任何事情都可能改变。


改变并不是坏事,不存在才是。 - corsiKa
+1 因为它从略微不同的角度回答了问题,我投了赞成票。然而,我更喜欢使用更强烈的词语“欺诈和欺骗” :-) - user166390
根据我的经验,变化通常是不存在的原因。当一个被大肆宣传为“史上最伟大的东西”的模型发生太多变化时,“欺诈和虚假”可能成为描述该项目的关键形容词。 - Bryan Downing

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接