软件开发要以用户为中心
by yaobin.wen
老生常谈:软件工程师要学习和了解用户的目标,而不是自己去想象用户可能怎么使用。
昨天自己花了大概半天的时间优化系统中用来发送邮件通知的模块。优化的工作主要包含了两个部分:抽取公共代码;改善邮件的标题和内容的格式。
抽取公共代码这部分工作的确应该做,毕竟重复的代码是软件的万恶之源之一。但是,改善邮件的标题和内容的格式,最终被证明是失败的工作。
稍微说一下我们的系统中邮件通知模块的工作方式。我们的系统会把客户现场采集的多份数据拷贝到我们的公司内部来,供公司内部的数据分析工程师们做分析。系统每拷贝完一份数据,就会发送一封通知邮件。邮件的大致格式如下:
标题: 新数据拷贝完成
数据集名称: ... 存放路径: ...
无论数据集的名称是什么,邮件的标题都是一样的。邮件的内容也是普通的纯文本格式而不是HTML格式。
当我把公共代码都抽取出来之后,便打算把邮件的标题和内容格式都按照自己的想法优化一下。我当时想:
- 所有的邮件标题都是一样的,那邮件之间的区分度会非常低,用户必须点开邮件才能看到某封邮件具体是给哪个数据集的。不如把数据集的名称作为标题的一部分写进去。
- 邮件的内容是用纯文本格式的,很不美观,不如换成HTML格式,并且把信息用表格的方式呈现,会显得更好看。
可是,当我真地这样实现之后,数据工程师们并不买账,因为:
- 标题都一样没关系,邮件有搜索功能,搜索一下很快就找到了。
- 原来邮件标题一样的时候,邮件系统会自动将它们归类成同一个系列,折叠起来后看着很简洁。现在邮件标题不一致之后,所有的邮件都被当作是单独的邮件,一旦数据集多的时候,邮箱就会被塞满一大堆通知邮件。
- 数据工程师在收到通知邮件之后,会在另一个流程管理系统上创建相应的任务。当邮件内容是普通的纯文本的时候,他们只需要把邮件内容简单复制粘贴一下就可以了,非常方便。而当我改成HTML格式并且添加了表格之后,他们反而不能简单地复制粘贴了,因为非常不巧的是我们使用的流程管理系统恰好对HTML表格的支持很有限,我使用的HTML代码恰好无法在里面正常显示,于是他们只好一点一点地把邮件中的信息复制粘贴到流程管理系统里了。
- 更致命的是:我们之前是打算把这个通知邮件取消掉的。新数据可用的时候,直接在流程管理系统上建立相应的任务。也就是说,我优化了半天的邮件内容很快就没有价值了。
真是自己打自己的脸!做软件这么多年,其实非常清楚要时刻关注用户的行为。假如用户很难接触到,或许有时不得不凭借自己的想象去推测用户可能会如何使用软件。但是这个错误在我这里犯下的时候就显得很愚蠢和让人欲哭无泪,因为我的用户们——就是那些数据工程师们,每天都和我在同一个办公室,接触起来非常方便。我真地应该在动手做之前多去了解了解,比如和他们聊一聊我打算做的修改,看看他们的意见,然后根据反馈再决定如何去做。
Tags: Tech