当我第一次读到关于由《平价医疗法案》发起的网站 HealthCare.gov 花费了 5 亿美元创建的说法时4,我并不相信这个数字。 网站不可能花费那么多钱。 但实际数字似乎并没有低一个数量级,而且据我了解的报告,该网站在性能、功能或总体质量方面并没有多少东西可以展示其高昂的成本。
这在 IT 界绝非独特的经历。 事实上,这似乎更像是规则而不是例外。
在丹麦,我们也绝非免疫:丹麦警察部队的新案件管理系统 POLSAG 在花费了 1 亿美元且没有任何可用的东西可展示后被废弃。 我们很快就将这类失败归咎于政客要求错误的系统,以及不称职和/或贪婪的公司乐于效劳。 虽然这可能是部分解释,但这显然不足以说明全部。
IT 界的传统回应是,下一个重大事件将解决这个问题,而下一个重大事件似乎是概念的无限序列,例如高级语言、结构化编程、关系数据库、SQL、第四代语言、面向对象编程、敏捷方法等等,不胜枚举。 我认为可以公平地说,这些技术都没有对 IT 项目的成功/失败率产生任何重大影响。 显然,它们使我们能够进行更大的项目,但实际的成功/失败率似乎几乎相同。
与此同时,也有许多令人惊叹的成功案例,例如一对大学生通过他们的 Google 信息评分算法改变了我们对信息检索的看法,或者一群朋友通过他们的 Twitter 信息分发系统改变了我们的沟通方式。
为什么,尽管政客们发表了崇高的演讲,这种情况却从未发生在政府 IT 应用程序中? 显然,我们在这里遗漏了一些东西,我们做错了一些事情,甚至没有考虑过。 在(所谓的)“知识经济”中,这种特殊的错误比应有的更常见。
在乡下长大,我花了很多时间操作手推车。 欧洲手推车是对人力车的理性化改造,人力车基本上是两根木板,相隔两英尺,中间用木板钉或捆绑在一起。 一个人抓住前面的两根木板,一手一根,另一个人抓住后面的木板,然后他们就带着他们的货物蹒跚而行。
大约在一千年初,一位生产力顾问肯定指出,如果用轮子代替前面的人,那么用相同数量的工人就可以移动两倍的手推车。(这项技术的工业应用无疑为顾问赚取了丰厚的费用。)
就是这样! 这就是我小时候拖着到处跑的装置,也是我几个小时前用于园艺的装置。 众所周知,使用手推车比搬运东西更容易,但仍然是很重的工作。 你自己大约抬起一半的负载,你提供运动的能量,你必须将其引导到正确的方向,由于前两项能量的消耗,这很困难。
虽然与人力车相比有了巨大的改进,但欧洲手推车的效率却出奇的低下,至少与中国版本相比是这样。2 中国的某人比中世纪欧洲的精简人员更聪明,并将轮子移到了手推车的中间,这样整个负载的重量都由轮子承担。 中国手推车可以轻松运输两到三倍于欧洲手推车的负载,操作员几乎不费吹灰之力,只需推动和转向,几乎不需要抬起。
从管理的角度来看,中国手推车与欧洲手推车相同:一个轮子,两个把手,一个操作员。 然而,如果这样看待它,我们就会对它们的工作方式视而不见,并且错过了轮子带来的全部生产力提升。
在欧洲,我们至少从 1797 年就知道了中国手推车2,但直到今天,我们仍然在汗流浃背地抬起非优化手推车上携带的一半负载。
“非我发明”综合征并非IT界独有。
我开始认为我们的大型 IT 项目失败的原因是我们犯了同样的错误:盲目地用技术取代人力劳动,而不是解决实际问题。
许多人类工作可以直接用计算机取代。 电子邮件取代了旧的电报系统,提供了完全相同的概念服务:快速传递文本消息,同时几乎不使用人力。 但传递文本消息只是电子邮件最起码能做到的——一旦我们更好地了解它。 首先是程序回复电子邮件、发送源代码或在数据库中查找内容。 接下来是程序向其他程序发送电子邮件,以保持数据库同步,然后是包含图片、声音和副总裁的电子邮件。1
我们今天所知的电子邮件系统,正如 Ray Tomlinson 所设想的那样,并不是唯一一个有人提出的此类系统。 国家批准的邮政和电报垄断企业试图在 CCITT(国际电报电话咨询委员会)建议 X.400-X.5993 中标准化电子邮件——或者他们称之为“远程信息服务”——作为“智能网络”宏伟愿景的一部分。
他们大约在 Tomlinson 之前 15 年开始。 他们花费了数不清的各种货币。 他们有立法者强制规定他们的方式是唯一合法的未来方向。 他们彻底、可悲且最终地失败了。
为什么在 IT 领域,一个人通常可以做到数千人做不到的事情?
很容易推测,如果他们将任务交给一家 10 人的公司,而不是一家在全球拥有 69,000 名员工的集团公司,HealthCare.gov 会运行得更好。 我相信这是解决方案的必要组成部分,但同样,这显然不是成功的充分条件。
首先,虽然《平价医疗法案》(也称为奥巴马医改法案)中“只有” 380,000 个单词,但该法律产生的法规多达 1200 万个单词(并且还在增加)。 在交付截止日期匆匆过去之前,即使是一家 10 人的公司也无法读完所有这些冗长的文字。
有趣的是,《纽约时报》报道称 HealthCare.gov 包含估计 5 亿行代码。4 这与 5 亿美元的价格标签一样不可能为真。
我查看了构成奥巴马医改法案的实际法律之一,PPACA(患者保护和平价医疗法案)5,由于我不会阅读全部 906 页,所以我从中间开始,从第 403 页开始。 翻了几页后,我遇到了患者决策辅助工具的定义
“(1) 患者决策辅助工具——术语“患者决策辅助工具”是指一种教育工具,可帮助患者、护理人员或授权代表理解和沟通他们与治疗方案相关的信念和偏好,并根据他们的治疗方案、科学证据、情况、信念和偏好,与他们的医疗保健提供者共同决定哪些治疗对他们最有利。”
继续阅读,我找到了要求
“(2) 患者决策辅助工具的要求——根据第 (1) 款的拨款或合同开发和生产的患者决策辅助工具——
“(A) 应设计为使患者、护理人员和授权代表与医疗保健提供者一起参与知情决策;
“(B) 应以适合年龄的形式和方式呈现关于治疗方案的风险和益处的最新临床证据,并且可以针对来自各种文化和教育背景的患者、护理人员和授权代表进行调整,以反映消费者和不同健康素养水平的不同需求;
“(C) 应在适当情况下,解释为什么缺乏证据支持一种治疗方案优于另一种治疗方案;以及
“(D) 应解决跨年龄段的医疗保健决策,包括影响包括儿童在内的弱势群体的决策。”
除非国会认为教师是“教育工具”,否则我认为我们可以将其理解为他们期望这是一种计算机程序。 但请再次阅读并注意语言。 你上次看到计算机程序“参与”、“解释”或“解决决策”是什么时候? 或者,就此而言,你何时见过一个程序“为 [...] 各种文化和教育背景进行调整,以反映消费者和不同健康素养水平的不同需求”?
这些段落立法规定奥巴马医改法案将资助重型最先进的人工智能研究——我有点怀疑国会是否打算这样说。 我认为国会担心这种新的医疗保健是否有足够的医生和护士,所以他们想使用计算机来减少交谈和解释。 换句话说,他们想要节省人力——通过用轮子取代人力车上的前夫。
我曾经在紧急情况下使用过人力车。 我和我的露营伙伴用两棵小松树建造了它,将帐篷的帆布包裹在它们周围。 与手推车相比,它既更容易也更快,因为前面的人不会陷在任何坑洞里或撞到任何石头,并且他帮助完成了所有的导航、抬起、移动和转向。 当我们遇到急救人员时,他们轻轻地将我们受伤的朋友从我们临时的版本抬到他们专业的人力车上,并将他抬到他们的救护车上的高科技铝制担架上。
我绝对确定国会永远不会用轮子代替救护车担架上的前夫来节省人力——然而,在某种程度上,他们确实这样做了。 我不会声称知道使用计算机优化医疗保健咨询的正确方法——可能有一种方法,但更重要的是,可能没有方法。
盲目地决定信息技术将取代人类是开化的。 IT 不是使不愉快或不方便的事情消失的魔法药水。 正确的做法是像 2000 年前的中国工程师那样问:“如果我们要在这种东西上安装轮子,最好的安装位置在哪里?”
并意识到提出了两个问题。
1. Borenstein, M., Linimon, M. 1993. 将 MIME 内容类型扩展到新媒体。 RFC 1437; http://www.rfc-editor.org/rfc/rfc1437.txt。
2. De Decker, K. 2011. 如何缩小运输网络规模:中国手推车。 低技术杂志; http://www.lowtechmagazine.com/2011/12/the-chinese-wheelbarrow.html。
3. 国际电信联盟。 ITU-T 建议; http://www.itu.int/ITU-T/recommendations/index.aspx?ser=X。
4. LaFraniere, S., Austen, I. Pear, R. 2013. 承包商看到健康网站需要数周的工作才能修复。 纽约时报(10 月 20 日); http://www.nytimes.com/2013/10/21/us/insurance-site-seen-needing-weeks-to-fix.html?pagewanted=2&_r=0。
5. 患者保护和平价医疗法案。 2010; http://www.gpo.gov/fdsys/pkg/PLAW-111publ148/content-detail.html。
喜欢还是讨厌? 让我们知道
Poul-Henning Kamp ([email protected]) 是 FreeBSD 操作系统的主要开发者之一,他从一开始就致力于该操作系统的开发。 他因其基于 MD5 的密码加扰器而鲜为人知,该加扰器保护了思科路由器、瞻博网络路由器以及 Linux 和 BSD 系统上的密码。 有些人注意到他编写了一个内存分配器、一个设备文件系统和一个实际上可用的磁盘加密方法。 Kamp 与他的妻子、儿子、女儿、大约十几台 FreeBSD 计算机以及世界上最精确的 NTP(网络时间协议)时钟之一住在丹麦。 他以独立承包商的身份谋生,从事各种与计算机和网络相关的工作。
© 2013 1542-7730/13/1200 $10.00
最初发表于 Queue vol. 11, no. 12—
在 数字图书馆 中评论本文
Niklas Blum, Serge Lachapelle, Harald Alvestrand - WebRTC - 开放 Web 平台的实时通信
在这个疫情时期,世界比以往任何时候都更转向基于互联网的 RTC(实时通信)。 过去十年中,RTC 产品的数量激增,这在很大程度上是由于更便宜的高速网络接入和更强大的设备,但也归功于一个名为 WebRTC 的开放、免版税平台。 WebRTC 正在从实现有用的体验发展到在疫情期间对于数十亿人继续工作和教育,并保持重要的人际交往至关重要。 WebRTC 未来的机遇和影响确实令人着迷。
Benjamin Treynor Sloss, Shylaja Nukala, Vivek Rau - 重要的指标
衡量您的站点可靠性指标,设定正确的目标,并努力准确地衡量这些指标。 然后,您会发现您的服务运行得更好,停机时间更少,并且用户采用率更高。
Silvia Esparrachiari, Tanya Reilly, Ashleigh Rentz - 跟踪和控制微服务依赖项
如果您曾经将钥匙锁在房屋或汽车内,您就会熟悉依赖循环。 没有钥匙您就无法打开锁,但是没有打开锁您就无法拿到钥匙。 有些循环很明显,但是更复杂的依赖循环可能很难在它们导致中断之前找到。 跟踪和控制依赖项的策略对于维护可靠的系统是必要的。
Diptanu Gon Choudhury, Timothy Perrett - 为互联网规模的服务设计集群调度器
希望构建调度系统的工程师应考虑他们使用的底层基础设施的所有故障模式,并考虑调度系统的操作员如何在租户系统所有者进行故障排除期间配置补救策略,同时帮助保持租户系统尽可能稳定。