糟糕软件的根源 —— 幻想出来的一大堆问题 已翻译 100%

oschina 投递于 08/06 15:57 (共 8 段, 翻译完成于 08-14)
阅读 285
收藏 2
0
加载中

关于作者:

George,非常擅长于给事物命名并理清如何验证缓存。https://github.com/George3d6

存在许多因素可以成为糟糕软件的催化剂:从使用的工具,到团队内部沟通的质量,到开发人员在推动其成功上的个人利益,以及你所使用的测试方法。

我认为其中有一个问题是主要的,这是几乎所有其他人都坚信的糟糕软件的推动力:幻想出来的问题

最复杂或最破落的软件并非是过于复杂或功能失调。它只是为了做其他事情而非出于其所预期的目标。

Tocy
Tocy
翻译于 08/06 16:57
0

播客应用

假设你是一个播客主播,而且你想要一个自定义网站以卖出你的广告产品,在没有第三方的情况下赚广告费,而且最重要的是,为你的听众发布播客,视频和文章。

你的小网站应用的需求可能如下:

  • 在北美加载速度快,实时播放流和下载。

  • 对于99.99%的用户在前15分钟不要崩溃或卡顿,最好一直都不要崩溃或卡顿。

  • 集成谷歌的广告,如果有时间的话,还可以集成其他广告提供商。

  • 将最新的产品动态链接到我的 Zazzle 页面,如果可能的话,基于他们看的片段向他们推荐。

  • 集成 Facebook 在线播放器,因为那是我播放的方式。如果使用你能有其他更简单的不需要 Facebook 的解决方式,那更好。

你将这些需求给你的外包团队,并针对它聊了一会。2个月后,他们给你展示 MVP ,然后你的脸变红了,你已经为一块垃圾花费了15,000$,你想要回你的钱。

对这个应用感到愤怒很正常,因为你一打开它屏幕就卡死了。你问他们怎么选择放到网站上的广告的类型…然后他给你指了一个丑陋而且很难理解的自定义 UI 。你在 Zazzle 上面的一半连接都是坏的或者缺少图片,而且 Facebook 在线播放有延迟。

琪花亿草
琪花亿草
翻译于 08/07 15:29
0

但是开发团队很奇怪你为什么生气,而且理所应当是这样的。从他们的角度来看,他们已经经历过地狱了,并交付给你了。

他们已经将他们的心和灵魂倾注到创建这个应用上,它有一些惊艳的特性:

  • 一个最先进的推荐系统。

  • 生成所有流、在线直播(用于之前提到的推荐)的算法。

  • 你的首页在 200ms 之内加载到世界各地。

  • 由于你想从 Facebook 播放切换,流协议和客户端几乎从头开始创建。

  • 让你轻松集成超过20个广告商的服务。

问题就是你想你要一个核心产品,如果他们容易实现的话,再要一些额外的特性。然而开发团队听到了不一样的你西。开发团队听到的是一些他们可以攻克的有挑战性的问题…和他们不用费心测试或者关系的大量无聊的,基础功能。

甚至更糟的是,你没有直接与开发者沟通,你就像是在玩口传失真游戏一样在交流。你和一个销售人员谈过,他和一个中层管理人员开了个会,然后他写了一些业务规范并交给一个 PM ,这个 PM 写了结束规范并给到一个团队负责人/架构师,然后由他的团队开始设计产品。他们的每一个环节,都会有点失真。

琪花亿草
琪花亿草
翻译于 08/07 15:49
0

应对机制

凭空想象出来的问题通常比真实问题更有趣。非常聪明的人玩竞争性游戏,构建和解决数学问题,并撰写试图回答有关人类状况的抽象问题的书籍,所有这些都是免费的。然而,一个平庸的程序员可能会向你收取相当数量的费用以为你构建一个简单的 Android 应用。这不是因为平庸的程序员比天才更难寻找,而是因为前者的活动都很有趣,但后者可能会相当无聊。

大多数程序员希望在获得报酬并同时获得乐趣。但是,对大多数人来说,这可能相当困难。当然,对于我们大多数人来说,“乐趣”的定义是完全不同的,但对于许多工程师来说,它归结为在可解决范围内的有趣并具有挑战性的问题。

给一个有些聪明的人太多无聊的并且不可能自动化完成的任务,你迟早会让他们发疯。然而,经过数十亿年的进化,人类大脑在保持理智方面非常有天赋。就像童年困苦或受虐待的受害者可以在梦幻类书籍中找到解脱一样,企业编程或自由网络开发的受害者可以在解决幻想中的问题时找到解脱的机会。

Tocy
Tocy
翻译于 08/07 09:37
0

软件工程师可以为自己创造的被想象出来问题的数量级,取决于他们的想象力还有他们应该解决的实际问题的难度。

应当被注意到的是,这个问题不是开发人员独有的。管理、销售、人力资源、后勤支持、法务甚至会计都有自己独特的方法来制造想象中的问题。当他们出席一些走形式的会议,并且会议上也根本没有要求他们做重要发言时,他们也会试图让自己参与过多的决策。并过分强调与他们的角色有关的微小问题。例如法务部门就要求我们的“狗狗日托” APP 从上线开始就必须是 101% 的满足 GDPR(通用数据保护条例),他们说我们可不能成为第一个违法案例。后勤部门雇佣超出他们工作需要的人员,以便让他们自己觉得致力于后勤方面的挑战很重要。

很多人并不傻,可他们却傻乎乎地想出很多问题,所以聪明的人会找到一种应对方式

ZICK_ZEON
ZICK_ZEON
翻译于 08/06 17:07
0

中式密谈驱动式设计

但幻想出来的问题不仅仅是无聊开发人员的造成的,也和长沟通链有关。

我偶尔会做自由职业,过去我负担不起接送客户的费用,这意味着我看到了类似分离性身份识别障碍和多动症的情况。我有100多封电子邮件,讨论内部MVP中微不足道的细节。我让人们在一周内改动了项目的每一项需求。我有过客户问过诸如“这可能是ICO吗?”或“我们可以在这里添加一些AI吗?”等问题。

当然,大多数客户比这更理智,但他们往往缺乏一些用于表述或构建他们的要求所需的知识。这很棒,因为我作为“计算机人员”工作的一部分,是帮助人们根据其用例在他们的软件中找出他们需要和不需要的东西。但是当你和客户之间存在一些中间层时,这样做会变得尤为困难。

大多数公司喜欢让销售人员跟踪潜在客户、协商价格并概括在给定价格下可包含的功能。他们有一位专员与客户讨论更深入地探讨需求及细节,通常也是一个销售人员,但职称略有不同,或者是各种各样的经理。然后这里面包含了内部的指挥链,各级管理层以及技术团队内部的层级结构。

当需求经历了这么多人时,即使这些人有最好的想法,一些事情也会发生变化。有些事情可能会因为毫无意义而改变,因为有些定义是愚蠢的,所以它们需要被重新定义。销售人员可能会说“只有39,999额外的费用,我们可以在区块链上做到这一点”......这让其他所有人都明白了“在区块链上做究竟什么”的意思。


虽然通常情况下需求会发生变化,因为有人误解了某些事情,或者因为有人使用上述应对机制以使他的工作或团队的工作更有趣和令人印象深刻。

因此,原始要求,即真正需要解决的问题,在转述中丢失了。它们被假想的问题和空白所取代,你已经遇到很多人准备并愿意用他们自己所假想的问题填补这些空白,因为他们必须解决的问题很无聊,填补这些空白给他们提供了一种应对方案。

Tocy
Tocy
翻译于 08/09 15:16
0

过度复杂化和自然选择

通常,虚构问题的存在还有一个更阴暗的原因,它们帮助一个团队或公司成长,并成为其功能的一个组成部分。

那些通过培育、挑选和补偿来寻找复杂解决方案的人没有动力去实施简单的解决方案。— Taleb

你听说过那三个工程师发现网上银行实际上是一个很简单的问题吗?他们从零开始开发了一些完美无缺的银行软件,使用了功能设计方法和内存安全语言,然后开始将主要银行迁移到他们惊人的基础设施中。

可能不会,因为它们不存在。然而,有许多由成千上万的开发人员组成的团队,无法掌握诸如“回滚”这样的简单概念,从而没完没了地创建银行软件。

这并不是因为数字的存储和传输是一个特别困难的问题。索引整个互联网的内容,并提供相关的结果自然语言查询,在次秒,是一个困难的问题,但只有几个聪明的家伙设法解决它

不,问题是银行生态系统已经变得非常善于让无人机存活。一种油耗很好的机器,目的是保持它自己的攫取金钱的等级制度。它的领导人是腐败的陷阱,是社会的牺牲品,但一个组织的领导人只是其成员的症状。

我不认为大多数在银行工作的下属都是邪恶或恶意的。与此相反,他们通常都是友好的小伙子,为他们的家庭提供食物、住所和教育。但他们的主要动机不是修复银行软件,而是保住工作。对于一些人来说,在今天的经济形势下丢掉工作可不是闹着玩的事,嘴巴大或太过主动是在银行业的纪律委员会面前发现自己的一种简单的方式。

所以银行业保持不变不是因为它有效,而是因为它有惯性。这种惰性以处理假想问题的形式出现,以避免解决实际问题。真正的问题一旦被指出,就会威胁到其他人的工作。这很可能会导致你被解雇,或者在一些特别令人讨厌的“机构”(比如高盛)的例子中,让几个棕色信封送到几个联邦调查局(FBI)官员那里,毁掉你的一生,或者让你自杀

当一个人的薪水取决于他对某件事的不了解时,要让他了解某件事是很困难的!- - - - - -Upton Sinclair
ZICK_ZEON
ZICK_ZEON
翻译于 08/14 14:02
0

高管层忽略了这样一个事实,即他们的高管人员将90%的时间花在涉及热带岛屿的“客户会议”和“其他费用”的百万美元预算上。因为高管人员对他们的上级腐败视而不见。

高管人员忽视了中层管理人员购买不合规的办公场所,并为他们自己雇佣了三名秘书和十几名实习生。因为中层管理人员鼓励他们生活在华尔街群狼的梦幻中。

中层管理人员忽略了这样一个事实,即直线管理者将时间花在关于“改进我们的敏捷方法”的power piont制作而非降低成本上。因为直线管理不抱怨他们对微小独裁权力的幻想。

直线经理忽略了团队领导和架构师所谈论的“使用JRPC和使用Hibernate、Spring的微服务之间的下一代系统接口”......而不是得知执行那些血腥的Mysql查询花费不到一天的时间。因为团队负责人似乎并没有注意到他们的上司甚至不能正确使用Excel并且每隔几周才来办公司一次。

团队负责人不会抱怨他们的开发人员使用新的JS框架在当年第10次重新设计UI,而是会查看EXPLAIN以获得上述慢速查询。因为开发人员似乎没有注意到他们的领导并没有真正编写除DOT图之外的任何代码。

这是一个解决幻想中的问题的恶性循环,从没有意识到窃取另外3000万也不会让他的父亲爱他的CEO开始。对于未实现使用Angular-Material-Boostrap 19.13.5重新设计“提交”按钮的UX实习生,无可否认的是:他们以纯文本形式存储密码(并将其作为auth cookie的一部分使用),然后离开了。

但每个人都需要不断解决幻想中的问题,因为如果他们停下来,如果他们开始关注真实的问题,他们可能会意识到整个系统都被破坏。他们可能会意识到Debra已经坐在那个角落,盯着内部服务器集群的正常运行时间图10年了,尽管该公司5年前迁移到了AWS。他们可能会意识到他们99%的工作就是让其他人的工作永垂不朽......这是一个难以接受的事实,我敢说,这对大多数人来说是不可能实现的,所以他们找不到一种应对方法。

Tocy
Tocy
翻译于 08/10 15:05
0
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接。
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
加载中

评论(1)

胡二还是爸爸
胡二还是爸爸
翻译的太痛苦了
返回顶部
顶部