要获得高质量的软件,请让它们失败

要获得高质量的软件,请让它们失败

你的职位并不重要。开发员、分析师、经理、测试人员,在某个时候,你决定成为质量的倡导者。你查看产品时,要考虑时间、预算和其他业务限制,并推荐修复方案,以便尽可能高质量地发布产品。

你对客户、利益相关者和决策者说这些,他们不想解决。

好吧,也许如果不能登录、搜索、或支付,这些bug将得到修复,除非它们仅出现在小众浏览器中。也许当用户打电话反馈问题时,客户支持现在可以说这是一个"已知问题",而不仅仅是感到困惑。不过,总的来说,你所做的良好测试工作并没有产生多大影响。

你发现了bug,并把它们记录了下来,讨论了这些bug,但什么也没变。尽管在测试上投入了大量资金,但唯一的结果是跟踪系统堵塞。

我们在做什么?我们进行更少的测试而只报告程序阻塞问题会更好吗?

也许。或者,我们可以讨论如何影响不在你控制范围内的结果。

权利与选择

大多数人都想变得更具权势。至少,他们希望能够做出自己的选择。展示权利的一种方式是不同意并赢得胜利。质量倡导者通过坚持修复bug来做到这一点,而对繁忙的生产业务感兴趣的人则通过忽视质量倡导者来做到这一点。

他们显得更具权势的唯一方式就是告诉我们“No”。问题在于你如何界定这个问题。

利益相关者可以通过为客户提供更好的软件而更具权势。通过在风险和回报之间做出更科学、更长期的权衡,他们可能是权势的。毕竟,五年后,没有人会记得软件是在一天或五天后发布的;他们只会记得它没有工作。

给你的客户选择。在进行此操作时,请减少其不确定性。把进退两难定义为“去”与“不去”,会在“不去”周围留下很多不确定性。提供一个修复计划,甚至提供两个,以这种方式概述这种情况:如果我们修复这些bug并进行大量测试,我们可以在这么长的时间内交付。

这些不是我的主意。戴尔·卡内基(Dale Carnegie)在近一百年前的《如何赢得朋友及影响他人》一书中建议人们要有影响力(他们也希望证明)。《计算机编程心理学》的作者杰里·温伯格(Jerry Weinberg)提出了三个规律基本上,如果你没有想到三种可能性,你就想得不够充分

只有一种选择,你会陷入困境。两种则是两难。但是,有了三种选择,你真的开始觉得自己有了选择。你的客户也会如此觉得。

失败的理由

我把这些想法定义为“船舶决策”。如今,与我合作的许多客户希望每天甚至每天部署几次。这也适用于单个功能或故事级别。

这种情况实际上更好,因为“延期”的痛苦将用几个小时来衡量,或者最多一两天。如果延迟几个小时以添加更好的错误处理功能(如,名称字段为空),则没有产品会失败,也没有人会倒闭。

但是,产品确实会因“破窗效应”而失败。

破碎的窗户,到处都是犯罪现场。但是,破窗效应更进一步:如果一栋建筑或一辆汽车的窗户破了,而且没有修好,那实际上会助长犯罪。毕竟,如果大楼或汽车没有得到维修,看起来损坏它不会有任何后果。

换言之,如果一辆车被遗弃数周,很可能没人会注意到。然而,一旦一个车窗被打破而没有修理,犯罪分子可能会认为这是可作案的对象,他们会走得更远,偷走收音机,拿走轮胎,污损它,等等。合法居民感到恐惧并撤离该地区,这使得更严重的犯罪活动得以迁入。

对此的另一个术语是“异常正常化(对异常状况习以为常)”,这是挑战者号航天飞机灾难的的公认原因。航天飞机有很多冗余之处,以至于出了点问题时,就成了放弃的惯例。NASA官员已经习惯了这些“异常”做法,以至于对它们变得不敏感。最终,这种情况经常发生,以至于违反规则变得很正常。种情况持续并升级,直至造成悲惨的后果。

异常正常化和破窗效应是团队处理软件bug的两种常见功能失调方式。基于破窗效应,一旦软件出现了bug,还有什么bug?基于异常正常化的情况,团队可能有一个标准,即任何阻止程序和严重bug都使其无法交付,然后他们会简单地争辩每一个bug是“主要的”、“不会被修复”、“按设计工作”、“可用性问题”等等。

改变结果

软件著作倾向于为确保质量规定两个极端。首先是有一个看门人,这会夺走其他人的权力。第二个极端是在任何事情上都要合作,这常常被翻译成“和睦相处”。

我建议第三种选择:教育决策者。向他们明确表明他们是决策者,同时提供所有相关信息并为他们提供选择。

与他们合作,探讨破窗效应和异常正常化的问题。拿出现实世界中的产品作为例子,这些产品足够好,高度可靠,或者“物有所值”(如,我曾经买了一副一美元商店的太阳镜,在我离开停车场之前就坏了)。

为你的客户提供思考工具,让他们做出正确的决定。阐明这些选择的长期后果。然后退后一步让他们做出选择。

当他们选择错误时

如果客户的选择在你眼中是错误的,那就没关系了。他们将不得不忍受。你预测了会发生什么,你解释了做出决定的后果,并确保客户理解结果,组织将有机会从错误中吸取教训。

现在是困难的部分。你必须闭嘴,而不是说“我早就告诉过你了”,坐在会议上,别人会把你的想法滔滔不绝地说出来,就好像他们想出了一样。之前跟你说“不,谢谢”的人也会向IT副总裁和CIO解释窗户被打破的原因。他们将解释为什么他们需要稍微改变策略,清理问题,放慢速度并修复一些bug。

这次他们甚至会听你的。

有时候,完成事情的唯一方法就是放弃权力。

译自Matthew Heusser的《To Get Quality Software, Let Them Fail》



留言