我曾经说过,程序员不是普通人,而是拥有某种超能力的人。但问题是程序员往往意识不到自己的特殊功能。在他们眼里,他们认为自己很普通,就和普通人一样。因此,程序员可以做的事情,其他人——比如他们的客户/软件用户——也应该很容易做。但实际上,由于大多数人——大多数人(包括软件开发公司的客户/购买软件的用户)——都是计算机小白(对计算机知识/计算机知识/软件知识知之甚少的人)。一个对程序员来说显而易见的软件操作,如果换成用户,就会发生各种奇怪的事情。这让程序员非常痛苦。记得有一次,一个客户打电话给我,说在他的电脑桌面上找不到那个大e。没看懂,什么大e找不到?客户解释:那个看起来像一个大英文字母e的图标不见了。我倒。我终于明白他指的是什么了。桌面上的IE浏览器图标不见了。还有一次,客户提出要求在页面上增加搜索功能。我问他为什么要在这个地方加一个搜索功能,因为系统里面有搜索功能。他说他要的不是搜索功能,他要的是在这个页面上搜索某个关键字。进一步沟通后,我明白他要的是浏览器上快捷键CTRL+F的功能。由于用户的这些特点,程序员们认为最好的程序在用户手中变得极难使用,投诉电话像乡下的泼妇骂街一样响个不停。事后分析发现,根本原因是程序员高估了用户控制软件的能力,低估了自己创造软件的能力。这是一种荒谬的行为,如下图所示:在程序员眼中,这就是用户使用他们开发的软件的方式。如果你是一个脾气暴躁的程序员,遇到这种情况,难免会向客户抱怨,程序员的脾气一般都不是很好,所以在和客户沟通的时候,项目经理一般都会跟着,避免事态升级。虽然用户给程序员带来了很多麻烦,但其实程序员所有的荣耀感都来自于客户,因为只有客户使用满意了,程序员才会有成就感。比如下面这些客户在使用新软件时的表情,就足以让北京雾霾重重的午后程序员会心一笑:为了工作,没有任何个人恩怨。当有紧急任务需要开发软件时,他们会毫无怨言地加班加点。当发布的软件出现重大错误时,他们会深深地自责,连夜紧急修复错误。**满足用户的时候,他们不会想茶、饭、睡。即使在短期内没有彻底的补救措施的情况下,他们也会想出一些歪门邪道,也是让用户暂时渡过难关的有效方案。例如,这里有一个紧急修复:紧急修复用户应该为程序员着想。程序员的生活其实是处于一种非常矛盾的状态。编程不像其他行业,比如泥水匠砌砖。砌一层砖,墙就高了一次。但是编程是不同的。有时候一个程序员写了一天代码,满头大汗,但是开发进度不一定进步,有时候甚至会倒退。软件编程是一个既虚拟又真实的世界。有时你想不通一段代码为什么有用,有时你会惊讶这样的代码组成的软件也能跑起来,如下图:软件书里有鬼,我来说说一些与程序员打交道时的注意事项。程序员对因果关系特别敏感,因为他们整天都在处理编程逻辑。如果你的话因果关系不是很清楚,就会让他们迷惑,如果你的话因果关系不完整,就会让他们做错事。如果你的话里有if,用then结束***后,或者用else给出选择,主语要清楚。如果看不清楚,就会出现下图的意外:程序员是这样理解这个牌子上的字的如果你是程序员,你会明白我说的。本文来自:http://www.vaikan.com/how-client-use-their-software/
