我们如何找出问题所在 » 代码简洁性
在我上一篇文章之后,有几个人问:“好吧,但你怎么知道哪里糟糕?”
嗯,有些问题真的很明显。你按下一个按钮,程序需要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
4条评论 留下回复
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
回复
留下回复取消回复