需求分析,解决你的技术瓶颈

今天看到一个网友提出的问题,如何实现ListView一次性显示几百行数据时页面不卡顿?

一直战斗在一线的程序员,第一个想法就是性能优化,通过GUI性能调优,虚拟数据,自定义滚动实现动态加载等方式解决此问题,但细思极恐,这样一个需求的提出,就算技术解决了这个问题,能带来什么价值呢?
(大数据的思想不是让更多的数据检索变快,而是让数据发挥真正的价值,无效的检索等于浪费时间)

[冷静]

我开始冷静,让我的头脑从技术问题跳出来,再来重新看一下这句话“一个网友提问XXX”,很明显这个网友要么是开发人员,要么是系统使用人员,并且很明确他不知道需求是什么,只是有这样一个目的。

[思考]

我们认真思考这句话的背后含义,说句实话,真TMD分析不出来。分析不出来就对了,我们不是福尔摩斯,不可能根据几个字分析一个人的心里动向和需求(天才除外)

[沟通]

沟通是最好的工具,当时我就问了这位网友:“你为什么需要这样做,你的目的是什么?”,他的回答让我很吃惊,“客户要求的”。这是很多开发人员都处于的状态,忘记里自己才是这个软件的创造者,记得要和客户沟通,将他的任何要求都改成他的目的,不要让客户左右你的方案和手段,客户能左右的是最终的结果,目的。
要经常问,你提这样的要求是为了达到什么目的?这个功能是谁在使用?使用的场景是什么样的?在什么时间使用?基本上就是网上常说的“Who”,“When”,“What”。

[猜测与指导]

有些时候可以猜测客户的需求,并且给他一些引导,比如上面这个问题,我猜测可能是客户觉得翻页太麻烦,并且展现起来不够“刺激”,但是客户也没办法一次性看这么多数据,可以引导客户实现下拉分页,每次还是展示十几条数据,需要分析的时候可以提供客户导出数据或者展示分析结果(图形胜过表格)。主动帮助客户解决问题,态度积极,并且保证自己的软件不被哪些“门外汉”左右了构造。

[故事时间]

这个问题让我想到了刚毕业时,自己带第一个项目,常住客户现场,客户对财务要求很多,开始的时候一味妥协,添加了很多奇奇怪怪的功能,导致整个系统成了四不像,最后客户居然提出来一个要把“金蝶”财务的功能集成到我们的系统里面,我才意识到,我错了,我们的系统是第三方物流平台,为什么被财务左右了呢?因为我迷失了自己,忘记了自己才是这个软件的创造者。

[总结]

需求不是一句简单的话,需求也不是客户让你做了什么,需求是客户想要什么,我们有义务并且义不容辞的去分析客户的需求,挖掘一个需求背后的意义,给客户提出有效的指导并且要确保软件的命运。

最后送给所有程序员一句话:不要把你的软件命运交给一个门外汉,因为他根本不知道怎么样开发。