这样的场景你是不是很熟悉?客户让你做一个软件,你需要他给你写出需求,当它给你写出需求后,在你认为时间非常紧的情况下,你辛辛苦苦,加班加点,费劲九牛二虎之力,最后赶在最后时刻给客户提交了,你满怀希望等待客户给你的表扬,你万分坚信领导对你的辛苦会给予高度认可和鼓励,你觉得很快就要戴一朵“小红花”时,最后你得到的是绵绵无绝期的等待,甚至是客户的不满意,这是为什么呢?这种情况在我的团队里也会出现,有时候我让改一个东西,经常得到的回复就是:"客户就是这么要求的,而且描述很清晰,不能改!", 最后如果不改的结果就是客户不满意。
为什么我们听客户的,客户却不满意?
我们的很多程序员一般是这么工作的,客户说我需要一个 “杯子”,然后程序员就在网上或者生活中搜索杯子,于是程序员就得到了很多杯子,现有市面上的各种各样的茶杯,各种各样的酒杯等等,这时候程序员就按自己的喜好选中了一个杯子,聪明一点的程序员可能会衡量一下制造不同杯子的时间成本,选定以后就开始进行模仿,最后你没日没夜,加班加点终于把杯子做出来了,客户会说:怎么会做一个这样的杯子要这么久时间? 因为市场上已经有人做出来过,所以客户就会觉得照抄应该很快,其次客户会觉得这个杯子不是他想要的,如果是抄一个别人一样的杯子,那为什么不直接买一个呢?
实际上,客户说要一个“杯子”, 他要的不是一个杯子,他要的不是用来装水的,这个就像我们对一个女孩说:“我想和你一起看明早的太阳”,我们都知道他要的不是白天而是夜晚,不是吗?
所以,当客户说要一个“杯子”时,他要的不是一个“杯子”,因为“杯子”只是一个名词,显然客户要的不是一个名词,而是一个"动词", 所以我们要想到的是这个杯子用来干什么?我们脑子里要想是不是几个老人在喝茶?一对情侣在喝咖啡?一个婴儿要用来喝奶?还是单身狗要用这个“杯子”?
可见,当客户要一个“杯子”时,他要的是一种场景,一个动态的场景,一个有人使用的场景,这个场景就是用户体验,你想想老人喝茶的杯子和单身狗要用的杯子能一样吗?
这个还是那句话,就是“为什么你都听客户的, 客户却不满意?” 我举个简单的例子,你生病了,你到医院去看病,你告诉医生怎么给你治疗,有的人甚至是在网上查了查资料,或者曾经有别的医生给这个病开过药方,然后你给医生说你要吃什么药,还有的人拒绝血常规检查,最后他的病要么没好,要么拖的时间很长, 最后你就你现在的客户一样对医生还非常不满意。你想想你的客户给你提需求的时候,是不是有的时候就和这个病人一样?
为什么医生会对你说 "NO" ,甚至不管你了呢? 因为医生比你更知道怎么治疗,如果按你说的肯定是不行,那么回到程序开发,软件设计上,做一个程序员或者高级软件开发人员,为什么不能给客户说 "NO" 呢?因为我们比客户更知道怎么开发,我们比客户对软件更专业不是吗? 敢于说 "NO" 恰恰是我们专业的体现,是我们对客户最有用的价值。
当然,我们不能简单粗暴的对客户说 "NO", 由于我们对软件更了解或者说更专业,我们就可以给客户一些更好的方案,由于客户对技术的不了解,经常会提出一些既耗时又非常“愚蠢”的方案,那我们需要利用我们的专业知识来告诉客户什么是更好更省时的方案,有的时候需求稍加改动会让客户体验更好,而且开发更快,我相信这样的场景在不同的项目里有很多。
所以,当我们拿到客户需求的时候,我们不是卷起袖子就开始编码,而是第一步想想客户要的到底是什么?他说的真的是他想要的吗? 他想要的说了吗?我们需要知道客户的项目的愿景是什么?我们需要站在整体的角度,站在更 High level的角度来看需求。
举个例子,我曾经做过的一个项目,客户说要做房间预订,还要分淡旺季,还要有促销价格, 还有内部员工不同价,团队当时想的很复杂,想到了像艺龙那样的,但是当我去了客户那边了解后,他们只有5个公寓而已,而且只是给集团员工别的地方来的提供住宿从而计入别的分公司成本而已,我觉得hard code出来一个版本都够用好几年,而且这样的话,原来的估计至少得半年以上吧,当你清楚客户最终需要啥的时候最多两个礼拜就弄完了。
总之,听客户没错,但是无脑的听客户的,完全听客户的就有问题了,就像如果你完全听你媳妇的,然后她错了后,她会说:“我让你那样做,你就那样做吗?你自己脑子是干什么的!”
至此,我希望从此大家不要再觉得客户说的需求总是 “丹书铁券”。