程序员的用户界面设计技巧

Programming is an underappreciated art form. It is there, in the background, invisible to but a few people who usually are looking to fix it, copy it or simply understand it.

A successful human interface can make the most complex functionality work at the click of a button which in turn keeps the code hidden from the end user. Since the UI is the only way programmers can share their craft with most end users they have to come to terms with the fact it is immensely important to them.

Time and time again I’ve come across systems powered by very clever coding be criticized on first impressions because of the lack of proper “skinning”. That reaction is understandable. Indeed, most people shouldn’t have to understand the complexities (sweat and tears even) that go into building that modular 8 page data entry form, or the amount of database retooling developers have to go through every time they say “You know what, we need to store the XYZ and the ABC that goes with it”.

What people do understand is the way the buttons react, the layout of the tools, the clarity of messages. This is the finished product and the only way most users will get to determine whether a system can or cannot help them. The coding and design go hand in hand. When developers say “this is ready to demo” we should make sure that what we show is close to the final this. Developers have to take a step beyond just writing the code and get involved in the process of creating the human interface. Similarly, designers need to work with developers to create standards and guidelines that will bridge the two skill sets hopefully resulting in better applications (and far less arguments).

Being a space shared by developers and designers, Netymology has developed some ground rules that we mostly try to stick to:

Semantic for the people. While coding output templates try to add basic classes to elements. Give them standard names (possibly ones you have agreed with the rest of the team). No need to get too hung up on this, things can be changed but looking through code for something with the class “help” is easier than looking for some obscure code snippet, especially for a designer.

Make all messages in the UI meaningful. In the chaos of a project, small temporary fillers can be overlooked and can be embarrassing to have a customer call you after seeing a tooltip that says “Thing that makes the thingy work” 2 weeks after launching. It doesn’t take a lot more effort to put in “Please enter your phone number”.

Set a glossary of terms to use throughout the application. This will also help when you’re naming variables or database fields and prevent things like “items” and “products” being used to describe the same thing.

Do some usability testing. Obvious? We’re a small shop and don’t have a dedicated UI department, but we try to get as much feedback from people in the team to see if the layout makes sense, even in early barebones states. Sometimes when you’re busy coding, looking at the same screens everyday can make you miss the bleeding obvious like a missing link or logout button.

Make things look nice. Or at least decent. If you can’t get a final design working on time, go minimal with a base CSS. Make fonts and buttons clean (padding goes a long way) and try to put in customer logos whenever appropriate. Use white backgrounds and black and grey sans-serif fonts. Don’t use Comic Sans no matter how appropriate you think it is. Try to add small icons in buttons when you think a page looks bland. You can find a ton of fantastic free icons on FamFamFam or the Tango Project.

Visualise. If possible try to draw out how an application is going to look. Make an HTML mock-up, discuss it with others. Get a whiteboard, doodle, scribble, colour, whatever. In many instances a tangible representation will do a better job than the most detailed chart at spotting a flaw. Cut and paste elements from existing sites which you feel work. Get that image out of your head and share it with others.

Don’t $#^ing swear.$#%ing thing took me all day to do!”). Admittedly, code usually remains obscure but we have all come across instances where a server misconfiguration led to code being displayed instead of the generated page. Funny? Often. Embarrassing? Always. Never put something in a source comment that isn’t meant to be read publicly (this goes for things like “

Truthfully, I break these rules regularly but find that everything works out better when I don’t. If anything, thinking, even on a basic level, about style and design allows you to visualise outcome better which in turn helps the coding process.

While we’re on the subject, we are developing a very basic clean stylesheet for programmers to use while developing web applications. It will define some clean, basic classes for most circumstances such as error messages, forms fields, and buttons. If it’s good enough we might be inclined to release it together with links to free icons and tools. What would you like to see on your clean sheet?

时间: 2024-12-17 19:32:52

程序员的用户界面设计技巧的相关文章

成为专业程序员的6个技巧

1.在你责怪别人之前,先检查自己的代码 先想一想自己的假设和其他人的假设.来自不同供应商的工具可能内置不同的假设,即便是相同的供应商对于不同的工具,其假设也可能不同. 当其他人正在报告一个你不能重复的问题的时候,去看看他们在做什么.他们可能会做一些你从来没有想到过的事情,或者他们的做事顺序与你的截然不同. 我个人的原则是,如果我有一个不能确定的错误,那么我会先考虑是不是编译器的问题,然后再去检查堆栈是否损坏.特别是当添加跟踪代码会使得问题移动的话就更要这么做了.多线程问题是bug的另一个来源,有

成为专业程序员的 6 个技巧

1.在你责怪别人之前,先检查自己的代码 先想一想自己的假设和其他人的假设.来自不同供应商的工具可能内置不同的假设,即便是相同的供应商对于不同的工具,其假设也可能不同. 当其他人正在报告一个你不能重复的问题的时候,去看看他们在做什么.他们可能会做一些你从来没有想到过的事情,或者他们的做事顺序与你的截然不同. 我个人的原则是,如果我有一个不能确定的错误,那么我会先考虑是不是编译器的问题,然后再去检查堆栈是否损坏.特别是当添加跟踪代码会使得问题移动 的话就更要这么做了.多线程问题是bug的另一个来源,

合格的PHP程序员必备技能_php技巧

作为PHP的爱好者,如果你想加入PHP程序的世界,一定要做好充分的准备. 如果想进入大的企业进行底层开发的话必须对互联网各方面的技术原理了解的很清楚,例如apache实现原理.语言方面既然是php开发自然对 c/c++要求比较高.往往需要自己写php扩展.使用mysql自然想很多常见的,性能瓶颈要能有很好的解决方案.mysql 插件编写,apache模块编写.联系起来结合点还是要会c. 倘若是做中间层和前端工作则要求对css,javascript要求比较高.当然对web的一系列实现原理也是要非常

程序员心想事成的 10 步技巧

你是不是觉得自己已经很厉害了?是不是觉得自己已经掌握了所有的编程技巧?不要太自大了!只要你活着一天就有很多东西要学,永远不会有你会所有东西的那一天. 去一个公司里,想要别人知道你的才能很重要,因为这样你才能拿到很好的薪水.那如何做才能让别人知道你的才能呢? 1.建立自已的个人网站 一定要有自己的网站,做点自己的研究,在上面写写文章,不要什么都是学别人的,有亲身经历过,这样说起来才有质感.当然,文章也要写的像样些,字和语法不能有太多的错误,所以写完文章会要习惯检查下,整体文章要让人一看就明白你要表

Java程序员应当知道的10个面向对象设计原则

(设计原则)底线是永远追求高内聚.低耦合的编码或设计. Apache 和 Sun的开源代码是学习Java和OOPS设计原则的良好范例.它们向我们展示了,设计原则在Java编程中是如何使用的.Java JDK 使用了一些设计原则:BorderFactory类中的工厂模式.Runtime类中的单例模式.java.io 类中的装饰器模式.顺便说一句,如果您真的对Java编码原则感兴趣,请阅读Joshua Bloch 的Effective Java,他编写过Java API.我个人最喜欢的关于面向对象设

程序员应知道这十大面向对象设计原则

面向对象设计原则是OOPS编程的核心, 但我见过的大多数Java程序员热心于像Singleton (单例) . Decorator(装饰器).Observer(观察者) 等设计模式, 而没有把足够多的注意力放在学习面向对象的分析和设计上面.学习面向对象编程像"抽象"."封装"."多态"."继承" 等基础知识是重要的,但同时为了创建简洁.模块化的设计,了解这些设计原则也同等重要.我经常看到不同经验水平的java程序员,他们有的不

脑洞大开的程序员们:最糟糕的音量控制设计大赛

如果程序员来做设计,世界会变成什么样子? 著名社交新闻网站 Reddit 最近举办了一个"最糟糕音量键设计大赛",起因是一个程序员在 Reddit 晒出了自己设计的一款"不同寻常"的音量控制键,并号召大家加入到设计当中来. 程序员们分别按照自己的想法,重新设计了电脑的音量大小按键,比如这样的: 我也不知道音量大小是多少,全都是凭运气来调整的,想要改音量的时候就 roll 一下 https://static.oschina.net/uploads/space/2017

程序员也能学好设计——勤奋比天赋更重要

这是一个设计师问答栏目里,给一位想学习设计的程序员的回答. Q:我是一个程序员,对设计很有兴趣,并且愿意尽全力学习.不过担心自己可能没有足够的天赋.如何才能拥有一双对美敏感的眼睛?有没有能读的书,能上的课或者能做的练习?此外,是不是一定要有天赋? A:我不相信天才. 至 少,我从不买那些故事的帐.比如想做设计一定要有天赋,不然毫无希望.我听说过有设计师带着恻隐的口气称程序员的作品为「设计盲」.隐含的意思就是成为一 个设计师只靠学习是不够的,真正的设计师都是天生的.一些有天赋的孩子受到了上天的眷顾

为什么你的设计团队中需要一名程序员?

一 名优秀的设计师应该会编程吗?有关这个问题的争论每天都在博客上.Twitter 上,以及公司召开的会议中不断上演,永无休止.人们更多地关心设计师本身有没有编程的能力,却没有考虑到是否应该在设计团队中直接引入一名程序员.这真的 是让人遗憾的事,甚至会为他们的争论感到着急.因为对于一场有关产品设计的讨论中,程序员其实能够起到非常重要的作用. 但令人遗憾的是,许多设计师对于他们的工作来说都有一种「精英主义」,觉得只有他们才能打造出专业的.符合潮流的设计.可是事实上这并不正确. 事 实上,每个人都有能