为什么糟糕的软件成功了
英文原文:What Do We Actually Mean by Bad Software?
做为热爱公平的软件制造者,最难以接受的现状之一,莫过于一款制作精良、设计优秀的软件完全没有用武之地。类似地,世界上严重被依赖的很多软件 却是糟糕的——即使没有完全的、不可否认的 bug,也充斥着低劣的设计抉择。这好像成为了有关软件的、一种重要的让人沮丧的事实。
到底什么是糟糕的软件?
成功的糟糕软件(失败的优秀软件)的第一个也是最重要的理由,在于我们无法就“糟糕”的意思达成一致。大部分人都认为,如果软件宣称备份你的电 脑而不是随意地破坏你的数据,明显因成功备份而占用了更多的存储空间,却不包含你的数据,那么这种软件就是“糟糕的”。但是在此假想情况与我们开发者称之 为糟糕软件之间,存在着大量的中间立场。
- 如果软件比较适合初级用户、但是不利于扩展、修改或二次开发,那么这是糟糕的吗?
- 如果软件的设计意图非常准确、但是需要长时间的训练才能变得有效率,那么这是糟糕的吗?
- 如果软件运行良好,相对易于上手,但是在实际执行某些操作时,却不应该地慢了很多很多,那么这是糟糕的吗?
- 如果它能够完成工作,但是真的看着很丑,该怎么说?
- 完成了 95% 的工作或时间,然后不幸死掉了,因为宕机而花掉剩下的5% 的时间,该怎么说?
人们不认同让它成为糟糕的标签,糟糕的软件比你预期的这种标签做得要好,因为所有这些例子都被理智地归入了“糟糕软件”之列,所以它比其中的原 因之一要清晰些。如果你认为一款软件因其 GUI 难看而被视作糟糕的,那么当一款软件在它的设计功能上出问题时,我想它就是糟糕的,我们很可能在业务依赖的老款 Swing(Java) 工具包上存在分歧。
当糟糕软件是优秀的时候
理解上的冲突是关于糟糕软件成功的原因核心所在。商人优先考虑的事情和开发人员极有可能不同。终端用户优先考虑的事情,与商业主和开发者也可能不同。一个人认为好的东西,另一个人认为一般般,甚至认为是“非常痛苦的”。这就是问题的核心。
大多数刚接触 WordPress 的开发者都厌恶它。作为一个开发平台,充其量有点儿新奇。它的代码是很久以前写的,十年前的一些不平凡的设计决策,到了今天仍然是健壮的。但是,由于该平 台优先考虑的事情是用户便利性和持续性,它仍然运行在带有 PHP5.2 的、陈旧的共享主机账号上(它甚至好多年没有安全方面的发布了)。所有过去的模板和扩展(在 WordPress,其术语是主题、插件)仍然良好地运行在最新的版本里。
你可以不认同 WordPress 团队关于他们优先考虑的事情,你可以认为他们的软件只是不可挽回地、糟糕至极,但是你真的不能无视一个事实,那就是它仍然被相当数量(貌似还在增长)的用户使用,他们觉得它简单、舒服和强大。
为什么糟糕的软件没有随处可见
基本上,“糟糕”软件繁殖的主要驱动力在于,有着不同优先目的的人们所做的决定,在影响着软件开发的最后产品或购买进程。通常,这些组合,和目标以及成功的定义没有多大关系。
摆脱糟糕软件的办法在所有层面都是深度相关的,取决于所有的利益相关人,既定软件要完成什么、它使谁受益、以及软件的“优秀”版本应该是什么。当它达到那个版本时,每个人最终认为它是优秀的,而不仅仅是实现了最重要的、最有权势的利益相关人的版本。
基本上,清晰地、良好测试的、文档齐备的、明辨可懂的代码,仅仅和开发者相关。对于业务人员,它能否提供价值、以及帮助赚钱才是重要的。对于管 理人员,成功通常是运行时间上的五个9(99.999%)。对于终端用户,最重要的却是容易和开心。但是这些利益相关人的每个目标,很容易与其他人在不可 避免的优先权争夺中发生转移。
对于所有利益相关人而言,制作优秀软件是一种政治平衡,更像是软件艺术、敏捷实践、TDD 或任何其它东东的问题。在一个软件团队调整每个人的愿景和工作,和在任何其他团队一样有难度。在所有利益相关人的愿景根据他们的目标、优先考虑的事情和成 功的条件做出调整之前,有人常常觉得他们被迫地与“糟糕的”软件打交道。
— END —
译文: 《为什么糟糕的软件成功了 》 腊八粥