软件的重要性愈发凸显的如今,本文作者指出如今的软件质量远不如十年前,并解释了这种现象背后的原因。
原文链接:https://bitheap.tech/why-is-software-quality-worse-than-a-decado-ago/
作者 | Laurentiu.Raducu
翻译 | 郑丽媛
出品 | 程序人生(ID:coder_life)
自互联网诞生之初,软件的作用就变得越来越重要,以至于我们的世界现在严重依赖软件。从发射卫星到轨道,到管理庞大的供应链网络,软件在各种运作中都不可或缺。在我们的日常活动中,不论是开车、坐飞机还是购物支付,也都离不开软件。
然而,随着软件解决方案不断增长,由软件错误引发的事故也会相应增加。如果你在科技公司工作,或者日常工作中依赖软件,那你可能经常会遇到性能和可用性方面的问题。
为什么会出现这种情况呢?尽管已经设立了用户体验专家和质量保证工程师等专业角色,他们也努力将软件中的错误数量降到最低,但现代软件的复杂性仍然不容忽视。即使做出了这些努力,软件行业依旧面临着重大挑战。为此,本文将探讨这一持续质量危机的根本原因,并揭示为什么明明取得了这些进步,软件质量仍然是一个关键问题。
我所说的软件质量是什么?
谈到软件质量,有许多不同的定义。就我个人而言,我会从以下几个方面来考虑:功能性、可靠性、易用性和安全性。
就功能性而言,我们要考虑:软件是否提供了用户实现目标所需的所有功能?是否需要依赖其他软件?举个例子,我认为在消费者软件方面, Facebook 就是一个不符合功能性要求的糟糕应用。你需要一个应用来使用平台的动态消息功能,还需要另一个应用来使用聊天功能——不过在网页应用中,Facebook 在同一个 URL 下提供了这两个功能。另一个例子,仍然适用于消费者软件,那就是视频游戏行业。我在大学时代玩电子游戏时,从未听说过一款游戏需要打 20 个补丁才能玩。但现在,游戏公司推出产品后,给人的感觉像是测试版。他们通常会在推出后的头两天发布 2 个补丁,我们更新了才能玩游戏。这个行业似乎已经完全崩溃了,价格也在不断上涨。
在可靠性方面,软件必须是可靠的,要几乎没有停机时间或错误,这包括了从故障中恢复的能力和保持数据完整性的能力。有很多报告显示,云服务或其他关键软件的可靠性还不够。例如 2023 年,谷歌支持论坛上充斥着用户投诉数据从 Google 云端硬盘中丢失的报告。虽然我个人认为,将数据存储在云端比存储在移动硬盘上更安全,但事实并非如此!
从易用性的角度来看,软件必须方便用户使用,不能过于复杂,而且性能要好。在我生活的地方,金融业在经济中占据了很大的比重,银行和投资公司在这里拥有巨大的权力和几乎无限的资源。尽管如此,他们的移动银行平台简直是一个笑话!卡顿、复杂和不直观的用户界面,我每次用它们时都很烦,甚至他们的反馈表也没法用,每次我试图提交时就会出现 500 错误。
最后,还有最重要的一点:安全性。现代软件有许多依赖项,我们都知道管理它们并使其保持最新版本有多难。即使有 Renovate 或 Dependabot 这样的自动工具,各种库的提供商也无法确保其新的主要版本能向后兼容。这就给开发人员的工作增加了难度,他们不得不手动处理这些依赖关系的升级。然而,在他们设法做到这一点之前,攻击者可能已经利用旧依赖项的漏洞来窃取用户数据了。这些数据泄露不仅给公司带来了麻烦,还可能会面临用户的法律诉讼,而且对最终用户来说也是一种危险。每天都有成千上万 GB 的用户数据,如电子邮件、密码甚至电话号码,被倾倒在暗网论坛上,这也是世界各地垃圾电话激增的主要原因。
哪里出了问题?
既然我已经定义了软件质量是什么,那么下面我就谈谈我个人对当今软件问题的看法。我必须提醒你,在这部分中你会看到很多直接提到人或群体的地方。声明一下,我无意将我们所处的混乱局面归咎于任何人、任何团体或行业。我只是想根据我在这个行业 10 多年的工作经验,谈谈我的看法。这只是一个基于趣闻轶事的个人观点,所以请不要产生其他反应,也不要把这个当作是对你个人的指责。
现在,能力危机影响着整个世界。由于我们每天都会接触到大量的娱乐活动,人们实在是太容易分心了。每个人的注意力都在下降,想要集中精力超过几分钟都很难。
根据我的经验,这个问题在年轻人中尤为突出。我有幸能与一些 Z 世代中的杰出人士共事,但我合作过的大多数年轻人都无法完成任何任务。不是因为缺乏经验,而是因为他们在本该完成工作的时候,却一直在玩手机,没完没了地看视频,甚至玩游戏。有时候,我甚至感觉自己是在和一个瘾君子共事。不只是我,有科学研究表明,这个年龄段的人对社交媒体的沉迷程度很高。
如今,人们无法长时间集中精力处理复杂任务,这就导致了更多的错误、更多的可用性问题,以及作为软件开发人员对工作和使命的专注度降低。
有人可能会反驳说,如今高效的软件团队需要遵循最新的最佳实践来保持质量。TDD、事件驱动架构、封闭测试、直接推送到主程序等深奥概念将有助于你的团队持续交付并将质量保持在最高水平。让我们回过头来分析一下这些建议的来源?
Martin Fowler 是软件工程领域的思想领袖之一,许多工程师盲目追随他提出的一切建议。我在很多公司都看到了这种趋势,特别是那些自称拥有无与伦比的工程文化的“狂热”组织中。许多这样的组织都会构建微服务,即使他们的软件领域复杂度不高,软件本身预计也不会有太大的扩展性。他们会这么做,因为他们的“上帝”告诉他们要这样做。但是,但是,他和其他一些领导者是如何变得如此有影响力的呢?他们一定是自己构建了世界一流的软件,对吗?
于是,我到处搜索 Martin Fowler 创建的软件:没有任何开源软件,也没有任何公开的闭源软件被宣传为是由他开发的。所以我又要问:他是如何变得如此出名的呢?很简单,因为他提供了那些平庸工程师所渴望的争议。
如今,构建软件不再只是工程问题,更多是为工作选择正确的设计模式。这是高级编程语言普及的结果,我们不再需要考虑诸如内存分配之类的复杂问题,使得几乎任何人都能进入软件工程领域,同时这也不再是真正热爱的人才能做的事了。主要的影响是,标准降低到了这样一个程度,你的团队中可能会有一些人每天都不写代码,但他们在关于是否应该使用 TDD 的无休止争论中所发表的言论,却受到了非技术经理的高度赞赏。但最终,从他们所交付的软件中来看,这些人带来的价值接近零。
随着这些编程语言的出现,以及许多公司发布的丰富框架,抽象级别不断上升,这使得工程师们逐渐不再需要深入了解他们正在使用的技术了。别误会我的意思,这也有优点。例如你可以获得更高的工作效率,一切都有了更快的学习曲线。然而,增加对这些工具的依赖性可能会导致一个风险,即工程师会缺乏对底层原理的深入理解,而这在调试、优化和理解抽象的局限性方面至关重要。
总而言之,我认为现代软件的崩溃主要有以下几个原因:缺乏专注、虚假的工程师,以及缺乏对抽象概念背后的深刻理解。我真的很好奇,AI 将会如何加剧我们现在看到的软件质量危机。我敢打赌,再过几年,情况会变得更糟,优秀的工程师会被平庸的同行挤出这个行业,因为后者可能更喜欢发表意见,并大肆宣扬行业虚假领袖的观点。
Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved