软件开发 80%的批评是公平合理的,还有20%只不过是没病空
发表时间:2023-09-26 11:05:14
文章来源:炫佑科技
浏览次数:218
菏泽炫佑科技
软件开发 80%的批评是公平合理的,还有20%只不过是没病空
出品| CSDN(ID:)
*近无意中看到一篇文章《软件幻灭》()。 这让我想起了 Cegłowski 的帖子“网站膨胀的危机”() 以及其他几篇类似的帖子。
越来越多的软件开发人员认为,当今的应用程序变得越来越大、越来越慢并且问题越来越多。 然而,有了这个时代的硬件,我们应该能够编写更快、更小、更健壮的应用程序。 DOOM 于 1996 年推出,适用于妊娠测试 () 和数百种其他意想不到的设备。 另一方面,截至 2022 年,聊天应用程序在后台运行时可能会占用 0.5GB(或更多)内存,有时会导致设备完全无响应,即使在高端硬件上也是如此。
对于这个话题的帖子,人们普遍认为80%的批评是公平合理的,剩下的20%只是抱怨而已。
大多数开发人员都知道不要说“这只是一个智能手机操作系统,它能有多难?”之类的话。 或者,“为什么这个应用程序需要 G,而 90 年代的电子表格应用程序只需要 10 KB?” 您永远无法想象自己构建应用程序的复杂性和难度。
但这并不意味着我们不能做出客观的批评。 今天的应用程序确实比以往任何时候都慢,并且呈指数级增长,但价值却没有相应增加。 事实上,几乎所有现代应用程序都可以优化。 我们可以提高它们的速度,甚至可能提高几个数量级。 我们可以删除代码。 我们可以编写小型的、专门构建的库。 我们可以找到压缩文件的新方法。
但我们为什么没有这样做呢?
答案是“软件工程师并不为自己的工作感到自豪。” 虽然这种说法有一定道理,但我坚信,努力工作并出色完成任务是人类的天性,只有当某些事情反复阻碍时,我们才会失败。 因此,我们不应该抱怨人类的懒惰来解释为什么当今的软件如此缓慢且充满缺陷,而应该问:“是什么力量和驱动因素创造了一个环境,使软件工程师难以尽其所能?” 工作?”
对此我有几个答案。
速度、可靠性和磁盘占用空间无法吸引客户
在工程师眼中,软件是一个由交互组件、输入和输出组成的网络。 该模型既准确又实用。 然而,这不是软件应该被打包、营销或销售的方式。 对于商家和客户来说,软件是一组功能。
以库存管理应用程序为例。 营销将展示高分辨率库存照片、大胆的色彩和各种功能亮点:
这些说法都是可证伪的,这意味着我们只需要一个小时的演示就可以证明该软件是否可以做到这些事情。 但只有一个与速度有关。 该软件实际上可能非常慢,需要几秒钟才能响应按钮点击,但仍然保证“即时更新”。
速度影响应用程序的整体用户体验。 速度是品质的重要标志,但却是一个很难吸引的属性。 如果您花费大量时间优化核心流程,而竞争对手正在开发新型报告,您*终可能会因此失去很多客户。 调查您现有的客户,您会发现,当被问及下一步应该开发什么时,他们大多要求功能,而不是速度软件开发 80%的批评是公平合理的,还有20%只不过是没病空,除非软件太慢而无法使用。 此外,董事会不可能允许公司暂停现有产品开发计划六个月以处理技术债务。 功能、功能、功能,这些对我们的压力从来没有减轻过。
程序员希望编写快速的应用程序。 但市场并不关心。
您可能已经注意到,我们上面没有提到可靠性。 谁敢说自己的应用没有bug? 根本没有办法确保这一点,更不用说通过产品演示来证明这一点了。 我们是否会说“90% 的单元测试覆盖率和全套集成测试”? 谁会知道这意味着什么,如果你向他们解释,他们会感到无聊。 没有办法向您的客户解释可靠性,以便他们相信您的故事,同时对这个主题感兴趣。 敏捷时代告诉他们,bug是不可避免的,你只能努力修复它们。 由于没有全面的方法来衡量软件中的缺陷,因此它们不能用作比较产品的特征。 我们投入时间进行测试、重构和改进,但可能根本没有人注意到。
程序员希望编写没有错误的应用程序。 但市场并不关心。
另外,我们上面没有提到磁盘使用情况,尽管我们有时会在“下载”按钮下方的一行小文本中显示下载文件的大小。 与上述功能亮点相比,磁盘使用情况在客户心目中的影响太小了。 您*后一次因磁盘空间不足而指责开发人员(而不是您自己的计算机)是什么时候? 您是否根据下载文件的大小来选择视频游戏? 可能永远不会。 你会发现人们抱怨*新的《使命召唤》太大了,但它发布的那一周仍然赚了 10 亿美元。
减小可执行文件或输出包的大小是一项吃力不讨好的工作。 但这通常是一项技术性很强的工作,不仅需要了解正在构建的应用程序,还需要了解它所依赖的数百个较低级别的库。 另外,一般来说我们不鼓励这项工作,部分原因是它是一个雷区。 你可能不明白某行代码的作用,但这并不意味着它没有用。 也许这只会给 0.01% 在智能手机上运行它的用户带来问题。 但也许您付出了很多努力,*终除了防止应用程序在每四年的闰日崩溃之外什么也没做。 即使是*小的工具功能*终也会发展成为企业智能的产物。 我们没有必要陷入这种麻烦。
一些程序员想要编写更小的应用程序。 但这对市场和我们都没有好处。
消费类软件被低估
分发应用程序并不困难。 互联网或多或少就是由此诞生的。 但销售应用程序就像拔牙一样。 大众愿意花15美元买一个三明治或一张电影票,即使遇到一部烂片也只能叹息,但当面对自己感兴趣的应用程序时,即使只花1美元,他们也会犹豫。 只有两类人愿意为优质软件付费:企业和游戏玩家。 不知何故,我们生活在一个其他人都希望软件免费的世界。
这种期望对消费者应用程序的质量造成了严重破坏。 构建应用程序的成本约为 50,000 至 500,000 美元。 如果无法让用户付费,就必须通过其他方式收回成本。 这些是网络和本机应用程序臃肿且缓慢的主要原因:用户跟踪、广告、营销渠道、捆绑、付费订阅、针对上述所有内容的对策,以及数百个其他不太受人尊敬的收入来源。 人们常常认为这些都是商家的贪婪造成的,但事实上,很多时候都是因为他们走投无路,没有更好的办法。 互联网上大多数流行的网站都难以生存。
我并没有夸大这种系统造成的浪费和低效率。 如果你以合理的价格发布了一款独特的、高质量的应用,结果往往是没有人关心,下载量为0。所以,你只能以免费试用/订阅的方式进行重建。 然而,即使你下载了数百次,也只有少数用户愿意付费,收入也不足以支撑你的开支。 好吧,展望未来,你只能在免费版本中投放广告,尽管 UI 设计师可能会强烈反对。 然而,即便如此,您也会发现您只能从广告浏览中赚取几分钱。 所以,只能投放更多的广告。 然后,用户会抱怨广告过多,因为在他们看来,您应该让他们继续免费使用该应用程序。 您尝试将一些广告替换为应用内购买。 用户将继续抱怨。 无奈之下,您添加了一些“号召性用语”来鼓励用户为无广告试用付费。 事实证明软件开发,很多人很快就删除了该应用程序。 为此,您可以添加分析和遥测,以便找出如何留住客户。 然而,您发现“保留”可能与“成瘾”同义。 这个循环不断重复,很快你的应用程序将完全“无法识别”,并成为一个毫无乐趣的收入机器,以各种方式滥用用户的注意力和隐私。 但你仍然赚不到很多钱。
如果人们愿意为应用程序付费,我们就可以避免这一切。 但不幸的是,他们不想这样做,因此应用程序变得臃肿、缓慢且漏洞百出。
开发者没有意识到他们的力量
看到这里,肯定有人会说,你就知道怪别人,软件开发者不是没有责任吗? 我认为肯定有一些领域我们可以做得更好。
即使在经济衰退期间,开发商也能发挥非凡的影响力。 我们可以坚持(或不使用)特定技术。 我们仍然拥有良好的薪酬、福利和股权。 合作,无论多么微弱,我们都可以改变整个公司的文化和工作环境。 好的程序员很难找到,每个人都知道这一点,我们也知道他们也知道这一点。
这是我们的力量,我们可以更好地利用这种力量。
我们应该在每个冲刺中留出一些时间来解决技术债务。 当有机会优化和改进代码时,我们应该寻求推迟功能开发。 我们应该说服我们的老板支持开源项目。 我们应该建立一个期望,让每个人都明白,我们不一定要把所有的工作时间都投入到开发新功能上,我们的代码和行业对我们有更高的期望。
大多数时候,这些做法不会产生任何负面后果。 我们的要求并不过分。 每个行业都有专业的标准和要求。 为什么我们认为软件开发不能建立类似的标准和要求?
唯一需要注意的是,这些激励措施对我们没有任何好处。 这是一场艰苦的战斗。 一些经理不希望我们花时间解决技术债务,仅仅是因为他们不理解。 有些销售人员会担心我们的软件没有竞争力。 投资者可能会威胁将我们的工作外包给更敏捷的开发人员。 客户态度和市场力量的改变需要一段时间。 但如果改变现代软件的状态是一个有价值的目标,那么付出的努力就值得。
未来软件开发能否进步?
我对软件的未来并不乐观。 在 20 世纪 90 年代,程序员可以构建小型、高度优化的应用程序,因为他们别无选择。 客户的计算机只有 32MB RAM 和 200 MHz 单核处理器。 如果应用程序不是极简主义的,它就无法工作。 如今,两年前购买的基础型号 Air 的内存是原来的 250 倍,四核处理器的速度比单核处理器快几倍。 我们有更多的选择,但我们提供的应用程序 90% 都是垃圾。 除非有人抱怨,否则我们不会进行优化。 我们将把整个网络浏览器打包成消息应用程序、笔记应用程序,甚至是我们用来编写代码的工具。
二十年来,我们一直在努力提高软件开发速度,降低软件开发难度,让软件越来越易用。 确实,今天我们创建应用程序的速度比以往任何时候都快,功能比以往任何时候都多,而软件开发人员的经验却比以往任何时候都少。 从商业角度来看,不难看出其吸引力。 但我们也付出了代价,我们的客户、能源和整个地球都付出了沉重的代价。
这种情况不会在一夜之间改变,甚至可能在未来五年内也不会改变。 但我仍然充满希望。
*新一波的 Web 编程语言和技术(例如 、SWC、Bun 和 Yew)正在努力将编译时和运行时的速度和可靠性提升到新的水平。 Rust 不仅提供与 C 相当的性能,而且对开发人员非常友好。 这种高级语言在 Web 服务器上变得越来越流行。 此外,还有 Tauri 等轻量级替代方案,有望成为 Web 开发人员首选的跨平台框架。 Tree-也将为编译器和打包者带来新的希望。
就市场而言,一些热门游戏(例如《死亡细胞》和《以撒的结合》)已经进入移动平台进行付费下载。 虽然这场革命尚未成功,我们仍有工作要做,但这是对智能手机用户(全球*大的技术消费者群体)进行软件成本再教育的突破。
如果我们在过去的二十年里一直致力于提高生产力(尽管在此过程中以牺牲效率和财务可持续性为代价),也许在接下来的二十年里我们可以解决我们的集体技术债务并恢复我们失去的效率,并改善经济交流而不失去软件给我们生活带来的生产力收益。
炫佑科技专注互联网开发小程序开发-app开发-软件开发-网站制作等