Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

When I picture a really well functioning software team in my mind, one of the visions I have is of a developer showing off to a small group of devs some cool, clever UI that they just came up with based on something that they were just playing with.

I'm afraid that while we're doing great at being creative writing expressive, well architected, high quality code - we aren't pushing any creative boundaries when it comes to effective user interface.

What's an effective strategy for encouraging developers to push their boundaries with user interface?

Edit:

I'm looking for something "lab oriented", like for instance pair programming sessions focused on some problem or other.

share|improve this question
2  
Possible duplicate: How do you make your applications looking more sexy?. Also see Nuturing creativity –  user8 Dec 5 '11 at 3:43
1  
It might be ok to use animation to draw attention to something, but good user interface must be effective without bells and whistles of that sort. Animation must be a secondary thing, not something that you cannot do without. Also, blinking html text proved to be super annoying, so over time good web pages became less "creative" and more effective. –  Job Dec 5 '11 at 4:10
    
I agree. I'm not advocating anyone bring back the blink tag! I think what I had in mind when I wrote that was the way that Google docs will effectively use animation to point out and briefly explain a new feature. The kinds of things that aren't in the wireframe. –  Kyle Hodgson Dec 5 '11 at 4:17
1  
Remember that a creative/original UI design is not necessarily better. Innovation is important, it's how we move forward, but it's expensive and not everything needs to be innovative and new. It really depends on what your project and your team is like, just make sure you're spending your budget wisely. –  Jordan Bentley Dec 5 '11 at 19:20

6 Answers 6

up vote 4 down vote accepted

I don't think there are any definite answers, but here are some things that I've seen work:

  • Programmers usually aren't user interface designers. If you feel that your UI needs improvement, you'd do well to work with someone who was actually trained in design. It's easy to appreciate good design, but not always so easy to create it.

  • Use data to identify problems and to quantify them. That might mean doing some usability studies first, observing real users to find out what works well for them and what doesn't. Or it might mean sorting all the UI-related complaints you've received from users over the last n months into categories and using that data to determine what users like and don't like. That should give you some real, specific problems to work on. Set some goal, like: "minimize the number of clicks required to set up a new document" or "make the effect of the undo and redo commands more obvious." Once you've made improvements, keep collecting data to make sure that your changes really do solve the problem.

  • Hold some no-holds-barred brainstorming sessions in which developers (and others) are encouraged to rethink a product. You're not designing the next version of your product here; it's probably not the right way to develop a clear design. Instead, you want people to practice thinking outside their current box, and to gather creative ideas from people who spend a lot of time thinking about every detail of your product.

  • Taste your dog food. Sometimes, developers who work on a product don't have a lot of time to really dig in and use the product beyond testing the specific functions that they're working on. Set aside some time for the whole development team to use the product, if possible. Turning the developers into users for a while can help identify a lot of problems.

  • Training. Send some (or all) of your developers to classes or seminars to learn about UI design, data presentation, etc. For example, Edward Tufte does a one-day seminar that's very interesting.

share|improve this answer
    
So +1 on getting a UI designer on board. –  Heiko Rupp Dec 5 '11 at 8:55

A key component that enables creativity is having a base understanding of what is possible. You need to know what the boundaries are before you can push them. It sounds like your team has this covered when it comes to programming and development. This is understandable as your are a team of developers with a strong knowledge of that area.

Learn about interfaces and what sits on both sides of them. That is, learn about UI toolkits and graphics packages but more importantly learn about people and psychology. I'd highly recommend checking out Designing Interactive Systems I as well as part II. It's an amazingly well put together lecture series that covers both the psychology and technology side of interface design. Also, have a look at resources like Little Big Details.

Learn about the boundaries, seek out what others are doing to use and distort them and challenge yourselves to do better.

share|improve this answer
    
Thanks for the links! –  Kyle Hodgson Dec 5 '11 at 13:48

Demands from those paying for the software can go a long way or a visionary leader. Management will see it as important and not frivilous. UI design should be at the front of development and not something left at the end. It takes time, a lot of trial and error, and a willingness to allow it to change. This is true of all creative tasks.

Not all developers are going to be good at it. They may need some training. The easiest way to accomplish it is to hire people who are good at it in the first place and stay out of their way.

share|improve this answer

"pushing any creative boundaries" means a long string of failures. That's the way creativity works. Creative people build lots of things that get thrown away, cut up, deleted, smashed or otherwise ignored. A few things, however, are quite cool and novel. They're novel because they're a singular success after a long string of failures.

The only effective strategy for encouraging developers to push their boundaries is to permit lots of failures.

That means a generous "research" budget to cover all those failures. It means reworking and reworking solutions so they turn into that "cool, clever UI".

The idea that "they just came up with based on something that they were just playing with" is misleading. It doesn't work that way. It's patience, hard work and a sense of perspective. It's 99% perspiration and 1% inspiration.

http://en.wikiquote.org/wiki/Thomas_Edison

"Genius is one percent inspiration, ninety-nine percent perspiration."

share|improve this answer
    
Good point re: misleading. The vision is a bit shallow and short on details. Agreed that work takes time. I'm not afraid of it taking time, I'm afraid of never starting. :) –  Kyle Hodgson Dec 5 '11 at 13:51
    
I'd call "inspiration" a "flash of insight" and bump it up around 5%. Otherwise, fully agree (+1) –  Izkata Dec 5 '11 at 19:01
1  
Another quote: “I have not failed. I've just found 10,000 ways that won't work.” ― Thomas A. Edison --> Have you found your 10,000 designs of UIs that do not work? –  Patrick Dec 5 '11 at 19:47
1  
@KyleHodgson: The problem is recognizing that start == fail and success == repeated failures. Most managers won't tolerate the fail part of pushing the creative boundaries. –  S.Lott Dec 5 '11 at 20:10
    
I am the manager. True, though, sadly. –  Kyle Hodgson Dec 6 '11 at 3:47

As strange as it sounds, there are methodical ways to foster creativity. I highly recommend Strategies for Creative Problem Solving by Scott Fogler and Steven LeBlanc. It's one of the few books from college that's dog eared and earned a permanent place on my bookshelf at work. The book is geared toward engineering, but can be applied toward any creative endeavor.

First we need to define the real problem. Often we jump right into generating solutions without knowing if we're solving the right problem. A methodical technique for defining the real problem is using Duncker diagrams to illustrate the present state - desired state technique.

For user interfaces, you really need a non-programmer to help, because we have the bad habit of thinking things like markdown are intuitive UI. It doesn't necessarily need to be formal. I call this the "wife test." I open the software and give her a task to accomplish, like "comment on a photo," without any further instructions, and watch where she gets hung up. This step is crucial to change your problem definition from something impossible to solve like "the UI feels clunky" to lists of easy to solve design issues like "it isn't clear that you must log in before commenting on a photo."

Only after we know the real problem can we move on to generating solutions. Techniques for this range from recognizing your mental blocks, to brainstorming, to less known techniques like random stimulation or fishbone diagrams.

share|improve this answer

In terms of what developers can do, designing the project so that one can swap out UIs easily without secondary effects or significant trouble will help a lot. Even better is if you can setup the project to support multiple UIs in parallel so you can get truly experimental without downside risk.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.