如何识别与修复软件中的问题
在我上一篇文章之后,一些人问道:“好吧,但你怎么知道哪些地方有问题?”
嗯,有些问题非常明显。你按下一个按钮,程序需要10分钟才能响应。这显然很糟糕。你每周收到100条关于某个特定页面用户界面的投诉——好吧,那也是个问题。
通常有一两个非常明显的大问题,这些是首先要关注的,即使它们需要大量的工作。例如,在Bugzilla 3.0之前,每次加载页面时,Bugzilla都必须编译每一个库和整个要运行的脚本。在较慢的机器上,这为每个页面加载增加了数秒的时间,在较快的机器上至少也要1秒。所以性能是Bugzilla的一个明显大问题。但更重要的是,Bugzilla的代码也很糟糕。每个人都在阅读它——因为人们经常在公司中自定义Bugzilla——而它是一团难以阅读、混乱的代码。
幸运的是,这两个问题有相同的解决方案。性能问题通过允许人们在Web服务器启动时预编译所有脚本,而不是每次有人加载页面时编译,得到了解决。为了实现这种预编译,我们必须进行大量的重构。因此,我们实际上通过处理代码问题来解决性能问题。
然而,完成所有这些工作花了四个主要版本(Bugzilla 2.18、2.20、2.22,最终是3.0)!在这个过程中,每个版本我们也修复了许多小问题,所以每个版本确实比前一个版本问题更少。但处理主要问题是一项巨大的努力——这不是我们一夜之间就能编码完成的事情。
我认为有时软件项目中的大问题没有得到处理,因为它们确实需要那么多的工作来修复。但这并不意味着你可以忽略它们。它只是意味着你必须为一个长期项目做计划,并找出如何在此期间持续发布版本。
在所有这些问题修复之后,我们可以将注意力转向其他地方,哇!结果发现,其他地方仍然有一堆问题!突然之间,出现了一批新的“完全明显”的问题需要修复——这些问题一直存在,但被前一批“完全明显”的问题所掩盖。
现在,我们可以永远这样继续下去——修复一组“完全明显”的问题,然后转向下一组“完全明显”的问题。但我们遇到了一个问题——当你突然发现你有五十个“完全明显”的问题需要修复,而你无法在一个版本中完成所有问题时,会发生什么?嗯,那时你突然需要一些方法来优先处理你要修复的问题。
对于Bugzilla项目,我们做了两件事来帮助我们优先处理:Bugzilla调查和Bugzilla可用性研究。
在调查中,最重要的部分是允许人们以自由文本形式回答针对他们个人的问题。也就是说,我亲自向Bugzilla管理员发送问题,经常根据他们的具体情况定制消息。没有多项选择题,只有促使他们告诉我们什么困扰他们以及他们希望看到什么的问题。他们实际上非常高兴收到我的电子邮件——很多人感谢我进行调查。
一旦他们全部回应,我阅读了所有内容,并编制了一个报告的主要问题列表——总体而言,这是一个令人惊讶的小列表!我们现在非常专注于这些问题,我认为这总体上让人们对Bugzilla更满意。
在可用性研究中,令人惊讶的是,最有帮助的部分是当研究人员(他们是可用性专家)只是坐在Bugzilla前,指出违反可用性原则的事情。也就是说,比他们实际进行的研究更有价值的是他们作为专家使用可用性工程标准原则的观察。我认为,他们是新鲜的眼睛——从未在Bugzilla上工作过的人,因此不会只是认为“好吧,就是这样”——这一点也很重要。
所以我们收集了所有这些数据,它确实帮助我们优先处理。然而,重要的是我们在适当的时候进行了调查和研究,而不是更早。在我们修复前几个主要问题之前,可用性和调查结果只会让我们不知所措——它们会指出一百万个我们已经知道的事情,或者很多我们当时根本没有时间处理的事情,我们将不得不在以后重新进行调查和研究,使所有时间都浪费了。所以我们必须等到我们到达问自己“好吧,现在什么最重要?”的阶段,那时收集数据变得极其重要和非常有用了。
所以总的来说,我会说,当你试图让事情变得更好时,首先处理你知道的前几个明显的大问题,并处理它们,无论需要什么。然后事情会稍微平静下来,你会有一大堆需要修复的东西。那时你去从用户那里收集数据,并努力修复他们告诉你的真正问题。
-Max
评论
Ben 说: 2009年8月22日上午7:21
除了明显的大问题之外,程序中经常发生的另一个问题是(我特别想到Windows),它们经常移除越来越多用户过去能够使用的技术功能。Windows过去允许你使用启动功能和系统工具进行各种个性化,以优化程序运行方式。新版本移除了用户可操作的大部分内容,这真的很糟糕。不知道他们为什么这样做。
回复
Max Kanat-Alexander 说: 2009年9月16日上午3:05
确实如此。我认为他们试图解决的问题是Windows太复杂了。但他们在错误的层面上攻击它——复杂性是根本的,他们添加了所有这些功能来让你处理复杂性(那些技术功能),而现在移除技术功能但不处理复杂性对任何人都没有帮助!-Max
Ape 说: 2010年6月12日上午3:08
“为什么软件糟糕”
一个讨论字面意思“糟糕意味着什么”的演讲
回复
Max Kanat-Alexander 说: 2010年6月12日下午12:56
那挺有趣的。-Max