在我看来,每当涉及GUI(图形用户界面)时,界面的外观几乎总是胜过应用程序的性能.
这是普遍现象吗?
足够糟糕的外表胜过任何级别的良好表现.
足够糟糕的表现胜过任何好看的水平.
这可以归结为目标受众的心理以及应用程序的体系结构.如果GUI快速响应并且以对用户而言(与开发者相对)直观的方式布局,则底层可能不需要如此好地执行.但是,如果用户想要从数据库中获取数据并且在数据加载时它们处于挂起状态,那么他们会感觉非常不同.比较2个Web应用程序作为示例:
应用程序感觉非常敏感,但在幕后,事情需要比表面上看起来更长的时间 - 它使用AJAX与Web服务进行通信.Web服务并不是最快的,但所有操作都发生在回调(异步)上,因此在填充字段时不会阻止用户.它不会妨碍他们的工作流程.在网络性能恶化背景性能的糟糕日子,确定它是显而易见的,但用户活动不会受到任何阻碍.
应用程序二感觉不太敏感.一切都发生在回发上,没有AJAX或Web服务,在一天的好,页面加载相当快.当然,在每次回发时,用户的工作流程在等待页面重新加载时受到阻碍.在糟糕的一天,网络性能导致性能显着恶化,进一步阻碍用户.
应用程序1不太可能得到投诉,因为即使字段没有如此快地加载,用户也不会被阻止.用户可以输入数据并继续前进.一切都是异步处理的.当然,在后台,Web服务进程实际上可能比整页刷新慢,但用户不会那么在意.
从数千小时编写软件并直接与我的用户交互 - 通常那些不一定像平均10岁的人那样具有计算机知识的人我已经注意到这些点是获得这样一个受众的接受的关键[来自用户观点]:
它必须按照我想要的方式做我想要的事情: 不要只是阅读规范并期望你的代码完全符合它在纸上所说的内容.真正阅读它在纸上所说的内容,并了解用户的意思.设计文字的基本含义而不是纸上墨水的黑白.如果你不明白我的意思,来和我谈谈,我会解释,直到你这样做.如果你提供的软件错过了我的全部观点,那么我会不会感到高兴.如果我真的想要了解我的感觉,我会感到更加快乐.
它必须协助我的工作流程,而不是阻碍它:如果我只需要按一个按钮来完成我之前需要花费一个小时的时间,但是如果它将我的计算机冻结20分钟就可以完成任务,我不会是一个快乐的露营者.
它必须直观易用:这意味着我不想涉及你没有提供给我的文档,以便弄清楚如何使用它.我也不想要一个20分钟的解释,我会在你走出门后3分钟忘记.设计软件使我10岁的孩子可以像编程PVR一样轻松搞清楚.这意味着我应该以一种对我来说合乎逻辑的方式与它进行互动,因为那个人每天都会使用它.如果它在功能上是正确的并不重要,如果我不知道如何使用它,我就不会使用它,更不用说它了.
它必须是响应式的:我不想单击按钮然后等待10秒钟才能加载列表,然后从该列表中选择一个项目,然后等待另一个屏幕加载,然后我才能选择要完成的操作在该项目上,然后需要5分钟才能完成.找到一种快速加载数据的方法 - 如果你无法快速加载数据以响应我的操作,那么找出一个技巧让它感觉数据加载速度很快 - 也许是通过在后台加载数据来实现的.只显示我所需要的显示响应我的行动......我的意思是,我不在乎什么你做什么,只是使它看起来像它很快这样做.
它必须是健壮的:我抛出它并不重要,它应该接受并继续前进.如果我做错了什么或在场地上放错了什么,请告诉我 - 简单英语!尝试打开文件时,我不关心在第479行引发的缓冲区溢出或IOExceptions.只是处理它并告诉我我用我理解的语言做错了什么.
给我文件:好的,我知道我不会读它,而且我更有可能拿起电话给你打电话,而不记得当你送给我时我把它放在哪里.但知道它的存在让我感到内心的温暖和模糊.它表明你对软件的关注度足够 - 而且我足够编写指令,当你不在时,我可以参考工作时间.
价格:这完全取决于您的受众,但根据我的经验,如果您满足以上所有要点,价格往往远远不如表面上看起来那么令人担忧.