糟糕软件的根源 —— 幻想出来的一大堆问题

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

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

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

播客应用

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

应对机制

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

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

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

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

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

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

猜你喜欢

转载自blog.csdn.net/hj7jay/article/details/81670156