软件的设计有一句常说的话,要把用户当做笨蛋。
但是,过去用户是笨蛋,用户就永远都是笨蛋吗。
为了把用户当做笨蛋,我们用程序把用户控制得死死的,一个年龄的输入框,我们要TextChange的时候判断是不是数字,是不是整数,是不是正整数,是不是在0-120岁之间。界面上控件的Enable,Disable控制得无比精细。一个ID输入框只允许输入数据,然后那天需求变了,能输入字母,客户端又得改。
我们的程序逻辑很大一部分都是在处理这些用户故意做错的情况。
有时我想,我们的程序是给需要用的人,还是故意做错的人。
有人把这叫细节,也有人追求简洁。
在大家的电脑水平都已经提高的情况下,用户需要的是怎样的价值,用户关心的是这些我们精心实现的细节吗。
但是,过去用户是笨蛋,用户就永远都是笨蛋吗。
为了把用户当做笨蛋,我们用程序把用户控制得死死的,一个年龄的输入框,我们要TextChange的时候判断是不是数字,是不是整数,是不是正整数,是不是在0-120岁之间。界面上控件的Enable,Disable控制得无比精细。一个ID输入框只允许输入数据,然后那天需求变了,能输入字母,客户端又得改。
我们的程序逻辑很大一部分都是在处理这些用户故意做错的情况。
有时我想,我们的程序是给需要用的人,还是故意做错的人。
有人把这叫细节,也有人追求简洁。
在大家的电脑水平都已经提高的情况下,用户需要的是怎样的价值,用户关心的是这些我们精心实现的细节吗。
我觉得软件客户端可以管得松一些,Server控制得严一些。需求有变,Server改改就行。
我只是希望软件可以简洁一些。
用户是傻逼
你不为这些傻逼做些预防措施,到时候你会遇到这样的事情:
用户:这是什么傻逼软件,年龄竟然可以输1000岁,我CTMD哪个傻逼程序员写出来的!
因为这世界聪明人毕竟还是占少数!
就看看微软开发的wndows操作系统你就会明白!
你觉得委屈,
你可能会想:难道你是SB吗,哪有年龄是1000的,你怎么输的
其实用户也在想:难道你们程序是SB吗,哪有年龄是1000的,为什么不提醒我
骂程序不也就骂写代码的人吗
你说这种情况到底谁是SB呢
反正我觉得如果我没有进行控制我就是SB
软件一会儿弹出一个框让用户确定,这是最差的用户体验。用Tip提示还稍微好点。
你怎么知道用户是输错了还是真的故意乱输,就像你输IP的时候,输了大于255的数字一样,OK,直接当成255存进去,你知道后果吗?
用户是给软件用的,你就是要让软件给用户舒服的、方便的感觉。
我们开发的时候要设身处地的为用户着想,这里会不会输错,输错了会怎样
怎么让用户操作起来如行云流水,尽可能少的减少用户再鼠标和键盘之间的切换等等
而不是把客户摆在一个傻X的对立位置。我们对程序的一些限定和判定,不是因为用户"傻X"到输入一些不符合规定数值
而是防止非刻意地错误,没有人会故意做错的。
而这些情况是我们一般开发很难体会到的。
比如说银行业务繁忙时,业务员甚至连屏幕都不看。操作完一个步骤就是一个回车。
而且万一有一些错误数据(比如说不是单纯可以看出来的,而是逻辑上的一些问题)会导致产生业务上的错误
那损失也是很大的
现在的UI是很高级了,可以单选多选下拉上拉的,但是你看银行的界面很多还是DOS界面。
我们是该BS他们落伍吗?
银行金融对IT的投资向来不吝啬,但是也是要以好用实用为前提。有时候我们操作淘宝,很多用户体验是很棒的,贴切地让我们赞叹
我想如果淘宝如果把我们用户当做傻X,那他们也断然做不出这样的体验来。前面有朋友说到某软件经理可以水来土掩兵来将挡,确实是有这种情况,但这个只是侥幸罢了。
如果换了项目,换了客户,是不是还有这种好运气呢。话说回来,不说客户说自己。
如果明知自己的程序没有经过严格校验,那么自己就不担心客户出问题,甚至产生重大损失吗?
如果这样,软件交付以后不是完活后的轻松,而是每天更会多了忐忑不安。
我们是框架和开发工具的用户
再聪明的开发者也不至于把所有TextChange、Enable之类的方法都自己实现吧
做软件没有人不希望用户满意。
校验只是一个举例。是不是所有的校验的要求都是一个级别,银行系统的校验和社交网站的用户信息的校验级别是不是一样,对客户的价值是不是一样的。
对于细节,我会尽力去让TabOrder符合用户的习惯,让用户不用动鼠标,如果这对用户是有价值的。
其他人说的崩溃的问题,一个系统如果因为用户输错了个东西就崩溃,那也设计得太差了。
如果真想搞破坏,用脚本模拟个错误输入还不容易吗。
所以这东西也没办法说,只要用户OK,全OK。
这种用户不关心的价值的地方,用户填错了,给个默认值让它完成注册为什么就不可以呢。
校验是分级别的,一个Email,你可以校验格式,也可以校验他的真实性。
但是不是每个地方都需要提示用户,输入真实的邮件地址。