程序员编程序离开不了功能和界面。有的涉及界面多一些,有些涉及少一些,也有一些后台维护的工作甚至不涉及到界面。当前,一些软件公司专业化程度较高,不但设计和编程分开了,甚至界面制作和功能制作也分离开了,设立了专业的美工岗位。但是大多数单位和软件公司还没有出现这种界面和功能的分离。有关功能和界面那个更重要的话题,时常在很多程序员不经意交谈中流露出来。在工作中我也常常面对界面和功能开发安排进行选择。有人的强调功能重要,有人的强调界面重要;我自己有时会强调功能重要,有时也会强调界面重要。到底那个重要?在这里我想谈谈我对两者认识的过程。我想通过看看这个过程,这会对程序员进一步认识功能和界面的关系有所参考。
第一阶段:两者不分
在自己编程初期,真的没有什么界面和功能之分的概念,界面是都靠程序写出来的,总是感到功能和界面是一回事。那个时候的界面大都采用行字符形式,没有控件和图形,只有简单的线条和字符(包括汉字)。例如C语言主要是用move,print来实现的界面的。加上那时候用户对界面没有什么太高的要求,所以,我们根本不把界面当作一回事,只是把界面当作程序的一部分,而且当作一个简单的部分。
第二阶段:功能重于界面
后来,程序的功能慢慢多了起来,系统也越来越大了,用户的界面也多了。但是,当时的重点还是在功能设计和功能实现。项目组的主要精力和人员调配还是放在功能设计和功能实现上,当然界面也开始有人做了,单是没有人专门去做。人们普遍的看法是编程是最有技术的,编界面是很一般的。当时的客户最关心的还是功能实现,主要是看程序能不能实现他的功能要求。
第三阶段:功能与界面并重
再后来,随着windows兴起,各种图形界面运用而生,客户对界面的要求,不仅仅是功能实现,而且有美观、友好、易操作、提示、帮助等方面的要求。人机对话开始形成,界面开始形成了风格,形成了流行。这个时候进行编程,你就会不自觉地把界面当作一个很重要的工作,你不仅要考虑功能能不能实现,而且要考虑你的界面是否能被客户接受,你的界面是否友好。这就迫使你要注重界面设计、迫使你学会欣赏和评价用户界面的好坏。你要花很大精力去用于界面。而由于程序员那时专注于功能设计,对于转变至界面往往感到力不从心,很多人都会借口编程,而不敢碰及界面。但是,界面的重要性从此凸现出来了。
第四阶段:界面重于功能
再再后来,我发现界面很重要,有的甚至比功能很重要。当参加项目介绍的时候,当参加项目评选的时候,用户往往会选择界面美观的、界面友好的项目,尽管另外一个系统功能方面更优。用户往往首先从外表选定自己所爱。有的甚至对PPT的做的好的,给与更多的关注。
就如同人们吃饱了,要娱乐一样。吃可能基本相同,但是娱乐就各不相同了。这个时候娱乐可能就比吃更重要了,而吃,因为有钱了,有了吃的保证就不显得重要了。以前人们是因吃而吃,现在是因娱乐而吃了。功能和界面就如同吃和娱乐。
人们流行这样一种观念:功能大家都是能实现的,但是界面就很难说了。界面反过来决定了功能。界面这种重要地位和作用,很快让界面设计变成了专业,于是有了专业的美工,有了人机交互的概念和行业。
第五阶段:发现界面的本质。
我在反思自己对功能和界面认识过程,为什么有这样转变?这些转变说明了什么问题?记不得是
那一天了,我突然发现这种转变是程序主导者发生了变化,程序由过去的程序员主导已经变成了客户主导了。这就是说,原来我们编写的程序,编写的界面都是由程序员主观进行认可的,程序员是主体;而现在竞争加剧,导致整个社会开始面向的公众,企业面向客户的转变,反映在软件行业其中一个方面就是界面越来越重要。界面不仅仅是用户和计算机之间的接口和桥梁,更是反应了软件制作者对客户一种服务态度。界面的本质是客户。只有面向市场、只有面向客户,树立“以客户为中心”的理念,获得客户对界面对功能的青睐,我们的软件才能销售出去,我们的软件才能被用户所接受和使用,我们的功能才有意义、我们的界面才有意义,我们的程序员才能够生存下去。
我对功能和界面调度不是很硬性的,不是说谁谁更重要。在项目开发初期,我强调的是功能,功能为先,程序员应该先把功能设计出来,界面不要花太多精力,能表意就行了。当功能基本上开发完成后,我就会把主要精力放在界面上,关心界面的风格、关心界面的色彩、关心界面色彩的协调性、关心界面的美学的简明和平衡、关心界面风格的一致性、关心界面中用户可操作性、关心用户操作后的容忍性、关心用户的对意外出错的提示、关心界面向客户提供更多的联机帮助、关心界面向客户提供操作流程的易用性、关心界面使用通用流行的图标、关心界面是否不通过培训就能让用户正确使用等等。
这些方面有些是和功能是无关的,但是有些方面是和功能有关的,好的界面将会使功能更加丰富和合理。
我想寄语程序员的是:程序员要重视界面设计、不要把自己关闭功能编码的小天地内,要通过界面设计,拓宽自己的审美意识、增强自己的客户意识、换位重新审视自己的功能设计、让更多编程以外的知识来丰富自己的编程思想、扩展自己的编程视野,使得自己编程水平有着根本性的提高。
|