爱荷华大选 App 投票酿闹剧的反思:为什么我们在软件工程方面如此糟糕?


[原文来自:www.ii77.com]

【编者按】在不久前,美国2020总统大选民主党候选人初选在爱荷华州拉开序幕,在爱荷华州民主党党团会议上,一个App引起了一场大杂沓。按照预期,这款大选投票App会在投票2小时后快速发布究竟,但该App发生故障,直到第二天也未给出究竟。

 

[好文分享:www.ii77.com]

作者 | Jake Voytko

编译&责编 | 夕颜

出品 | CSDN(ID:CSDNnews)


该App申报显露显现手艺问题和纷歧致性。爱荷华州民主党揭橥声明,公布他们并未蒙受收集冲击,然则在使用App时碰到了手艺问题。

 

本来爱荷华州向Shadow公司支出6万多美元,斥地了一款应用法式,该应用法式应可以使区域官员更轻松快捷地传输党团会议究竟。

 

然而,这款App却在当天变成了一场闹剧,搞砸了一场大选,差点弄垮了一家公司。

 

之后,本文作者撰文,经由这场App斥地事变,向软件工程范畴发出魂魄一问——为什么我们在软件工程方面如斯糟糕?


问题出在哪?


一周后,人人才对当初的不测有了更清楚的认识。本来这款App是经由Beta测试法式而不是主流App市肆分发的,用户很难经由一样流程安装App。安装后,它也很有或者并无响应。更糟糕的是,一些会议所处的所在无法保持互联网,这让无法保持互联网的App形同虚设。他们用上了备用规划:使用会议小组一向在用的德律线,但不幸的是德律线发生了拥堵。

 

随后,上图漫画就起头在软件工程师中敏捷流传开来。我也看到了。一句话总结这张漫画(以及我在Twitter上看到的概念):“我不太知道该怎么说,然则我们整个范畴都不擅长本身在做的事,若是依靠我们,每小我都邑死。”软件工程师实际上并不相信这一点。但听起来这点似乎是对的。这是什么意思呢?

 

意思是说:当失败所引起的后果不严重时,我们很愿意建立软件。一样的软件若是充沛好,就能够正常运行。然而,大多数软件的机能糟糕到足以让我们对错误习认为常。这不是偶然的。软件工程界中很多常见的行为都滋长于如许一个情况中,人们对故障很宽容,新功能也充沛吸惹人饮茶。且失败的价值是廉价的。到场市值排名前10的上市公司供应的任安在线办事在两个小时内完全离线,一周之内子们就会遗忘这件事。人们以“快速进步取得冲破”和“上线并迭代”之类的托言逃避实际。

 

回报是非常丰厚的。在很多收集公司中,每个用户少量的收益乘以数百万(或数十亿!)的用户,就是一个伟大的数字。对于拥有面向消费者的App或网站的公司而言,这是有利可图的。布置成本奋发,但究竟有限,分发几乎是免费的。消费者软件工程行业需要衡量弃取:我们降低布置速度正好足以使缺陷率连结在较低水平,但不克降低到必然水平。

 

我将其称为软件斥地的“网站经济模型”:当布置的收益很高而重试的成本很低时,治理层会设置激励办法来优化高短期特征速度。这反映在现代项目治理实践及其实施中,我将鄙人面进行商议。

 

然则正如我之前所说,“当失败的后果微乎其微时,我们很愿意建立软件。”当失败的价值不菲时,就像在爱荷华州那样,它会造成恐怖的后果。常见的软件工程实践源于互联网经济模型,当违反该模型的假设时,软件工程师就会对我们的工作感应失望。


收集公司中的软件工程若何工作?


让我们假设一下QwertyCo这家面向消费者的软件公司,它每年的收入为1亿美元。经由与其他公司进行对照,我们能够估算QwertyCo的规模。博客系统托管网站WP Engine在2018年的ARR(管帐收益率)为1亿美元。BlueApron在2018年的收入为6.67亿美元。是以QwertyCo是一家中型公司。它有几十到几百名工程师,而且是非公开的。

 

首先,让我们看看QwertyCo的项目治理经济学。治理人员深知,无法执政夕之间建立一个功能。他们需要在软件质量、给准时间和实现速度之间进行衡量。

 

软件质量对他们有多主要?不太主要。若是QwertyCo的网站每年封闭24小时,他们估计将总共损失273,972美元(假设正常运行时间与收入呈线性关系)。有趣的是,该站点经常停机15分钟,但似乎没人在乎。若是某个功能使该站点瘫痪,他们将回滚该功能,然后稍后重试。重试的成本非常低。

 


QwertyCo的新功能有多大价格?凭据我小我的视察,一个工程师一个月能够经由优化站点将收入改变-2%-1%。每个工程师每个月有机会获得100万美元的QwertyCo增量收入。诸如A / B测试之类的手艺甚至能够减轻错误:几周之内,你能够检测到负面或中立的更改并删除这些功能。糟糕的功能不会话费好多钱,因为它们持续的时间有限,而胜利是永远的。即使是很小的胜率,对 QwertyCo也是有吸引力的。

 

考虑到晦气身分和晦气身分,QwertyCo应何时上线一项功能?经济学认为,即使功能有很高的风险,只要它们偶然会带来收益,就应该上线。是以,每个项目都邑酿成一个优化游戏:“ 这个功能天天能够带来几多收益?”,“实现这个项目需要多长时间?若是我们拿出X会如何?若是我们掏出X和Y会如何?有什么方式能够使这个部门耗时更少?”

 

如今,让我们从软件工程师的角度审视一个软件项目。

 

软件工程师的首要商品是时间。平安的软件工程话费好多时间。一旦项目的复杂性阈值降低,它将被分为好多阶段。设计人员或产物司理需要确定软件项目的局限,并在需要时转换为手艺设计或规划,以及在需要时划分为子义务。然后是写代码、测试、审查代码、记录统计信息并将其与仪表板集成在一路,在需要时发出警报,并在需要时进行手动测试。此外,编码平日会破费被称为重构的前期成本:点窜现有系统以使其更易于实现新功能。实现“小型”功能所需的时间或者只有编码的10-30%。

 

工程师的时间花在哪了?系统故障破费的时间最多。站点停机是一种全局状况。最有经验的工程师会在此时停脱手头的活,让站点再次运行。然则花在这个上的时间并未增值。他们的项目如今进度掉队,对他们的反映很差。若何削减停机时间?书面测试、看管、警报和手动测试都能够降低发生这些灾难性事件的风险。

 

工程师的时间还花在哪里了?忙于点窜细微的bug。一些错误很严重,但不常见。若是用户执行罕有的把持,或许会丢失数据。当工程师收到此错误申报时,他们必需住手一切并修复错误。这又会累及当前的项目,而且跟着时间的推移或者会导致重大损失。

 

是以,经验雄厚的软件工程师起头正视代码质量。他们想要验证代码是否准确。这就是工程组织采用外观上会减慢斥地速度的办法的原因:代码审查、持续集成、可视察性和看管等。错误被发现的时间越晚,价值就越大,是以工程师在早期发现错误上投入了大量资金。他们还着重于简化实现的重构。简洁的实现不太或者显现错误。

 

是以,治理层和工程层质量上往往定见相悖。治理层进展错误率较高(但充沛低),工程师进展错误率较低。

 

若何将其纳入项目治理?产物和工程将项目分化为涵盖整个项目的小义务。项目长度是义务数量和工程师数量的函数。最常见的是,该项目将破费很长时间,而且会经由删除功能进行调整。然后工程师执行义务。平日,人人会在“冲刺”中完成义务实现。若是冲刺时间为两周,则每个义务都有一个两周计时器。然则义务平日会破费比想象更长的时间。工程师会做出艰难的优先级决议,以按时完成义务:“若是编写根基测试,而且在规划中不进行重构,我能够在冲刺阶段竣事时完成这项工作。” 冲刺流程络续对时间成本施压 ,这意味着工程师或者会牺牲质量,也或者在冲刺规划会议中宣告失败。

 

有人会说,我在冲刺过程中太甚强硬了,他们是对的。这的确是时间成本激励的究竟。冲刺过程只是多次施加时间压力的一种便捷方式:一次在确定整个项目局限时施加,并在每个义务中施加一次。若是凭据产物增加的价格来评判产物小组,那么他们天然会与工程师协商实现时间,而无需治理层的任何额外支撑。工程师也被激励去敏捷实施,然则他们或者会测验从历久而不是短期的角度进行优化。这就是为什么企业经常激励提高短期速度的原因。

 

是以,经由设置适当的激励构造,高管能够在一起头就获得他们想要的器材:他们能够定下功能和估计的日期,而且产物和工程手艺天然会协商实现该功能的需要前提。“我进展你在2个月内实现无帐户结帐。”产物和工程部门将写出所有2周的义务,并删繁就简,直到他们能够上线称为“无帐户结帐”的项目。这会发生较低的断裂风险,而且在成熟之前或者会履历几回迭代。然则休止是临时的,功能是永远的。


若是违反网站经济模型的假设会如何?


如我之前所说,“当失败的后果不主要时,我们很愿意构建软件。”“上线并迭代”和“快速进步并取得冲破”的标语指向这一假设。然则,我们都能够想象一下,如许做的价值是昂贵的或弗成能的。在极端情形下,建筑物坍毁或者导致数千人丧生,并造成数十亿美元的损失。2020年的爱荷华州民主焦点小组的案例还算轻的。若是焦点小组失败,每小我都邑在一天竣事时回家。然..主党却没有机会在不破费大量时间、金钱和谅解的前提下开第二次会议。

 

解说:在本部门中,我将用“高风险”作为“没有反复的情形”和“昂贵的反复情形”的简写。

 

将网站经济模型应用于高风险状况会如何?随机举例:你正在编写一个用于申报爱荷华州小组会议究竟的App。你会分几步来写?测试和验证App吗?

 

首先是工程:你必需同时编写Android App和iPhone App。申报是焦点要求,是以办事器是必需的。复杂的焦点划定必需同时编码到客户端和办事器中。系统必需将究竟申报给最终用户;这是你必需编写的另一个接口。民主党或者有必需写入App的验证和申报要求。此外,若是在党团会议时代办事器停机就糟糕了,是以你需要在系统中写入某种可视察性。

 

接下来,你若何验证App?一种选择是用户测试。你将向潜在用户显露该App的预设图片,并向他们扣问诸如“您认为此界面的用途是什么?”,“若是您想完成某小我物,您会点击什么?”之类的问题。设计始终需要迭代,是以或者要进行多轮用户测试,然后你的模型才有或者成为高质量的App。大公司平日在实现大型功能之进步行多轮测试。有时,甚至在还没起头写代码之前就会凭据反馈作废一项功能。用户测试很廉价。找5小我在15分钟内回覆问题就可获得5美元的礼品卡有多灾呢?独一要注重的就是能代表爱荷华州焦点小组意愿的测试用户。

 

接下来,你需要验证端到端的体验:必需安装并设置该App。民主党必需认识若何取得究竟。应用一旦歘状况,需要有备份规划。一次好的测试或者需要拉起“实践小组”,爱荷华州民主党的员工需要下载该App,并在给定日期申报究竟。这能够发现系统性问题或设定预期。实现功能中,这也能够分阶段进行。

 

值得注重的是,互联网上四处都是“拆台分子”,你需要确保这些不会干扰焦点小组。你能够验证收到的究竟来自爱荷华州焦点小组吗?此外,互联网上四处都是说谎的人,这些人会说谎并造成危险。它能够抵当拒绝办事冲击吗?若是不克,是否有一个后备规划?谁负责公布备用规划正在执行并将其传达给预备队?若是小我入侵焦点人群的账户会如何?若是公司内部没有平安专家,则有需要对运行焦点商议或选举的应用进行周全的第三方平安审查。



接下来,若何确保软件中没有错误申报或错误汇总究竟?同理,民主党也应该对你持猜忌立场:即使你的公司有“拆台分子”,民主党也能够对究竟布满决心吗?究竟应可经由纸质备份进行审核。

 

好的,暂停一一列举问题。你还需要大量时间和资源来验证此功能。

 

爱荷华州党团会议App的制造商被要求在2个月内完成项目,待遇是60,000美元。他们有四名工程师。6万美元基本无法支出四个工程师两个月的薪水和..,更况且还要算上所有买卖费用支出。金钱和时间不等价。他们也几乎没有任何外部匡助。

 

假设为了在划定时间完成义务,你遵循了删除和缩小义务的通用做法。你将尽一切或者节约时间。应用审核平日需要不到一天的时间,但最坏的情形是或者需要一周或未经由。是以,我们跳过这一点:焦点党团会议的工作人员将需要经由Beta测试链接下载该应用。即使平安审查是免费的,实施所有建议仍将破费太长时间。你没有进行平安审查。或许你会在设计办事器时向设计师支出1000美元来建造App模型和徽标。你将规划进行一轮用户测试(之后或者在时间表的压力下跳过这一步)。上线、迭代!横竖你能够鄙人一次党团会议之前修复就好了。

 

此外,写代码老是比你预期的更长!你老是碰到阻力。首先,干部小组的划定会有歧义。在将数字解决方案应用于模拟世界时,老是会发生这种情形:实际世界能够处理歧义和矛盾,而数字世界则不克。干部小组或者会针对这些的问题发布划定解说,而这会耽延时间。干部小组也或者在最后一秒钟更改划定。这会导致你在截止日期之前临阵点窜App。并且,多个斥地人员也会发生协调成本。每个编码人员是否对移动和办事器斥地都百分百写意?每小我都完全熟练地使用React Native吗?JS?打字稿?客户端-办事器通信?该选择哪个框架和库?每个“不”都邑增加斥地时间,以进行协和谐进修。每小我都对你用的测试框架感应写意吗?甚至你一起头写了测试代码,但后情由于App更改被删除。

 

时间不等人。2个月了,火烧眉毛,你必需要跨过终点线。

 

在网站经济模型中,在大火中跨越终点线是很好的。究竟,大火无所谓,你越过了终点线!你能够在几周内解决问题,然后转到下一个项目。

 

然则在爱荷华州的党团会议上,这把火很主要。薄暮时分,民主党焦点小组被投诉这个App的德律打爆。你获得的究竟是弗成能的或反复申报的。不久之后,软件工程师就起头高兴地流传漫画,呐喊着爱美国2020总统大选民主党候选人初选不应给这个App付费,而纸是独一值得相信的投票手艺。


我们学到了什么?


这篇文章让我有一点小我经验教训:在规划项目时,我需要确定重做的成本。曩昔,我凭直觉做这件事,但其实应该更明确点。这种形式化使得确定哪些义务无法牺牲变得加倍轻易。这相符我曩昔的行为;我曾经在移念头器人范畴工作,机械人项目实施周期长,故障造成的损失或者很高。我们花了好多时间来增加可视察性,并采用满有把握的方式来节制和完结失控的系统。我还在消费者网站范畴工作了十年,失败的后果成本更低。我更甘愿承担短期债务,并在碰到暂时故障时持续进步,尤其是在重做成本低且不太或者丢失数据的情形下。究竟,我很甘愿如许做。我们的行业也有解决这些问题的技能。“Premortems”就是一个例子。这些事我应该做得更多。

 

从积极的一面来看,软件工程专业以外的一些人会发现,有时软件项目的进展非常糟糕。政务流程应用斥地的投资人会问:“我们怎么知道不会发生和爱荷华州党团会议一般的情形?”他们或者会偶然发现一些试图教会非工程师若何招聘工程师的文献。例如,美国国防部有一个名为“检测迅速BS”的指南(PDF警告),该指南为非工程师供应了在商洽合同时检测危险旌旗的对象。创业者论坛四处都是非手艺身世的创始人,他们在这里追求(并收到)有关招聘工程师的建议。

 

软件工程行业什么也没学会。爱荷华州党团会议给了这个行业一个机会。我们或者将研究“昂贵的失败成本”假设下应若何改变我们的根基流程。我们不会抓住这个机会,我们也不会是以而成长。面向消费者的软件工程行业无法应对失败的风险。实际上,我们迎接失败的规划。若是外界对提高特定范畴的代码质量感乐趣,他们应该监视这些范畴。它不会是第一个:健康保险畅通与责任法案(HIPAA)和萨班斯法案(Sarbanes-Oxley)是影响网站经济模型公司工程手艺的律例案例。监管或者远远不敷,但倒是需要的。

 

然则,是的。这就是我们说的意思:“我不太知道该怎么做,然则我们整个范畴都对我们所做的事情并不擅长,若是你依靠我们,每小我都邑死。我们的行业在失败的价值很小,而且鼓励敏捷接纳动作的情况中生长。但当重做的成本很高或无法重做时,这套流程将无法施展感化。

 

原文链接:

https://www.bitlog.com/2020/02/12/why-are-we-so-bad-at-software-engineering/


本文为CSDN编译,转载请注明出处。

【End】

介绍阅读 
QQ 群文件紧要扩容;钟南山团队与阿里云联手推进新冠疫苗研发;PhpStorm 2019.3.3 发布| 极客头条
离你比来的疫情小区,终于能够本身查了!
☞蚂蚁金服AAAI收录论文曝光,动态收集剪枝方式、无语预练习的收集剪枝手艺有重大冲破
我是若何用6个月,从0编程经验酿成数据科学家的?
孟岩:疫情带来的暂停,会让区块链与数字经济迎来更大反弹|算力大学视频公开课全文
2.7 亿学生宅家上课,家长有定见了......
你点的每一个在看,我卖力当成了喜欢


猛戳“阅读原文”,填写中国长途办公-查询问卷

热门文章

  1. 双层双向钢筋怎么布置(地面双层双向钢筋怎么布置)2024-05-15
  2. 澳门开奖结果开奖记录2023(澳门开奖结果开奖记录2023年资料)2024-05-15
  3. 英雄联盟怎么观战(英雄联盟怎么观战)2024-05-15
  4. 承兑汇票计算器(承兑计算器票据系统)2024-05-15
  5. 【立人济世,品质二小】守护孩子上学安全的坚实屏障2024-05-15
  6. 代表风采丨孙永贵:为民用电器发展增智添力2024-05-15
  7. 早上好的日语(早上好的日语怎么说呢)2024-05-15
  8. 预计净残值率的计算公式是什么(预计净残值率等于什么)2024-05-15
  9. 野生葛粉多少钱一斤(野生葛粉多少钱一斤)2024-05-15
  10. 微动开关原理(微动开关原理电路图)2024-05-15
  11. 欧股主要指数收盘涨跌不一2024-05-15
  12. 夜读|成长型思维,成就更好的自己2024-05-15
  13. 吸尘器的原理物理(吸尘器的物理原理是什么)2024-05-15
  14. 洗碗机尺寸一般是多少(一般洗碗机的尺寸是多少)2024-05-15
  15. 虐杀原形之无限进化图片(虐杀原形之无限进化小说)2024-05-14
  16. 基金怎么买(基金怎么买入和卖出)2024-05-14
  17. 宏华数科:第二大股东新湖智脑拟减持不超1.9%公司股份2024-05-14
  18. 阿里巴巴:账上未来可用于股票回购的金额近300亿美元2024-05-14
  19. 道氏技术:公司在固态电池领域有较好布局,碳纳米管导电剂等已送样下游厂商2024-05-14
  20. 华伍股份:子公司长沙天映经营业绩持续亏损,公司拟转让其部分或全部股权2024-05-14
自媒体 微信号:ii77 扫描二维码关注公众号
爱八卦,爱爆料。

小编推荐

  1. 1 未雨绸缪,手机行业受疫情影响的破局之路才是关键

    疫情还没有彻底竣事之前,各行各业都邑受到分歧水平的影响,近日 MWC2020 也因为疫情作废了,此外一些手机厂商的新品发布会也被作废或许延期。当然,也有一些企业改为线上发布会

  2. 2 Markforged将纯铜引入METAL X 3D打印机

    美国的复合材料和金属3D打印机供应商Markforged已发布了与Metal X 3D打印机一路使用的纯铜材料选项。 经由在已经与多种金属材料兼容的Metal X系统上实现铜3D打印,Markforged旨在为客户提高

  3. 3 摩方发布微米级分辨率microArch 3D打印机

    2020年2月13日,南极熊从外媒获悉,微纳3D打印专家Boston Micro Fabrication(BMF 摩方材料)在全球发布了microArch 3D打印机。 microArch系统以前称为nanoArch,它行使公司专有的Projection Micro-Stereo

  4. 4 QQ 群文件紧急扩容;钟南山团队与阿里云联手推进新冠疫苗研发;PhpStorm 2019.3.3 发布| 极客头条

    整顿 | 屠敏 快来收听极客头条音频版吧,智能播报由标贝科技供应手艺支撑。 「极客头条」—— 手艺人员的新闻圈! CSDN 的读者同伙们早上好哇,「极客头条」来啦,快来看今天都有

  5. 5 美国Voatz选举投票应用发现漏洞 可能更改或暴露选民投票方式

    更多全球收集平安资讯尽在E平安官网 www.easyaq.com E平安2月15日讯,近日据外媒报道,美国麻省理工学院较量机科学实验室的学者近日发布了Voatz的平安审计而且流露了平安破绽,Voatz软件

  6. 6 钟南山指导研发快速检测试剂盒,15 分钟得结果;小米 10 系列国际版延期发布;美国政府指控华为敲诈和窃取商业机密|极客早知道

    钟南山指导研发快速检测试剂盒,1 滴血 15 分钟可获究竟 2 月 14 日,呼吸疾病国度重点实验室对外透露,近日,在钟南山院士的指导下,实验室结合多家研究机构,最新研发出新型冠状

  7. 7 416篇精选报告!2020汽车行业年度报告大全!!!全是干货!

    汽车行业416篇 顶级申报 大放送! 小编吐血整顿! 废话不多说,今天小编给人人分享416份汽车财富顶级申报,包含:智能网联、新能源、共享出行、区块链、后市场以及传统汽车财富…

  8. 8 并购 | 中际旭创拟收购储翰科技股份 初步估值5.7亿

    新 闻 导 读 光模块巨头中际旭创拟收购成都储翰科技的悉数或部门(最终不少于 51%)股份,收购订价初步估值人民币57,150万元。这将提拔中际旭创在全球数据中心与电信光模块市场的竞争

  9. 9 小米在技术研发上永远跟不上华为,因研发投入占比实在太低了

    小米预估2019年的营收冲破2000亿元,然而手艺研发投入仅有70亿元,研发投入占营收的比例只有3.5%,比拟之下华为的研发投入占比跨越10%,两者在研发投入方面的差距如斯大,也就难怪

  10. 10 想要证明自己最近14天没有到过疫情严重的地方?发个短信就能知道!你试过没有?

    2月14日,在工业和信息化部召开的媒体通气会上,工信部信息通信治理局局长韩夏称,今朝,三家根蒂电信企业凭据疫情防控的需要,在获得用户授权的情形下, 基于电信大数据剖析,

本文内容来自网友供稿,如有信息侵犯了您的权益,请联系反馈核实

Copyright 2024.爱妻自媒体,让大家了解更多图文资讯!