软件开发的四大悖论


Infoworld 特约撰稿人 Nick Hodges 发布了一篇名为“Four paradoxes of software development”的文章,阐述了他眼中的软件开发领域的四大悖论。

全文内容如下:

桥梁建设 vs 软件开发:四个令人困惑的悖论

土木工程师可以理直气壮地说,世界上没有两座完全相同的桥梁。然而,桥梁共享许多已知特性,其建筑材料也有明确参数。桥梁建设涉及大量已知的已知项,未知的未知项远比人们想象的少得多。

我并非土木工程师,对设计和建造桥梁的杰出人士充满敬意。但我想通过这种对比说明:编写优秀、可运行的软件极其困难。软件开发团队承接的每个项目都是独一无二的。尽管项目之间存在相似性,但每个软件项目都有其独特的细微差别、需求,以及大量的未知未知项。

或者说,软件开发充满了难以处理的悖论。以下是四个典型案例:

悖论一:无人知晓工期,但客户坚持要交付日期

坦率地说,这可能是软件开发组织面临的最大挑战。我们根本无法确定任何项目需要多长时间。当然,我们可以估算,但结果几乎总是大错特错——有时严重高估,但更多时候是严重低估。

对客户而言,这既神秘又痛苦。由于不理解悖论的第一部分,他们不明白为何无法确定新软件的交付时间。当软件未能如期交付时,挫败感自然产生。

我们尝试使用 story points、planning poker和其他敏捷方法来预测进度,但始终无法摆脱霍夫施塔特定律(Hofstadter’s Law)的魔咒:即使考虑了霍夫施塔特定律,事情总会比你预期的更久。

悖论二:向延期项目加派人手,只会让项目更晚

这条被称为布鲁克斯定律(Brooks’s Law)的规则,对旁观者而言可能是最诡异的悖论。

通常,如果你发现无法按时完成牙膏管灌装任务,可以通过增加人手来赶上截止日期。如果你想在一年内建造双倍数量的房屋,通常只需双倍投入劳动力和材料即可实现(误差很小)。

然而,正如弗雷德·布鲁克斯(Fred Brooks)在其著作《人月神话》中所揭示的:“向延期的软件项目增加人力,只会让它更晚。” 这是一个悖论,却是软件开发领域最接近定律的真理。布鲁克斯指出,新成员需要时间理解复杂系统的上下文,并增加沟通成本,因此无法立即贡献生产力——这反而会延长项目周期并推高成本。

悖论三:编码能力越强,编码量反而越少

成为一名经验丰富的软件开发者需要多年积累。学习正确的编码方式、设计方法,以及编写整洁可维护代码的规则与技巧,绝非一日之功。

但讽刺的是,随着经验增长,你往往会被推向领导岗位,实际编码量反而减少。你不再写代码,而是参加设计会议、审查他人代码、管理团队。有时,你甚至因晋升而彻底告别编码。

这并不意味着资深开发者的贡献减少。通过规划项目、指导新人、维护编码标准,并确保团队产出优质代码,资深开发者对团队和公司的成功至关重要。

但你的确会写更少的代码。

悖论四:开发工具日益强大,但开发效率并未提升

对比当今使用React、Astro、Next.js等强大工具构建的Web应用,与30年前通过通用网关接口(CGI)处理数据和 HTML 的网站,你会发现我们已经比早期进步了数光年。 

然而,尽管工具日益先进、处理器速度飙升,软件开发效率似乎从未真正提高。工作量不仅总是超出时间预算,甚至超出了每个 CPU 周期的负荷。

我们的网站更美观了,但开发效率真的提升了吗?网站运行更快、数据处理更高效了吗?诚然,新框架和库抽象了许多复杂性(还有人想写jQuery代码吗?),但它们也带来了构建流程冗长、配置复杂、依赖膨胀等新问题。

与桥梁的终极差异:软件永无“完工”之日

这些悖论的存在并不意味着绝望。我指出它们,是为了让我们意识到其存在,学会接受并应对,从而避开潜在的陷阱。我们无法消除软件开发的陌生感和混乱,但可以预见并驾驭它们。我们的使命是:在悖论中交付

最后一个悖论或许是:软件开发永远没有真正完成之日。总有新功能可以添加。而桥梁工程至少有一个明确的终点——当桥梁建成并按设计运行时,工作便宣告结束。


相關推薦

2023-11-14

经验,我非常确信 Kotlin 能跻身前十名。至于它能否跻身'四大',这仍是一个有待回答的问题。” TIOBE 11 月 TOP 20 编程语言 相较上月,Top 10 榜单 PHP (8→7) 排名再进一名,Visual Basic 跌至第 8;其他排名无甚变化。Top 11-20

2022-10-12

TIOBE 公布了 2022 年 10 月的编程语言排行榜。 截至今日,Python、Java、C 和 C++ 语言已经在 TIOBE 榜单的前 4 位盘踞了相当长的一段时间。TIOBE CEO Paul Jansen 指出,这四种语言在榜单中远远领先于其他语言,且差距似乎只

2024-07-03

助手评估框架从基模型、产品工程、持续迭代、市场生态四大维度 16 个二级指标来对厂商进行整体评估和分析,帮助开发者和企业避免被厂商的宣传和媒体的渲染造成困惑和失焦。商汤日日新·代码小浣熊在 AI 编程助手评估框

2024-10-19

企业与虚拟社区的数实融合、社区型数字初创企业的开放悖论、基于开源的企业创新与战略新范式思考等议题进行了深入探讨。 陈晓红在论文分享中分析了企业与虚拟社区数实融合的理论基础、分析框架及未来展望。她指出,

2025-03-28

料库新增塞尔维亚语、匈牙利语、捷克语3类语料,涵盖四大数据模态共计1150万条数据,并运用精细化处理技术使数据质量达到“工业级”标准,实现“开箱即用”。 根据介绍,“万卷·丝路2.0”具有多语言、大规模、多模态、

2023-08-24

言的正文仿宋解决方案。 仿宋作为「宋黑仿楷」中文四大基础字体之一,长期缺乏开源许可证下的选择。我们希望「朱雀仿宋」可以弥补这一空缺,为开源软件与 TeX 社区贡献一份力。 上世纪初,仿宋活字一度品类繁盛,

2024-07-22

Linux操作系统。 据介绍,此次发布的TencentOS Server V3具备四大亮点: 数据库整体性能提升30%,内存节省超过15% 在离线混部+能耗控制方案,大幅提升资源利用率 集成大模型推理加速框架,GPU利用率提升2倍 CentOS原地替换,

2025-03-29

上线白泽智慧学伴、AI智能搜索、AI视频总结和AI视频导航四大智能应用。国家终身教育智慧教育平台自2024年12月上线,目前已上线课程2000门,为学习者提供多类型、多层次、多样态的优质学习资源和个性化、智能化、便捷化的

2022-11-22

目前,山石网科形成了具备“全息、量化、智能、协同”四大技术特点的涉及边界安全、云安全、数据安全、业务安全、内网安全、智能安全运营、安全服务、安全运维等的八大类产品服务,50余个行业和场景的完整解决方案。

2023-09-01

让广大用户充分体验生成式AI的理解、生成、逻辑、记忆四大核心能力。 百度创始人、董事长兼首席执行官李彦宏表示,当文心一言向数以亿计互联网用户大规模开放服务后,能够获得大量真实世界中的人工反馈,这将进一步

2025-04-02

客户,主推智能体矩阵、xCloud智能云、AI全周期服务和ESG四大方案服务。今年3月,联想与武夷山市、宜昌市政府签订战略合作,共同打造全球首批城市超级智能体,升级智慧城市到4.0阶段。 面向消费客户的想帮帮,将围绕多品

2024-09-24

新基金。 皮查伊指出了 AI 与可持续发展之间的四大机遇:帮助人们以自己的语言获取信息、加速科学发现、提供气候灾害警报和跟踪、以及推动经济进步。并承认了 AI 所存在的风险,例如深度伪造,但他没有提到

2024-07-06

,支持快速行走、敏捷避障、稳健上下坡和抗冲击干扰等四大运动功能,是通用人工智能软硬件开发的理想载体。 “青龙”由人形机器人(上海)有限公司自主研发,人形机器人(上海)有限公司是由行业头部企业成立的新型

2023-10-07

满选择的世界中定义更好的软件,并探讨人工智能 (AI) 对软件开发的深远影响;还研究了开源供应、需求和安全之间错综复杂的相互作用。 报告跟踪了 Java (Maven)、JavaScript (npm)、Python (PyPI)、.NET (NuGet Gallery) 四大开源生态系统的