在采访Werner Vogels(亚马逊的首席技术官)的过程中,他描述了亚马逊的开发人员是如何跟他们的用户保持沟通的:
记住,我们的大部分开发人员都跟客户保持着良好的接触,因此他们对“客户喜欢什么”、“客户不喜欢什么”、“我们自身还有什么欠缺”有着相当好的认识。
我们从客户服务部门得到了非常多的反馈。很多亚马逊的员工必须每两年被调去做客户服务工作;他们要接听客服电话,回复客服邮件,以此来了解他们在做技术人员的时候所做的工作造成的各种影响。这种做法的效果非常好,因为他们开始认识到我们的用户并不是具有很强技术背景的工程师。恰恰相反,你可能会接到一位老太太从图书馆电脑前打来的电话,说她看到她还在大学读书的孙子对亚马逊上的东西很感兴趣,她想帮他买……
客服统计数据也是一个很好的早期征兆,它让我们知道是否我们在某些方面做得不对,或者我们的客户究竟在哪些方面痛苦挣扎着。有时候,我们在开会时会引用“来自客户的声音”——一个关于某位客户如何使用特定的某个亚马逊服务的真实故事。这可以帮助管理层和工程师联系实际,牢记他们的技术是真正地要为人服务的。
人们一不小心就会掉入象牙塔式软件开发模式的陷阱。很多时候,软件开发者对他们的代码来说只是匆匆过客。当然啦,代码是他们写的,但他们并不会像他们的客户那样经常性地去使用。虽说他们也会时不时地回过头去看看,但他们缺乏用户的视角,也无法理解用户,而这些用户却要伴随着那个糟糕的软件度过他们每一天的生活(不管是自愿的也好,被逼的也罢)。结果怎么样呢?问题成堆,而且难以沟通!客户的声音是那么地微弱,仿佛是从遥远的天边飘过来的……
译者注:象牙塔(Ivory Tower)一词出自圣经《旧约雅歌》,原本只是用来赞美新娘美丽的脖子,现多指脱离现实生活的梦幻境地。
在跟客户碰面的时候,你何曾不想大大缩减时间去谈论他们在使用你的网站或软件时碰到的问题。你还记得上一次出现这种情况是什么时候吗?
把开发人员带到客户的“战壕”里去是至关重要的,因为开发人员交付代码之后,客户才是真正与代码休戚与共的人。如果你对你的用户和客户缺乏最基本的认识,那你也不可能做出贴心的软件来。而如果想要了解用户,把开发人员推到一线去做支持是再好不过的办法了。我并不是建议所有的程序员都要身兼数职:既做技术开发,又做客户支持。那样只会让人失去专注而一事无成。但像Vogels先生描述的那样,让开发人员短期轮换着去做客户支持,奇迹就会出现:你的软件的质量和可用性会得到大幅的提升!
狗粮难食!但去做一下短期的客户支持却并不难。软件开发人员应该与客户患难与共。我知道这话并不动听。但是,如果你不身体力行地去表现帮助客户有效使用软件的意愿——更重要的是,弄明白他们为什么需要帮助——你不能算是真正完成了软件开发!