第二章 过程改进,没有灵丹妙药
第三节 2005年4月1日:“客户不满”
你总是在伤害你爱的人。我们必须真心诚意地爱我们的客户。我们把满是Bug的代码发布出去,尽管这不是什么大问题;我们延期交货,这不是什么大问题;我们对客户需求没有一个深入清晰的了解,并做到客户至上,这不是什么大问题;我们没有跟客户进行很好的沟通并达成一致意见,这不是什么大问题;我们没有很好地聆听客户的声音,然后把信息传递给该得到这些信息的人,同样,这仍然不是什么大问题。注意,真正的大问题是,当我们在折磨客户的时候我们常常浑然不知,也不知道我们做得有多恶劣,而到察觉的时候已经太晚了。
作者注:以上陈述我有些夸大其词,不过是为了增加些戏剧性而已。实际上,我们能够认真聆听客户的声音,并且把这种客户的意见集成到了我们的产品中,这方面我们做得很好。这甚至是多年来微软的一个巨大的竞争优势。尽管这样,随着软件市场的日益成熟,我们客户的期望也在不断提高。因此为了保持我们的竞争优势,我们必须继续改进。本栏目将讨论应客户需求的变动而变动代码的好处。
如果我们发布了没有Bug、高质量的代码,但它跟客户想要的东西不一致,那么客户会不满意。按时发布客户不想要的代码同样会使他们不满意。即使我们对客户需求有了一个深入清晰的了解,分清其需求的轻重缓急,我们发布的代码仍然必须符合这些需求,否则客户就会不满意。做好沟通与聆听并不够,如果我们最终无法交给客户他们真正想要的东西,一切都没有意义。
不知者无罪
实际上,良好的沟通和聆听反而会有害于我们。假设我们跟客户交谈了,了解了他们真正想要的东西。客户看到我们这么真诚会很高兴,以为我们真正了解了他们所要的东西。两年之后,我们交给客户一个解决方案,但它达不到他们的期望。结果是:
·客户很失望,因为产品并没有像他们期望的那样发挥功能。
·客户觉得受到了侮辱,因为我们浪费了他们的时间,我们燃起了他们的希望,最后又亲手把这希望之火扑灭。
·客户被激怒了,因为我们没有恪守承诺为他们服务,他们可能再也不会相信我们了。
如果我们一开始就不理会客户,至少我们还可以为这个错误找到借口。我们可以声称“我们不知情”。遗憾的是,我们确实知情,我们的确承认了,我们确实也承诺了。即使承诺没有以合同的形式确定下来、不具备法律效力,但承诺是实事,而我们没有守诺。
欲速则不达
你觉得这不会发生吗?错了!我们总是不恪守诺言。令人惊讶的是,我们居然还有客户。我们的销售人员与客户交谈,告诉他们我们的计划。我们的顾问拜访客户,信誓旦旦地说他们会与产品团队一起提供特定的解决方案。我们的市场和产品计划人员成立专门的工作组并告诉客户我们正在开展工作。
作者注:我说的“我们总是不恪守诺言”是指我们达不到理想目标。我们交给客户当初要求的东西,但并不完全符合他们所需要的。客户在看到产品之前并不知道他们想要什么,这也是为何敏捷方法强调迭代客户反馈的原因。我使用“承诺”这个词,是因为它对微软的员工来说有着重要的意义。我们很容易在我们的产品中犯些小毛病,但就是这些小毛病使客户头痛不已。我想让工程师知道这一点。
我们确实是在开展工作。市场机遇决定了我们产品的计划和远景。但我们与客户之间还没有形成一个良好的沟通渠道,除非已经太迟了,我们无法应客户要求再做改变。当客户在运行着的产品上点击某个按钮时,我们才意识到需要花时间去重新思考我们已经做过的事情,此时的天国之门已经关闭。遗憾的是,大部分情况下,在客户接触到我们的产品之前,我们已经完成了所有的编码。
作者注:这里让我来推介一下产品测试版和技术预览版,因为我在原来的栏目中没有提及它们(这是个严重的疏忽)。大部分微软的产品都发布测试版,但只有一两个,并且通常只在开发周期的后期才发布。然而,一些产品已经开始在早期阶段就频繁使用技术预览和测试版——这种做法我很喜欢。
实际上,当我们的产品出货之后,我们跟客户的沟通渠道做得相当好。Watson和SQM会向我们汇报信息,反映我们的客户在我们交付的产品上正在经历的所有糟糕体验。这已经向前迈进了一大步。我们修复这些Bug,然后在3个月或者3年之后再次发布产品,接着Watson可以向我们证明这些讨厌的问题是否已经消失。
作者注:当你的应用程序在微软的Windows操作系统上崩溃的时候,你会看到一个“发送错误信息”的对话框,Watson就是支持这个功能的一个内部称谓。(常常会有这种对话框弹出,并确实引起了我们的注意。)SQM也是一个内部技术名称,它通过匿名收集用户对产品的使用模式和体验,来支持MSN、Office、Windows Vista和其他产品的用户体验改进计划。(请你在安装我们的软件的时候加入这个计划,它会让我们知道什么工作得很好,而什么不尽如人意。)
但有些问题会导致我们不能守诺,扼杀我们的商业机会,摧毁我们的客户对我们仅有的一点点信任,这会是些什么问题呢?我们怎样才能在产品出货之前就发现这些问题?我们怎么能避免这些问题的发生呢?