本文主要是介绍控制周围环境能使你开心,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Joel on Software
控制周围环境能使你开心
by Joel Spolsky
Monday, April 10, 2000
User Interface Design for Programmers 第一章
原文链接 http://www.joelonsoftware.com/uibook/chapters/fog0000000057.html
我所认识的很多中坚C++程序员讨厌做界面编程。这使我很惊讶,因为我发现UI编程很简单,直接,而且充满乐趣。
这很简单因为你不需要熟练的使用算法,只需要知道怎么把一个矩形放到另一个矩形的中心。这很直接是因为当你犯了错误,你可以立即看到和改正。这充满乐趣是因为你写的程序可以直接看到。这能让你感觉到你直接雕琢你的代码。
我想很多程序员害怕UI编程源自他们害怕UI设计。他们认为UI设计就像图形设计:这是神秘的流程,由那些有创造力,喝着拿铁咖啡,穿着有趣黑衣服的艺术家生产的艺术品。程序员把自己看作理性的,有逻辑的思考者:善于推理,不善于艺术评断。所以他们认为自己不能做UI设计。
实际上,我发现UI设计相当简单而且有条理。这并不是神秘的东西,不需要艺术学校的学位和奇怪的嗜好。有一些简单的符合逻辑的规则可以使你以合理的方式思索界面,这些规则应用在任何地方以使你改善程序的界面。
我接下来不是要介绍"UI设计中的禅与艺术"。这不是艺术,也不是佛学,这只是一些规则。一个理性的有条理的思考方式。这本书是写给程序员的。我假设你不需要一个怎么创建菜单栏的说明;相反,你需要考虑把什么放进菜单栏(或者是否需要菜单栏)。我会教你一条知道你设计优秀界面的公理,而且这一点也不难理解。
我第一个真正的工作实在一家大的,面包工厂。这家面包厂有六条面包生产线。每两个生产线中间有一个揉面机,可以生产180kg的面块输送给左右两边的生产线。
这是设计图。实际上,揉面机C和生产线3,5还没有建造。因此是这样的:
这使得读者想知道:"怎样使揉面机B的面块输送到生产线6?"这时候Joel就登场了。我的工作就是站在揉面机B的左边,然后用一个巨大的类似带着轮子的浴缸接住180kg面团,然后把浴缸滚到生产线6那里,然后用类似绞盘的设备把面块放到生产线6上。我必须每10分钟做一次,做到早上10点到下午4点。
还有其他的事情。生产线6并不能一次处理180kg的面块,我必须用一个巨大的刀把它切成10块。我甚至不想描述这个都多么难。
一开始的几天,当然,我做得很糟糕。这工作看上去几乎不太可能完成。我身上的每块骨头都痛。我的水泡上都长了水泡。我身上很多部位疼,甚至我都不知道我身上有这个部位。
一开始,我做不到一直给生产线6提供面团。每次面团的供应中断,都会引起生产线的很大的空隙。当空隙进入到烤箱,烧面包的烤箱会开始加热。有时候,生产线6会黏住而停止生产,但是揉面机还是会继续给我生产面块,我必须冒险清空这个带着轮子的浴缸把面团接住。当发生这种情况,我实际上不得不清理地板给地板涂油,然后把面团转移到地上稍后再刨起来。如果不是这样这工作很好完成,因为如果面块出来超过30分钟就会发酵,使得生产不出好的面包。如果发生这样的情况,你必须把面块切成5kg的小块重新放到揉面机中。
一个星期后,我就能很好的转移面块,如果的记得正确的话,每10分钟的面块循环中能休息2分钟。我总结出一个精确的时间表而且学会了当生产线停止如何使揉面机跳过下一个面块。
我开始思考为什么,就啤酒广告问的,有些天比其他时候要好。
一天,想到这个问题,我注意到其中一个带着轮子的浴缸的轮子很松不能很好的转动。有时候这个浴缸不能按我推的方向移动,而撞上其他东西。这是一个小挫折。有时候,当我拉动拉链以使浴缸上升,我被链条上的金属尖刺刮到-只是一点点。另一个小挫折。有时候,当我跑步推着浴缸去接将要从揉面机出来的面块时,我被地板上的油滑了一下。不足以摔倒,只是使你觉察到,这个小小的挫折。
其他时间,我会有一些小小的胜利。我学会了完美的计时面块产生的时间以使新的面块到来之前几秒把上一组的用完。这保证了面块是最新鲜的而做出了最好的面包。有些胜利甚至更小:我会发现冲出揉面机而贴在墙上的细小的面粉斑点,我会用放在我后口袋的刮漆刀铲下来扔进垃圾桶。当我把面块切成小块的时候,有时候我会切的很好很轻松。当我控制我周围的世界,即使是以最微不足道的方式,在那一刻我也会感到满足。
这就是生活。一堆微小的挫折和一堆微小的成功。它们是加在一起的。即使非常小,无足轻重的挫折也会影响你的心境。你的情绪并不关心事情的数量而是质量。
我开始意识到我最开心的几天是我有很多小成功和很少的小挫折的那几天。
几年后,当我去了大学,我学了一个在心理学上很重要的理论叫习得性无助,有Martin E.P博士提出。这个理论由多年的研究支持,指出大量压抑的产生无助:一种觉得无法控制周围环境的感觉。
你越觉得你可以控制周围的环境,你做的事情产生效果你就越开心。当你觉得挫折,愤怒,和失望,这也许是因为发生了一些你不能控制的事情:即使是一些小事。你键盘的空格键不好用。当你打字时候,有些单词卡在一起。这使你觉得挫折,因为当你按下空格键什么事情也没有发生。你前门的钥匙不好使用。当你去转动它的时候,卡住了。另一个微小的挫折。这些事情加在一起;这些事情基本上就是使你每天不开心。即使这些事情看上去太小了而不值得考虑(我的意思是,非洲那里还有人饿死,看在上帝的面上,我不能因为空格键而不开心),然而它们会改变你的心情。
让我们暂停一下回到计算机上来。
我们打算邀请典型的Windows高阶用户Pete。当你考虑用户操作界面,把想象中的用户记在脑子里是很有帮助的。把想象中的用户想得越真实,你就越能考虑到用户如何使用你的产品。Pete是一个技术出版社的会计,已经在办公室使用windows 6年。他相当的称职且有技术性。他安装自己的软件;他读PC Magazine,而且他会编写简单的Word宏来帮助他办公室里的秘书发送发票。他家里装上了线缆调制解调器。Pete从来没有使用过Macintosh。"他们太贵了,"他会告诉你。"你可以买到700Mhz PC带有128M RAM以..."好了,Pete。我们知道了。
一天Pete放入朋友Gena在电脑方面向他求助。现在,Gena有一台Macintosh iBook,因为她喜欢半透明的方格。当Pete坐下试着使用Macintosh时候,他就有挫折感。"我讨厌这些东西"他说。他最后成功帮了Gena,但是很暴躁而且不高兴。"Macintosh的用户界面如此笨重。"
笨重?你在说什么?地球人都知道Macintosh的用户界面优雅简洁,对吗?它简直是易用性的典范。
这是我对这个谜团的分析。
在Macintosh上,当你想要移动窗口,你可以用鼠标抓住窗口的任何一个角然后移动。在windows上,你必须抓住标题栏。如果你抓着一个角,窗口会改变大小。当Pete帮助Gena的时候,他试图拖动右下角以改变窗口大小。令人沮丧的,整个窗口移动了而不是他期待的改变大小。
在windows上,当弹出对话框的时候,你可以按回车或者空格键使对话框消失。在Mac上,空格键没有用。你一般需要点击鼠标。当Pete看到一个警告,他想用空格键使它消失,就像他过去6年来都是下意识这么做的。这是第一次,什么事情都没有发生。甚至一开始还没有意识到,Pete又重重的敲了一下空格键,直到他认为问题肯定出现在Mac没有注册空格键。实际上,注册了-但是它不响应。最后他使用了鼠标。另一个挫折。
Pete也知道使用Alt+F4关闭窗口。在Mac上,这会改变音量。一次,Pete想要点击桌面上的浏览器图标,这图标有一部分被另外一个窗口遮住了。因此你按下Alt+F4来关闭窗口并且立即双击图标的位置。Alt+F4提高了音量并没有关闭窗口,因此他的双击实际上点中了他想要关闭的窗口的工具栏上的帮助按钮,开始弹出帮助窗口,因此现在,他现在需要关闭两个窗口。
另外一个小挫折,但是,这些都加起来。一天结束后,他变得暴躁和愤怒。当他试着控制事情,它们并不回应。空格键和Alt+F4"没有用",就好像这些键坏掉了。窗口在他想要拉宽的时候并不顺从他,而像恶作剧搬的只是移动了下位置。即使全部事情都是下意识的,感到失去控制的微妙感觉变成了无助,又编程了不开心。"我喜欢自己的电脑"Pete说。"我全部都设置好了因此它可以按照我喜欢的方式工作。但是Mac笨重且难以使用。这是一次使人灰心丧气的经历。如果Apple这些年好好开发MacOS,他们的操作系统也不会弄的如此糟糕"
好的,Pete。我们了解Pete。他的感觉忽视了一个事实,Macintosh真的相当好用--对于Mac用户。对于按哪个键关注窗口是相当主观的。那些微软的程序员大概在抄袭Mac界面的时候,认为拖动窗口的角使窗口改变大小是一个很好的新特性。MacOS8.0的程序员可能认为拖动窗口的角使窗口移动是一个很好的新特性。
大部分你读到了关于用户界面的争论都关注了错误的东西。Windows更好是因为它给了你很多种改变窗口大小的方法。那又怎么样?这样就错了。重要的是UI是否按照用户希望的方式响应他。如果不是的,用户就会觉得无助且失去控制,就像我推动浴缸时候它不按我推动的方向移动而幢到墙的感觉一样。
UI是很重要的因为它影响用户的感觉,情绪和心情。如果UI设计错误,用户觉得不能控制你的软件,他们确实不会开心而且会责怪你的软件。如果UI设计得很好且按照用户希望的方式工作,他们会觉得高兴好像他们完成了一个小目标。嘿!我把CD拷贝到硬盘了!成功了!这软件真是牛逼!
为了使人们高兴,你必须让他们觉得他们在控制周围的环境。为了这样,你需要正确理解他们的动作。界面需要按照他们期待的方式表现出来。因此所有用户界面设计最重要的公理就是:当程序的行为和用户期待的完全一样的时候这个用户界面就是设计良好的。就像Hillel说的,其他任何东西都是对这句话的解释。所有其他的优秀UI设计规则都只是引申。
这篇关于控制周围环境能使你开心的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!