Getting off the Modernization Treadmill
摘要
Alexander Petros gives a talk at Big Sky Dev Con about the pitfalls of government software modernization, criticizing single-page apps and the expensive treadmill of rebuilding systems every decade, using California's BenefitsCal portal as a cautionary example.
<p><a href="https://lobste.rs/s/ogtybl/getting_off_modernization_treadmill">Comments</a></p>
查看缓存全文
缓存时间: 2026/08/09 16:50
# Getting off the Modernization Treadmill
**Channel:** youtube.com via ggpsv
Source: [https://www.youtube.com/watch?v=vRJVw8Di-4s](https://www.youtube.com/watch?v=vRJVw8Di-4s)
## Description
<p><a href="https://lobste.rs/s/ogtybl/getting_off_modernization_treadmill">Comments</a></p>
## Transcript
说到我们出色的演讲者,我们的第一位演讲者是 Alexander Petros。你可能知道他,他是 HTMX 的维护者。他同时也对 Web 本身有着非常非常深层的兴趣。他提出了一些提案,想让 HTML 变得更好。他提出了 Triptych 提案。他写了一个很漂亮的博客,讲的是如何编写不会腐烂的软件,这在今天依然非常具有现实意义。他是 IRS 的工程负责人。所以,如果你有任何工程或税务问题,请务必在会后找他。他今天要和我们聊的是,如何摆脱“现代化跑步机”。请大家欢迎 Alexander Petros 上台。
>> 大家早上好。谢谢 Aaron 的介绍,很温馨。谢谢 James 和整个 Big Sky Dev Con 团队再次邀请我。这是我在这里演讲的第三年,也是全世界我最喜欢的会议。所以,能来到这里是我的荣幸,那我们开始吧。
先简单介绍一下我和我的背景。Aaron 已经讲了大半,我就快速过一遍。我是 IRS 的技术负责人。我之前参与过 Direct File 项目,那是 IRS 的免费报税项目,我还主导开发了 IRS 的预扣税估算器,这是一个在线应用,帮助你估算来年的税款,这样你就可以在发薪期间预扣正确、合适的金额。
我也在参与 HTML 的 Triptych 提案,这个我最后会稍微讲一下,这些提案只是三个很小的提议,目的是让 HTML 在不使用任何 JavaScript 的情况下表达力更强。我还是 HTMX JavaScript 库的共同维护者。
先把这一点说清楚,我今天完全是以个人身份发言。我的观点不代表政府或雇主的观点,我今天要讲的一切都基于公开可获取的信息。所以,没有 IRS 内部运作的东西,只是泛泛地讨论政府如何能建出好网站,以及如何在这个过程中节省大量资金。
这个演讲的标题来自我的一位朋友兼导师一周前在电话里对我说的话。
他说:“我开始从事公民技术领域工作时,现代化的意思是替换在我出生之前就建成的系统。所以你想到的是 COBOL、大型机、你知道的,房间里的巨型计算机,然后把这些变成 Java VPS。”
但今天,现代化已经变成了替换 10 年前建成的系统。
这背后有一个非常具体的原因,我会说明这一点,并想一些办法来解决这个问题。最主要的原因是,大约 15 年前,我们开始默认把网站构建成单页应用。这对我们长期维护和更新这些网站的能力产生了极其有害的后果。
我这里有一个非常具体的例子,那就是申请加州的食物券,也就是 SNAP 福利。直到不久前,加州有两个门户网站可以办这件事。一个是 BenefitsCal,它是一个综合福利的一站式门户,包括食物券,那是一个单页应用。另一个是 GetCalFresh.org,那是 Code for America 用 Ruby on Rails 构建的传统 HTML 服务,专门针对食物券。
我来展示一下,在一个性能相对较低的设备上加载这两个应用是什么样子。这是一台 P75 设备,意思是它的网络和处理能力处于第 25 百分位。
>> 好吧,这花掉了我演讲 3% 的时间,但很值得。
那么,我们在模拟什么?那是 2024 年的演示,但下行速度是每秒 9 兆字节。到 2026 年,等效的 P75 设备将是三星 Galaxy A 系列手机,比如 2023 年的 A24 4G。
实际上,我昨天就在昨天的会场自己访问了这个网站。在 75 兆字节每秒的网速下,用我的 MacBook Pro,单单看到登录按钮就花了 2 秒,完全加载完花了 10 秒。所以,即使在相对不错的网络连接和不错的笔记本电脑上,它依然不是一种愉快的体验。
顺便说,这还只是看主页。不是登录,不是注册。天知道那一切是怎么实现的。这只是开始。
那么,为什么我们要关心 P75 设备?那些用户是谁?
他们是使用低端智能手机的人,比如入门级安卓手机。他们是农村地区的用户。
他们是家庭网络连接繁忙的用户。所以,如果你家里可能有五口人,而且你并没有为超高性能的网络连接付费,然后你家一个孩子正在上 Zoom 课程,你的网络一下子就不可用了,那正是这种延迟影响的人群。正是因为网站性能差,这些人将无法访问这些服务。显然,这些用户往往是最需要州福利的人。而开发这些网站的人通常是在高性能网络和高性能设备上开发的,但他们并不会在最需要那些福利的人所处的条件下使用这些网站。
所以,就像我刚才说的,第一个是 SPA,第二个是 HTML Web 服务,你可能会想:“好吧,至少在这种情况下,有点特殊,同一个福利有两个门户可以申请,那么至少在这种情况下,加州看到了性能更好的网站,这是一个问题,所以他们建了一个性能更好的网页,让人们可以获取那些福利。”不,他们去年把好用的那个关掉了。
所以,现在你只能用 BenefitsCal,因为 BenefitsCal 被设计成把所有分散的网页都包含进来的那个东西。所以,你甚至不能……他们把网页留着,然后说:“抱歉,如果你还想申请,去那个烂的吧。”
他们还把一份 11 年 13 亿美元的合同给了那些建了第一个网站的人,让他们在未来 11 年继续维护它。为了把这个数字放在语境里,13 亿美元大约是每年 120……220……每年 1.2 亿美元,这是未来两年 76 人队付给 LeBron 的薪水的 30 倍。
诚然,LeBron 已经 41 岁了,但他依然是 LeBron。
所以,用每年 30 个 LeBron 的价格,我们得到的却是一个 22 兆字节的网页。
它诞生于 2021 年,然后在某个时候,会有人说:“这撑不下去了。我们需要再来一次。我们需要重建这个东西,等到他们真正去做的时候,它大概已经有 10 到 15 年了。”
而且,是的,人们注意到了这一点。如果你去 Reddit 上问,你可以看到有相当多的讨论。这些是 3 年前的,但别担心,问题依然存在。
这个评论我觉得特别有启发性。2 年前有人说:“嘿,我的东西已经挂了一个月了。呃,我怎么拿到它?”下面有人说:“我给你最好的建议。直接去线下办事点。”去一个实体建筑,他们会处理你的案子,这样你就不用跟这个网站打交道了。
所以,这很有代表性。显然,这是加州的特例,但这种情况……我引用的研究作者 Alex Russell 是 Edge 的浏览器工程师。他的研究表明,这个问题在全国各地的各种州级门户网站中普遍存在,涉及各种不同的福利,无论是红州还是蓝州,等等。
这里的根本问题是,在过去 20 年里,政府建了一个新的接口。在几百年的时间里,你可以亲自去,或者邮寄表格。后来我们加了电话和传真,但从根本上说,这些都是在工作时间处理的,而且这些流程有几十年甚至几百年的维护历史。但现在我们必须建网站。所以,如果你想想,网站是 7x24 小时可用的,并且有完全不同的排队和负载机制。所以,如果你从这个角度来看,政府没有在 15 年内完全改变其业务方式并不荒谬。但这仍然是一个我们必须解决的非常重要的问题,这就是我今天提到的他们正在解决的问题。
现在,有很多公共服务是通过网络提供的。即使它不是唯一可以获取这些服务的界面,通常也是主要的界面,而且绝对是公共部门推动你去使用的界面,因为让你在网站上申请什么东西从根本上比雇佣足够多的人来处理你的申请要便宜。
所以,这包括申请福利、失业救济、食物券,等等。
支付罚款、纳税、预约图书馆书籍、续驾照或护照。这些都是……我实际上觉得我已经做过……我大部分都通过网上做过。我大部分都是自己通过门户网站做的。而且这许多也是州级的问题,因为我们有联邦制。所以,你把建所有这些网站的问题乘以 50,有时像图书馆这样的,实际上你是在谈论必须实施这些的市政当局。所以问题是,我们需要实施食物券,然后突然之间,我们要为一个能处理一堆福利的网站支付 11 年 13 亿美元。
这个乘以州的数量,乘以市的数量,乘以政府试图为其选民提供的福利类型的数量。
那么,我们是怎么落到这个境地的?我们又如何解决它?
很多人刚开始了解政府软件服务交付问题的主要入口是一本叫《Recoding America》的书,作者是 Jen Pahlka,她是 Code for America 的创始人,并在联邦政府工作了很长时间。她指出了政府在交付软件方式上的一堆文化问题,我在这里只提几个。
他们把一个项目当作产品来资助,然后期望资金降到零。还有所谓的瀑布式交付模式,写一大堆巨型 PowerPoint 和 Word 文档,精确说明网站应该如何运作,然后没有反馈循环,让你在构建网站时学到东西并反馈回去。
招聘管道一塌糊涂。
在联邦层面,表面上做用户研究是违法的,因为《文书削减法案》说你不允许问更多问题。这就像很大一部分政府相信做研究就是违法的。
还有……要考虑现成产品、大合同等等。但我想特别关注一个,那就是基于产品的资助模式。
这是来自 Pahlka 的 Substack,叫《Eating Policy》。蓝线是她说政府理解项目资助的方式。蓝线是政府想看到的,也就是我们一次性花一笔钱,然后得到一个软件,然后维护成本基本上降到零。
而产品模式,也就是你明白你需要在某个时间段内维护一个 Web 服务,是更健康的模式,但在纸面上看起来没那么好。所以,她重新框定的方式是说:“嗯,在实践中,你最终做的是走上这个跑步机。你最终建造了错误的东西,资金归零,那个东西很烂,烂一段时间,然后你又花更多的钱去建一个新东西,你就这样一遍又一遍地重复。”
她称之为“混凝土船”方法,因为这引用了一句谚语:如果他们让我们造一艘混凝土船,我们也会照做。
所以,是的,显然有一个视角问题需要修正。
然而,这个图表我一直觉得不太对劲,因为我不明白从根本上为什么我们要花和最初构建一样多的钱来维护某样东西。你应该能够构建某样东西,然后根据需要修复它。你确实要花一些钱来维护,但启动成本应该高于实际维护成本。那么,我们有没有可能达到这第三种、更好的状态:前期花合理的钱来构建某样东西,然后成本变低,然后有时我们稍微提高一点,因为通过了新法案,或者需求变了。有一个持续的资金存在,但从根本上说,我们依然不应该花和从头构建一样多的钱来维持一个东西的运转。我觉得这非常合理。
嗯,所以她给出这些为什么软件需要不断更新的原因,记住,这个 Substack 的受众是政策制定者,他们不是现代软件开发者,但……兼容性,嗯,有时候你用的东西会变,所以你必须相应更新。
安全,会有新的漏洞,所以你需要持续维护项目来解决这些漏洞。
性能改进,你可能修改法律,然后还有所谓的“100% 陷阱”,我实际上搞不清楚她是什么意思。但我猜她指的是你有新需求之类的东西。
所以,很多公民技术改革者对构建好网站的这种态度是,这其实不是我们使用什么技术的问题,而是我们对待技术的心态问题。所以,无论你怎么建网站,只要你明白你需要适当资助它,你需要做研究,你需要采用敏捷开发模式,等等等等。
我不太同意这个观点。
退一步问这个问题是有帮助的:“好吧,如果我们面临政府服务交付的问题,我们到底要交付什么?”
我们要交付一个可靠的 Web 服务。我们要交付一个极其易访问的服务,我们要交付一个维护成本低的服务。
而且,有些技术在这方面比其他技术好得多。
所以,如果你在评估某样东西你需要负责多久,以及它会有多贵,嗯,你应该选择那些让这变得容易得多的技术。当然,如果你对我的工作有所了解,你就会知道,我相信有一种技术在这方面的能力远远超过其他所有技术。
那就是 HTML。
为了解释 HTML 为什么如此强大,我们会在 Pahlka 提出的那些产品需要持续项目资金的原因的语境下来讨论它。
呃,很快说一下,我明白大多数听众知道 HTML 是什么,但万一你不是 Web 开发者,HTML 是构建网站结构并形成基本功能的代码。CSS 是给网站定样式的代码,然后 JavaScript 给那个 HTML 增加新功能。所以,如果你见过列表、链接、标签、头部标签、表单、文本框、输入框什么的,所有这些都是用 HTML 构建的。
那么,让我们回到 Pahlka 关于为什么软件需要不断更新的例子。兼容性。嗯,HTML 是向后和向前……
相似文章
我们不断重造的车轮
一篇论述软件工程师反复重造已被充分解决的基础设施(如身份验证、后台任务、速率限制和功能开关)的文章,用自定义代码换取经过验证的解决方案,却不得不自行维护和调试这些代码。
现代应用
对现代代码编辑器的讽刺性观察,嘲弄过于复杂的AI功能、基于Electron的臃肿以及当代软件开发中的挫败感。
@andy_matuschak: 新演讲!https://andymatuschak.org/tat 编码代理可能帮助我们最终打破两个牢笼:应用模型,它…
Andy Matuschak 发表了一场演讲,探讨编码代理如何将计算从应用模型和编程专业化的束缚中解放出来,从而实现可塑性强、可组合的界面。他展示了一个写作环境,并提出了一种新的数字阅读工具,认为编码代理可以普及界面发明。
@PrajwalTomar_: 你一半的SaaS工具栈只需一个下午的开发就能替代。几周前,我构建了一个完整的客户门户…
一位开发者分享了他们如何用不到一天的时间,使用Claude和Lovable等AI工具构建了一个自定义客户门户,从而替代了每月200美元的SaaS服务,凸显了构建软件而非购买软件的增长趋势。
软件项目已完成
一篇观点文章,认为通过LLM实现编程的民主化并未产生变革性的新软件,因为大多数有用的应用程序已经存在;软件之舟已满。