2008年1月3日,我坐在锅炉房里等待党团会议开始。下午7点,大门已经敞开大约一个小时:数月的准备工作即将结出硕果。电话已经拨出,志愿者们一直在挨家挨户拜访,现在时刻到来了。巴拉克·奥巴马能否赢得爱荷华州党团会议?
大门关闭,第一条短信从一个选区传来:看起来出席人数很多。然后是第二条、第三条、第四条。每条短信都被输入到我们的模型中,一个预测开始形成。第五条、第六条,现在是第七条。出席人数的预测似乎很可靠。《得梅因纪事报》的民意调查是正确的:超过24万人参加了爱荷华州党团会议。数字令人震惊,巴拉克·奥巴马将赢得胜利。简单的技术——短信与数据分析和PHP相结合——使竞选活动能够创建一个简单而有效的预测仪表板。
奥巴马竞选活动因其令人难以置信的技术应用而受到赞扬——这是有充分理由的。许多组织都希望复制其进行推广的能力、其对数据的关注,以及其协调数十万志愿者朝着同一方向努力的能力,以及授权个人掌控自己竞选活动中独特部分的能力。
奥巴马竞选活动中技术的使用产生了两个看似矛盾的观点:技术战略不是一项技术战略——而是一项总体战略——但如果没有技术,它就无法执行。但这忽略了程序员一直以来对软件的理解——一个在社交网络时代终于绽放的真理:软件本身就是一种组织力量,它使组织能够实现其目标。奥巴马竞选活动将技术用作前端赋能者,而不是后端支持,这种使命与工具之间的同步使两者都得到了放大。
虽然竞选活动的互联网运营代表了其技术努力中最可见的方面,但竞选活动在整个运营过程中都使用了技术:用于内部流程、开设办公室、管理GOTV(鼓励投票)运营,以及与内部和外部利益相关者沟通,包括筹款人、政策顾问和外部顾问。许多技术都进行了集成,以便可以将筹款活动跨不同渠道(线下和线上)连接起来,并且可以使用在线资源和传统的人工拉票来执行GOTV工作。所有这些都必须与竞选活动的合规和运营工作联系起来,同时确保预算得到管理,并且每一美元都有记录。所有这些系统都必须在不到两年的时间内创建、集成和推广,并为成千上万的工作人员和志愿者提供培训。
所有这些技术是如何在如此短的时间内(并且以反映其短期性质的成本)设计、开发和推广的?要理解奥巴马竞选活动在使用技术方面的成功,重要的是要反思其他软件架构是如何赋能和反映它们所支持的组织的。例如,指挥和控制型组织使用了其时代的结构化编程架构。面向对象架构反映了向共享服务型组织的转变,其中人力资源和财务等职能被转移到组织的更中心部分。面向服务架构似乎支持许多组织已经转向的外包,在这种外包中,组织外部和内部都需要访问对象。成功的组织已经能够快速有效地将最新的软件架构模式集成到其商业模式中。在这个技术和人员朝着相同方向发展的关键时刻,创新就会发生。
奥巴马竞选活动极其充分地反映了这种能力。是什么软件架构的进步使奥巴马竞选活动取得了成功?显然,社交网络在组织人员方面发挥了巨大作用,但其他重要的模型是开源开发以及PaaS和SaaS(平台即服务和软件即服务)模型。此外,竞选活动广泛使用了数据分析。通过使用现有工具将这些部分结合起来,竞选活动得以创新。当然,这些概念也存在局限性,例如学习曲线高、需要大量劳动力或用户群有限。但是,由于人们与草根实验的概念同步,因此当一个概念成功时,它就会得到培育,并且会提供资源来扩展它。
技术的架构元素是如何反映组织和竞选活动的总体原则的?开源开发,其重点是以受控但可扩展的方式分发开发人员向现有代码库添加内容的能力,反映了竞选活动对广泛的领导者和志愿者的依赖。这两个领域的人们都为项目带来了他们独特的才能。同样重要的是,当一组任务没有按计划完成时,可以将资源转移到手头的问题上。正如志愿者可以从在宾夕法尼亚州打电话转移到在印第安纳州打电话一样,开发人员也能够从数据交换转移到呼叫工具。
这种灵活性的一个例子是某些初选日期的数据程序。没有人事先确切知道竞选活动将如何进行。并非所有初选日期都受到同等重视,但随着某些日期的临近,对数据程序和GOTV工作的需求逐渐变得更加明显。每个州组织在设计如何使用可用系统方面都被赋予了很大的自由度,并且随着不同的团队试图扩展数据系统,临时开发脚本和系统扩展是必要的。然而,对于每个初选,相关团队都会重新配置,从许多地点引入最佳实践,并重构和整合为目标选民和评分选民而开发的流程。这种愿意尝试数据分析,然后扩展其使用的意愿,表明了竞选活动的运作方式。
与这些个人州发起的设计协同工作的是现有的开发平台。正如竞选活动围绕一套核心原则团结起来,并能够将这些原则融入到竞选活动所做的一切中一样,使用多个平台进行GOTV、网站、财务、运营和沟通,允许在受控环境中进行实验。可以尝试、测试和更改想法。一旦一个想法被证明是成功的,就可以以惊人的速度扩展并推广给成千上万甚至数十万人。
PaaS技术使这种类型的实验变得简单直接。可以轻松配置的平台允许运营部门快速地将流程(例如招聘和采购)从总部转移到最终建立的数百个办公室,
但同时允许对这些流程进行集中控制。在其他情况下,诸如选区队长之类的程序是在州办公室中使用简单的平台工具设计的,然后扩展到其他需要更协调一致的开发工作的程序。
当然,也存在典型的技术问题,例如系统流量超出预期,以及办公室配置不太正确。但是,能够发挥创造力并监控结果,并理解每个已实施系统的核心要素,使竞选活动能够弥补这些问题。此外,还制定了备份计划——通常是非常简单的计划。例如,不得不依赖尚未见过选举之夜规模的数据系统是冒险的;因此,许多数据被加载到并行辅助系统中。同样,了解网站的哪些部分是关键的,使竞选活动能够在必要时重新分配资源。准备适当的沟通和运营计划是灵活性的关键,这种灵活性使最了解系统的人能够做出决策,并相信这些决策将以竞选活动的最佳利益为出发点。
创新是一个被过度使用的流行语,组织也常常希望了解“魔法”公式。尽管如此,在奥巴马竞选活动中,很少有人会否认它是他们见过的最具创新性的组织。在竞选活动成立之初被迫施加的约束可能对于实现这一目标至关重要。了解到竞选活动只会存在两年,并且(最初)它是弱势方,资金不如竞争对手充足,这导致了一种创造性和实验意愿,以及一种权力分配,否则可能是不可能的。最终,允许分布式开发的现有技术与对一套核心架构和原则的坚持相结合。这意味着想法可以快速有效地推广给需要它们的许多人。
本·博尔曾是AHA! interactive(一家教育软件公司)的技术副总裁。他目前为非营利组织提供技术和政策咨询,并且曾担任奥巴马竞选团队的技术顾问。
最初发表于Queue第7卷,第1期—
在数字图书馆中评论本文
Shylaja Nukala, Vivek Rau - 为什么SRE文档很重要
SRE(站点可靠性工程)是一种工作职能、一种思维模式以及一套工程方法,用于使Web产品和服务可靠地运行。SRE工程师在软件开发和系统工程的交汇处工作,以解决运营问题并设计解决方案,从而可扩展、可靠且高效地设计、构建和运行大型分布式系统。成熟的SRE团队可能具有与许多SRE职能相关的定义完善的文档体系。
Taylor Savage - Web组件化
在当今的软件工程中,没有比Web开发更艰巨的任务了。一个典型的Web应用程序规范可能如下所示:该应用程序必须跨各种浏览器工作。它必须以60 fps的速度运行动画。它必须对触摸立即响应。它必须符合一套特定的设计原则和规范。它必须在几乎所有可以想象到的屏幕尺寸上工作,从电视和30英寸显示器到手机和腕表面盘。它必须是经过良好工程设计且在长期内可维护的。
Arie van Deursen - 超越页面对象:使用状态对象测试Web应用程序
Web应用程序的端到端测试通常涉及通过Selenium WebDriver之类的框架与网页进行复杂的交互。隐藏此类网页复杂性的推荐方法是使用页面对象,但是首先需要回答一些问题:在测试Web应用程序时,应该创建哪些页面对象?您应该在页面对象中包含哪些操作?给定页面对象,您应该指定哪些测试场景?
Rich Harris - 消除准入壁垒
一场战争正在Web开发领域展开。一方是工具制造者和工具用户的先锋,他们以破坏糟糕的旧观念(在他们的环境中,“旧”意味着任何在一个月前以上在Hacker News上首次亮相的东西)以及关于转译器等的热烈辩论为乐。