每个人即使消费者,也是生产者。我们一边自己生产着某些产品,一边使用着别人生产的某些产品。我们经常会吐槽别人生产的东西“难用”,也会经常被别人吐槽说自己生产的东西“难用”。

其实很多事儿并不是“难用”两个字可以说清的。这里面其实有好多细节和层次,如果仔细想想很有意思。

难用吗?

比如说,你做一个信息管理系统,如果用户记录了某个数据,但是不允许修改,这对用户来说,就让他感到很“难用”了,遇到输入错了的情况不让修改,这太难用了。

难用也只能这样!

用户这么想很正常,但是如果了解到这个数据是一个“库存调整”数据,就是入库、出库、调整库存等等的操作,就不是这么简单了。下面举例来自一个真实的案例。

比如某个书库里有很多图书,每本图书都会有一个库存字段,这个库存字段会变化,比如书库了、发货了等等。但是对于信息系统,你肯定不能简单地在每次库存变化的时候仅仅更新一下这个数值字段。因为这是“库存”!它和实际库房中的货物是实际对应的,此外,我们不仅需要知道当前库存,还必须能够随时了解从最初的库存数值(通常就是0),到最终的库存数值,是怎么变化过来的。

enter image description here

这样,当发生了某本书信息系统中的库存数量和实际数量不符的时候,是可以逐个操作查看,找到问题出在哪里,当然前提是每个操作也是可以核对的。

因此,在这种机制下,每本书的库存字段是永远不会直接修改的,而是每次发生库存调整的时候,去修改的。更重要的是,这种记录方式实际上就像记日记一样,不能随意修改。如果能够随便以前的记录,这种机制就失去意义了。

因此,如果用户说这个功能太难用了,都不能修改,其实说明他还没有理解这个数据的特殊性和这种机制的原理。这种机制下,永远不能修改/删除存在的记录,只允许添加,因此万一错了,就在增加一条记录,说明一下上一条记录的错误,弥补一下,就可以了。这样做,虽然是不够方便,也不太好看,但是从功能上说是可行的,至少可以保证不会把数据搞乱。因此可以一说,这种“难用”就是不得以但是必须的做法。

也不一定啊!

但是,再仔细想想,这么做确实也是有问题的,比如本来某次入库100本书,写成了 1000 本,和-900 本,确实不太好看,而且也不符合实际发生的业务。

那么有什么更好办法吗?其实也有办法!

方法一:

设定一个时间窗口,我们要防止的是录入错误,录入错误通常都是很快就能发现的,因此比如说设定5分钟的窗口,如果在5分钟以内,可以修改,超过5分钟,就不再允许修改了。这种修改带来发生危害性的篡改历史数据的可能性几乎没有了。

因此,如果这样做,就可以很大程度上解决上面说的“难用”问题。实际上,比如说在图灵社区上的评论和回复,也应该这么处理的,为防止笔误,可以在发表后的几分钟内修改,再晚了就不允许修改了。否则比如两个人在争论问题,一方发现自己以前写的不对,被对方指出了,自己偷偷把自己写过的东西修改掉了,这样就不好了。

方法二:

用户分级,比如分为操作员和管理员,操作员不允许修改,如果要修改,需要找到管理员来修改。这是基于对于管理模式的匹配。我们在很多超市,经常看到这种模式,如果收银员收错了钱,他们就会叫来一个另外的人,刷一下,或者登录一下,然后再给顾客退款。

但是,无论用什么方法,这也是有成本的,增加了开发和使用的复杂度。因此,是否要改进,何时改进,也是需要评估的。

所以,很多东西,仔细想想,一波三折,很有意思。