来微软之前,史蒂夫·鲍尔默只在一家公司干过:在「一家最大的消费品公司之一」推销布朗尼粉和蓝莓松饼粉。
2002 年 10 月,已经是微软首席执行官的他给客户写信,一上来就提到了这份旧工作。他说,做消费品的人,靠千百万人每天买东西反馈回来的「海量数据」,慢慢摸清大家想要什么样的蛋糕粉、什么样的洗发水。软件没有这样的数据。程序卡死、崩溃了,客户很少打电话找技术支持,直接关掉了事,bug 就这么藏了起来。
微软 Office 部门的一个小团队做了一套办法,到 2002 年,它已经装进了 Office、Windows 和微软大多数主要产品里。程序一出错,客户就可以给微软发一份错误报告。鲍尔默坦白说,让软件像 E.T. 一样「打电话回家」是有风险的。微软为此设计了一种很小的报告格式,叫「minidump」,「点一下鼠标,几秒钟」就能传完。他保证,这些报告「除了找 bug、修 bug,不做任何别的用途」。
工程师看调用栈、看加载了哪些模块、看异常类型。一堆报告里,慢慢显出了一个形状。「大约 20% 的 bug 造成了 80% 的错误,」鲍尔默写道。接下来是让他「震惊」的部分:「1% 的 bug 造成了一半的错误。」
活儿的先后顺序就此变了。鲍尔默说,微软现在能给调试工作「排优先级」,换来客户体验上「最大的改善」。靠错误报告,Office XP 第二个服务包消除了一半以上的 Office XP 错误。Visual Studio .NET 第一个测试版里报上来的崩溃,团队记录并修掉了 74%。
这些数据也照到了别家公司的 bug。大约 450 家公司查过跟自家驱动、工具和应用有关的错误报告。鲍尔默说,涉及第三方防火墙软件的错误,从年初到写信时降了 67%。
七年后,微软工程师发表论文,介绍这套后来叫 Windows 错误报告的系统,那时它已经跑在大约十亿台电脑上。他们写到了这条曲线会怎么变:一个团队把用户最常撞上的 bug 一个个找出来修掉,一个服务包接一个服务包,曲线就慢慢变平。大洞先补上,之后每修一个,换回来的都比上一个少一点。