Bugzilla性能优化与代码重构:如何识别并解决软件中的“痛点”

本文通过Bugzilla的实际案例,详细介绍了如何识别软件中的性能问题和代码质量问题,并通过重构和用户反馈机制逐步优化,最终提升整体软件质量和用户体验。

如何识别软件中的“痛点”

在我上一篇文章之后,有几个人问我:“好吧,但你怎么知道哪些地方不好呢?”

嗯,有些问题真的很明显。比如,你按下一个按钮,程序需要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

分享 点击在Facebook上分享(在新窗口中打开) Facebook 点击在LinkedIn上分享(在新窗口中打开) LinkedIn 点击在Hacker News上分享(在新窗口中打开) Hacker News 点击在Reddit上分享(在新窗口中打开) Reddit 点击在Threads上分享(在新窗口中打开) Threads 点击在X上分享(在新窗口中打开) X

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

回复

发表回复取消回复

联系 关于 书籍:《理解软件》 书籍:《代码简洁性》

输入您的邮箱… 订阅 © 2025 版权所有。由The Fox提供支持。 管理同意 为了提供最佳体验,我们使用像cookies这样的技术来存储和/或访问设备信息。同意这些技术将允许我们处理数据,例如浏览行为或本网站上的唯一ID。不同意或撤回同意可能会对某些特性和功能产生不利影响。

功能性 功能性 始终活跃 技术存储或访问严格对于使订阅者或用

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计