我们中的一些人只是在UI设计的软方面遇到了困难(尤其是我自己)。“后端编码器”注定只设计业务逻辑和数据层吗?我们是否可以做些什么来重新训练我们的大脑,使其更有效地设计出令人愉悦和有用的演示层?

同事们给我推荐了《网站设计》、《不要让我思考》、《为什么软件很糟糕》等几本书,但我想知道其他人在这方面做了什么来弥补他们的不足?


当前回答

因为这是一套不同的技能。成为网页设计师所需要的技能与成为程序员所需要的技能是不一样的。是的,很少有技能可能是重叠的,比如HTML, CSS, Javascript,但本质上程序员不知道是什么让一个网页设计成为一个好的网页设计,反之亦然。

RWendi

其他回答

这一切都是关于练习,一些训练和回顾。但是大多数后端开发人员工作的环境中,优秀的ui设计并不真正受到管理层的重视。

在阅读了一些关于UI设计的文献之后,组织一些关于UI设计的代码dojo。

Neal Stephenson所著的《In the Beginning was the Commandline》是一本关于用户界面及其重要性的好书。不是每个人都需要GUI,只是很多人不编程。这就像迪士尼世界的动物王国和实际的亚马逊之间的区别。

部分原因在于,UI设计比看起来要难得多,就像编程比设计师看起来要难得多一样。这两个人对完全不同的事情的担忧程度大不相同,而这一点,除了所需的方法和技能明显不同之外,导致他们关注彼此看不见的问题。

I've found that it helps to describe my app and how to use it to someone without any visual tools whatsoever. It helps focus on what is actually necessary and important and feeds back what can be comprehended quickly by another person. I can do this even before I have a line of code, so it's very cheap to do and doesn't require any artistic skills. The other advantage is that verbalizing the app gets parts of my brain working that otherwise would remain dormant while coding and I can start to "see" the app work (or not work) as I talk.

UI设计很难

对于这个问题:

为什么UI设计对大多数开发者来说如此困难?

试着问相反的问题:

为什么编程对大多数UI设计师来说如此困难?

编写UI和设计UI需要不同的技能和不同的心态。UI设计对于大多数开发人员来说是困难的,就像编写代码对于大多数设计师来说是困难的一样。

编码很难。设计也很难。很少有人两者都做得很好。优秀的UI设计师很少编写代码。他们甚至不知道怎么做,但他们仍然是优秀的设计师。那么,为什么优秀的开发者觉得自己要对UI设计负责呢?

了解更多关于UI设计的知识会让你成为更好的开发人员,但这并不意味着你应该对UI设计负责。对于设计师来说,情况正好相反:知道如何编写代码将使他们成为更好的设计师,但这并不意味着他们应该负责编写UI代码。

如何更好地进行UI设计

对于那些想要更好地进行UI设计的开发者,我有3条基本建议:

Recognize design as a separate skill. Coding and design are separate but related. UI design is not a subset of coding. It requires a different mindset, knowledge base, and skill group. There are people out there who focus on UI design. Learn about design. At least a little bit. Try to learn a few of the design concepts and techniques from the long list below. If you are more ambitious, read some books, attend a conference, take a class, get a degree. There are lot of ways to learn about design. Joel Spolky's book on UI design is a good primer for developers, but there's a lot more to it and that's where designers come into the picture. Work with designers. Good designers, if you can. People who do this work go by various titles. Today, the most common titles are User Experience Designer (UXD), Information Architect (IA), Interaction Designer(ID), and Usability Engineer. They think about design as much as you think about code. You can learn a lot from them, and they from you. Work with them however you can. Find people with these skills in your company. Maybe you need to hire someone. Or go to some conferences, attend webinars, and spend time in the UXD/IA/ID world.

这里有一些具体的事情你可以学习。不要什么都学。如果你了解以下所有内容,你就可以称自己为交互设计师或信息架构师。从清单顶部的事情开始。专注于特定的概念和技能。然后向下延伸。如果你真的喜欢这些东西,就把它当做职业道路吧。许多开发人员转向管理,但用户体验设计是另一种选择。

Learn fundamental design concepts. You should know about affordances, visibility, feedback, mappings, Fitt's law, poka-yokes, and more. I recommend reading The Design of Everyday Things (Don Norman) and Universal Principles of Design (Lidwell, Holden, & Butler) Learn about user experience. This is becoming the umbrella term for the human-centered design of web sites, applications, and any other digital artifact. The classic primer here is The elements of User Experience (Jesse James Garrett). You can get an overview and the first few chapters from the author's site. Learn to sketch designs. Sketching is fast way to explore design options and find the right design, whereas usability testing is about getting the design right. Paper prototyping is fast, cheap, and effective during the early design stages. Much faster than coding a digital prototype. The key text here is Sketching User Experience: Getting the design right and the right design (Bill Buxton). Sketching is a particularly useful skill when working with IA/ID/UX designers. Your collaboration will be more effective. For a good primer on how and why designers sketch, watch the presentation How to be a UX team of one by Leah Buley from the 2008 IA Summit. Learn paper prototyping. The fastest way to iteratively test an interface before you write code. Different from sketching and usability testing. The definitive book here is Paper Prototyping (Carolyn Snyder). You can get a good DVD on this from the Nielsen Norman Group. Learn usability testing. Discount testing is easy and effective. But for many UIs, usability is hard to do well. You can learn the basics quickly, but good usability people are invaluable. If you want a book, the classic is The Handbook of Usability Testing (Jeffrey Rubin). It's older but offers thorough coverage of lab-based testing. The famous starter book is Don't Make Me Think (2nd Ed) (Steve Krug). I caution people about this one: Krug makes it sound easier than it is. But it is a good starting point. The user research books listed in the next point also cover this topic. And you can find piles about it online. Learn about information architecture. The main book here is Information Architecture for the World Wide Web (3rd) (Louis Rosenfeld & Peter Morville). A good starter book is Information Architecture: Blueprints for the Web (Christina Wodtke). For more, visit the Information Architecture Institute or attend the annual Information Architecture Summit. Learn about interaction design. The main book here is The Essentials of Interaction Design (3rd) (Alan Cooper, et al). A good starter book is Designing for interaction (Dan Saffer). For more, visit the Interaction Design Association (IxDA) or attend the annual Interaction Design conference. Learn fundamentals of graphic design. Graphic design is not UI design, but concepts from graphic design can improve an interface. Graphic design introduces design principles for the visual presentation of information, such as proximity, alignment, and small multiples. I recommend reading The non-designer's design book (Robin Williams) and Envisioning Information (Edward Tufte) Learn to do user research. Where usability tests an interface, user research tries to model users and their tasks through personas, scenarios, user journeys, and other documents. It's about understanding users and what they do, then using that to inform the design instead of guessing. Some techniques are interviews, surveys, diary studies, and cart sorting. Good books on this are Observing the User Experience (Mike Kuniavsky) and Understanding Your Users (Courage & Baxter) Learn to do field research. Watching people in the lab under artificial conditions helps (ie: usability), but there is nothing like watching people use your code in context: their home, their office, or wherever they use it. Goes by various names, including ethnography, field studies, and contextual inquiry. Here is a good primer on field research. Two of the better known books here are Rapid Contextual Design (Karen Holtzblatt et al) and User and task analysis for interface design (Hackos & Redish). Read UX design web sites. Some of the big ones are Boxes & Arrows, UX Mag, UX Matters, and Digital Web magazine. Use UI pattern libraries. There are patterns for interfaces. For web sites, I recommend The Design of Sites, 2nd ed (Van Duyne, et al) and Homepage usability: 50 websites deconstructed (Jakob Nielsen & Marie Tahir). For desktop applications I recommend Designing interfaces (Jennifer Tidwell), and for web applications I recommend Designing Web Interfaces: Principles and Patterns for Rich Interactions (Bill Scott & Theresa Neil). Online you should check Welie pattern library, UI patterns, and Web UI patterns. Attend UX design conferences. Some good annual conferences are: Information Architecture Summit, Interaction '09 (IxDA), User Interface, and UX week. Attend a workshop or webinar. You can take workshops, webinars, and online courses. This is far from a comprehensive list, but you might try the UIE virtual seminars, Adaptive Path virtual seminars, and UX webinars from Rosenfeld Media. Get a degree. A graduate degree in HCI is one approach, but these programs are mostly about writing coding. If you want to learn about the design of digital artifacts and devices, then you want a graduate program that's not in CS. Some options include Interaction Design at Carnegie Mellon, the d-School at Stanford, the ITP program at NYU, and Information Architecture & Knowledge Management at Kent State (disclosure: I'm on faculty at Kent; we are seeing more and more people with CS degrees moving into UX design instead of management, which is interesting, because management is the traditional path for developers who want to move away from writing code while staying in their field). There are many more programs. Each has their own perspective, areas of emphasis, and technical expectations. Some come out of the arts and visual design, others out of library and information science, and some from CS. Most are hybrids, but every hybrid has deeper roots in one or more fields. If this interests you, look around and try to understand the differences between these programs. Some offer online courses and certificate programs in addition to full-fledged degrees.

为什么UI设计很难

优秀的UI设计很难,因为它涉及到两种截然不同的技能:

A deep understanding of the machine. People in this group worry about code first, people second. They have deep technological knowledge and skill. We call them developers, programmers, engineers, and so forth. A deep understanding of people and design: People in this group worry about people first, code second. They have deep knowledge of how people interact with information, computers, and the world around them. We call them user experience designers, information architects, interaction designers, usability engineers, and so forth.

这就是这两个群体——开发者和设计师之间的本质区别:

Developers make it work. They implement the functionality on your TiVo, your iPhone, your favorite website, etc. They make sure it actually does what it is supposed to do. Their highest priority is making it work. Designers make people love it. They figure out how to interact with it, how it should look, and how it should feel. They design the experience of using the application, the web site, the device. Their highest priority is making you fall in love with what developers make. This is what is meant by user experience, and it's not the same as brand experience.

此外,编程和设计需要不同的心态,而不仅仅是不同的知识和技能。优秀的UI设计需要两种心态、两种知识基础和两种技能。而掌握其中任何一种都需要数年时间。

开发人员会发现UI设计很难,就像UI设计师会发现写代码很难一样。

用户界面不像一层薄薄的油漆,是事后才可以涂上去的。它需要从一开始就存在,并基于真正的研究。当然,有大量可用性研究可用。它不仅需要在一开始就存在,它还需要构成你制作软件的核心原因:世界上存在一些差距,一些问题,它需要变得更可用和更有效。

软件不是为了它自己而存在的。软件存在的原因是为了人们。这绝对是荒谬的,甚至试图提出一个新的软件的想法,而不理解为什么人们会需要它。然而,这种情况一直在发生。

在编写每一行代码之前,您应该先检查界面的纸质版本,并在真人身上进行测试。这有点奇怪和愚蠢,它最适合孩子们,有人扮演“电脑”。

界面需要利用我们自然的认知能力。穴居人会怎么使用你的程序?例如,我们已经进化到非常擅长追踪移动的物体。这就是为什么使用物理模拟的界面,比如iphone,比即时发生变化的界面效果更好。

We are good at certain kinds of abstraction, but not others. As programmers, we're trained to do mental gymnastics and backflips to understand some of the weirdest abstractions. For instance, we understand that a sequence of arcane text can represent and be translated into a pattern of electromagnetic state on a metal platter, which when encountered by a carefully designed device, leads to a sequence of invisible events that occur at lightspeed on an electronic circuit, and these events can be directed to produce a useful outcome. This is an incredibly unnatural thing to have to understand. Understand that while it's got a perfectly rational explanation to us, to the outside world, it looks like we're writing incomprehensible incantations to summon invisible sentient spirits to do our bidding.

普通人能理解的抽象概念包括地图、图表和符号。小心符号,因为符号是一种非常脆弱的人类概念,需要有意识的精神努力来解码,直到学会符号。

The trick with symbols is that there has to be a clear relationship between the symbol, and the thing it represents. The thing it represents either has to be a noun, in which case the symbol should look VERY MUCH like the thing it represents. If a symbol is representing a more abstract concept, that has to be explained IN ADVANCE. See the inscrutable unlabled icons in msword's, or photoshop's toolbar, and the abstract concepts they represent. It has to be LEARNED that the crop tool icon in photoshop means CROP TOOL. it has to be understood what CROP even means. These are prerequisites to correctly using that software. Which brings up an important point, beware of ASSUMED knowledge.

我们大约在4岁左右才能获得理解地图的能力。我记得我曾经在什么地方读到过,黑猩猩在六七岁左右获得了理解地图的能力。

The reason that guis have been so successful to begin with, is that they changed a landscape of mostly textual interfaces to computers, to something that mapped the computer concepts to something that resembled a physical place. Where guis fail in terms of usability, is where they stop resembling something you'd see in real life. There are invisible, unpredictable, incomprehensible things that happen in a computer that bare no resemblance to anything you'd ever see in the physical world. Some of this is necessary, since there'd be no point in just making a reality simulator- The idea is to save work, so there has to be a bit of magic. But that magic has to make sense, and be grounded in an abstraction that human beings are well adapted to understanding. It's when our abstractions start getting deep, and layered, and mismatched with the task at hand that things break down. In other words, the interface doesn't function as a good map for the underlying software.

有很多书。我读过的两本,因此可以推荐给你,一本是唐纳德·诺曼的《日常事物的设计》,另一本是杰夫·拉斯金的《人机界面》。

I also reccomend a course in psychology. "The Design of Every day Things" talks about this a bit. A lot of interfaces break down because of a developer's "folk understanding" of psychology. This is similar to "folk physics". An object in motion stays in motion doesn't make any sense to most people. "You have to keep pushing it to keep it in motion!" thinks the physics novice. User testing doesn't make sense to most developers. "You can just ask the users what they want, and that should be good enough!" thinks the psychology novice.

我推荐菲利普·津巴多主持的PBS系列纪录片《发现心理学》。如果做不到,那就找一本好的物理教科书。贵的那种。不是你在Borders书店里找到的低级小说自助废话,而是你只能在大学图书馆里找到的厚精装书。这是一个必要的基础。没有它,你也可以做出好的设计,但你只能凭直觉理解正在发生的事情。读一些好书会给你一个好的视角。