代码改变世界

最近老在触动我心底的一些东西

2009-05-23 18:02  横刀天笑  阅读(3639)  评论(21编辑  收藏  举报

最近看了一本书,一本关于交互设计的书:《交互设计之路》。其实这本书以前就看过,但那次没有多少感触。现在重温一遍却觉得以前我做的也许错了。这也逼迫我重新思考什么样子的软件才是用户需要的软件,用户喜欢什么类型的软件。

以下仅仅拿我自己所在的行业说事

 

我目前是从事石油行业的软件开发,在这个行业有很多高端软件应用领域,如:数值模拟,油藏模拟。这类软件无论从专业角度、从计算机技术角度复杂性都很高。从个人来看,他的复杂性和技术性一点不比计算机领域中的操作系统等低。而且纵观目前国内油藏模拟软件市场,几乎被国外软件占领。究其原因,可能是这类软件需要公司消耗大量的人力、物力投入研发,而且研发时间太长,小一点的公司根本耗不起。因为这种高端软件的特殊性,今天我不考虑它的交互性如何,因为选择太少,即使它的交互性很差,你也不得不使用。

 

除了这些高端领域以外还有一些2D制图,比如构造图、井位图、等值线等,还有根据油田运行状况的一些曲线图。其他的就是信息化类软件,比如报表等。这类软件技术含量不高,但与专业联系紧密。需要石油专业领域人员悉心的指导,与他们详谈才能开发出优秀的软件。

我想油田信息化应用也许可以分为这几个阶段(大概也适用于其他领域):

1、大家都无软件可用,所有曲线、数据全部绘制在纸上。

2、出现了Excel,大家可以利用Excel计算各种数据,绘制曲线图。

3、专业软件开始出现,但是苦于没有数据库,这个时候石油行业也看出了这种情况,如是制定了一些数据库标准。

4、但是数据库并不完整,数据状况及其恶劣,专业软件没有考虑这种状况,而且这些专业软件仅仅是将Excel的手工劳动转变成自动的。

 

其实目前大部分石油信息化软件就处于这第四个阶段。大部分软件(包括我们自己公司开发的)都仅仅是一个工具,简化石油工程师绘图,制表的工作量而已,而这些工作他们以前在Excel里就已经做的很好了。而且Excel更灵活,更能满足各种千奇百怪的需求,而专门开发的软件好像呆板,啥都来自数据库,数据库傻了专业软件也就傻了。

下面我就一个现实的软件应用来表明心中一些想法,实际上我也不能清晰的阐述我心中正确的想法,所以描述也许很混乱,所以期望各位看官不要见怪。

就拿油田开发动态分析之类的软件来说吧,现在国内已经有很多各种各样的开发动态分析类软件。但都是工具软件,比如基本上所有开发动态分析类软件都有一个功能:油井开发曲线,就是按照时间,将油井的各种数据(油压、流压、日产油、日产水、日产气)等绘制在曲线图上。这种低技术含量的东西,只要按照石油公司标准,应该很快就可以开发出来,但是我觉得好的软件并不限如此。

 

第一:要让这个油井开发曲线好用,这种开发曲线基本上是油田开发动态的工程师每日的要看的第一个东西,那么这个功能就要简单直观,能即开即用的展示这个曲线,而且曲线的颜色、大小、要显示或隐藏哪些曲线要非常迅速而简单的调整。

开发软件的往往都是程序员,而程序员使用惯了开发的IDE,往往也把这种IDE的范本移植到他所开发的软件当中,比如,我以前对设置这类曲线的颜色、大小等等属性就喜欢用.NET的PropertyGrid,即简单,又“直观(个人觉得)”,但是修改颜色、大小这些是工程师常用的功能,还有很多属性不是常常需要修改的,将这些常用的和不常用的混在一起就有点过犹不及了。

第一条要说的就是,好的软件应该操作方式简单,遵循使用者的使用习惯或者常识,不要将开发人员的惯性思维强加到使用者身上。那是不是满足这第一条的软件就算好的软件了呢?当然不是。

第二:除了软件要直观好用外,我们还得了解软件的目标人群的专业领域,也许这就是《交互设计》这本书中的“目标导向”的设计这个概念吧。

虽然开发动态工程师每天都要看这个油井开发曲线、这么关注这个曲线,那她看这个曲线的目的是什么?大部分软件都仅仅将这类曲线作出来,展示出来,但都不再关心工程师为什么要看这个曲线,看这个曲线是为了干吗?如果她看了这个曲线以后发现了什么她又会干吗?

对于这第二条就需要了解石油的专业知识。如果每天的曲线都一如既往,平平淡淡,那开发工程师当然没有必要继续深究下去,如果某一天含水量突然上升、压力下降或者产量突然下降,这个时候石油工程师肯定就要进一步研究了,含水为什么上升?产量为什么下降?这两个问题不仅仅是石油工程师要问的问题,我们的行业软件开发人员也要问这个问题。那我们要做的不就是让软件能够帮石油工程师更快的发现问题,更快的找到问题所在么。

第三:改变以前的想法。程序员往往很重视自己开发的软件的质量,比如容错性,总是期望他能运行无穷次。但其实,任何软件都不可能运行无穷次。而为了追求这个目标,我们往往忽视了重要的东西,而把精力消耗在一些看起来重要实际并不重要的东西。还是拿这个曲线说事。我们往往关注这个曲线能够绘制多少指标出来,而且软件的宣传单里总是宣称:我们的软件能够绘制一切是数据的指标。但是石油工程师真的需要这么多指标么?那我们为什么不把石油工程师迫切需要的一些指标做好,做精呢?还有一个,我们如此关注这个油井的曲线,但是绘制油井的曲线需要从茫茫的数据库中查询那么一些数据,但实际上石油工程师是不是需要关注每个油井的数据?不是,只是当发现这个油井出现异常的时候工程师才需要进一步了解这口油井的详细资料,那我们为什么不以最快的速度告诉石油工程师一个区下面哪些油井大概发现了异常?比如大概产量下降了百分之多少?程序员总是善于做精确的事情,而不善于做这种大概的事情。

当然好的软件还有其他的特质,比如:美观大方,看起来顺眼、性能卓越,不是打开以后就假死。

 

实际上心中想到了很多、很多却不知从何下笔。打算将这本书作者的另外一本著作《交互设计精髓》看完之后,好好的思考一下关于交互设计的想法,如何开发出更好的软件。