Fog Creek Software
Discussion Board




Programmers creating user interfaces? No...

JoS wrote a nice newsletter about Eric S Raymonds. There Joel
says this:

>> Suppose you take a Unix programmer and a Windows
>> programmer and give them each the task of creating the
>> same end-user application.

Well, the not so obvious real answer is that you will probably end
up with two lousy products. I have been involved in two highly
successful projects, where the result was products light years
ahead of competition. The common theme was this:

1) The programmer does NOT decide about any user-interface.
  In the project this is the responsibility of a highly qualified person
  that knows the end-user group very well, and that person is
  working on equal terms with the programmer.
2) Usability test sessions were carried out.

So, don't let programmers design the interface of your product.

Anders Holtsberg

Anders Holtsberg
Friday, December 19, 2003

So if your UI designer writes a line or two of javascript you have to fire them?

How about "make sure the person creating your user interface is qualified" instead of some silly generalization?

A tangential example - I have always said that websites should be built by two people - a designer and a coder. Why? Because it's rare to find both talents in one person. If you *do*, pay that person a mint to hold on to them.

My point - don't just make a broad-brush comment that "all [x] are/aren't/can/can't [y]" - it depends. The important thing is to make sure the person doing the work has the talent to do so.

Philo

Philo
Friday, December 19, 2003

How can you know if someone has talent for UI desing? Former work?

Andres
Friday, December 19, 2003

Anders: So, don't let programmers design the interface of your product.

Unless it's a unix app, then it tend to be a case of programmers creating tools for programmers, which is what the article is talking about.

AJS
Friday, December 19, 2003

So why not let a programmer design your UI?

It must be uicker in the long run, and it can't be too difficult to change it if it's not up to scratch....

to be honest i don't think it matters with most programs what it looks like as long as it is usable, i mean does it matter?

A Cynic's son writes
Friday, December 19, 2003

Yes Tim, in a commercial sense it does matter.  A lot.

End users judge software in large part on the interface - not on the underlying guts of the application.  Which is why your mother (oh this is so embarassing) likes Incredimail so much.  The cute little doggie just comes out to tell you you've a message.  It makes me cringe, but I'm not the target market.

You've also got the point that if the user can't understand how the damn thing works reasonably quickly then they're not going to bother and the pressure will be to buy something else.  Trouble is what is clear and logical to a programmer isn't always clear to the end user - hence the original post. 

I'd also suggest that if you must skive in your IT class (which if memory serves is all you've got today) then try reading Joel's articles in the archive - especially the ones on user interface design.  Whilst they won't help directly with the calculator they may well stand you in good stead for later in the course.

A cynic writes
Friday, December 19, 2003

<rant>

Im getting kind of fed up with the common attitude of people that programmers WRITE CODE ONLY. We don't.

We solve problems. A major part in software design is business analysis. In my not so humble opinion, the programmer need to have domain knowledge to the extent where he can give meaningful suggestions on how to solve the workflow process that the business is using. This is a deep understanding of not only how, but why the specific business works the way it does.

User interface design is not about pretty pixels.

All above average programmers strive to learn enough to fully understand the problem domain. The programmers that need spoon feeding won't ever produce nearly as useful programs.

This makes the programmer with business knowledge more than qualified to create the UI of his application.

</rant>

Patrik
Friday, December 19, 2003

Yeah Anders, what do you do with Joel? He's o programmer who has a book on interface design that makes a lot more sense and is more proctical than Don Norman's books. Do we call Solomon to cut Joel in two with a sword, or do we fire 1/2 of him?

Skeptical
Friday, December 19, 2003

It seems like there are many different opinions here but in fact i think
there is not. I agree with most of what is said here. The key to
understanding is to see that there are so many different end users
whose needs are so divergent. JoS and Eric S Raymond is of course
right in that the Grandma Maggie and Joel Programmer are completely
different end users. (I made the mistake in my first post to assume that
end-user should read Grandma).

>> [...] websites should be built by two people, a designer and a
>> coder. Why? Because it's rare to find both talents in one person.

Yes indeed. Also, not all programmers want to administer and sit
through the usability tests needed for more complicated sites.

>> Yeah Anders, what do you do with Joel? He's o programmer
>> who has a book on interface design.

Well, one should

>> pay that person a mint to hold on to them.

because Joel is exceptional.

>> i don't think it matters with most programs what it looks like

Right. If the end user is a programmer or a site adminitrator or
computer science student.

>> Yes Tim, in a commercial sense it does matter.  A lot.

Yes. On the colour screen in the cellular phone because
otherwise the competitor will sell more phones.

>> We solve problems. A major part in software design is business
>> analysis.

Yes, a major part is. I have never ever done it. I write
spell checkers for swedish dyslectic people and HWR
programs for embedded systems.

>> the programmer need to have domain knowledge

Yes. To compensate for my lack of domain knowledge I work
in the same room as experts on dyslexia and experts on east
asian languages. I have fun learning a lot when we talk about
design.

Anders Holtsberg

Anders Holtsberg
Friday, December 19, 2003

----"to be honest i don't think it matters with most programs what it looks like as long as it is usable, i mean does it matter? "----

To quote a phrase that was very common round about the time you started getting hormones Tim, "You just don't get it". In all fairness most other people don't either.

The UI is not about looking nice, it's about how easy things are to use. And GUI's are designed to be used by people who don't RTFM.

The idea of splitting designer and coder for your web site or program, produced and still produces a load of kludge. The site looks pretty, it actually renders and the links do point places, but it is  an absolute mess to navigate.

Also, you often get a yawning gap between designer and coder; "I sing the body electric", which describes the development of an early version of Encarta makes that clear.

"Usability" is a branch of knowledge different from graphic design or coding. People who have knowledge about it will probably come from one of those fields because you don't become a usability guru in a vacuum, but you don't need to be a specialist in either. And, above all, usability is about process; the purpose is to make the process of using the application as simple as possible.

The best way to ensure your app is usable is to follow the advice given by Cooper in "The Inmates are running the asylum". You first of all decide on your users and make an imaginary profile of two or three typical users, right down to giving them hobbies and pinning a photo of them up on the wall in front of you. Then you decide what tasks these people will want to complete with your software, and then you think of the best interface and processes for them to do it. Then, and only then, do you let the programmers start coding; unitl them they should be working with you on the profiles or playing tetris.

Stephen Jones
Friday, December 19, 2003

Uh...who's Tim?

Dennis Forbes
Friday, December 19, 2003

>I write spell checkers for swedish dyslectic people

Exactly what is the difference between a spell checker for me and for a dyslectic person? ...  Is there some psychology thing that goes into the mix to make the people motivated to work on improving their spelling despite their handicap?

Patrik
Friday, December 19, 2003

Dennis.

'A cynic's son writes' (aka my eldest). 

I mentioned it in my reply and Stephen must of picked up on it. 

A cynic writes
Friday, December 19, 2003

>> what is the difference between a spell checker for me and for a dyslectic

1) It should not only detect, but correct very misspelled words well too
    (what is shunarlisst?). You don't need correction, but they do.
2) The user interface is cleaner with less information overloading.
    You need more buttons, they need fewer buttons.
3) Homophone checking with example sentences (there-their). It
    is good that the program stops often even if the word is correct.
    That is positive feedback for them. For you it is annoying.
4) Good connection to speech synthesis, screen readers et c.
  You don't need that, but they do.

An english program that does such things is TextHelp.

Anders Holtsberg
Friday, December 19, 2003

[1) The programmer does NOT decide about any user-interface.
  In the project this is the responsibility of a highly qualified person
  that knows the end-user group very well, and that person is
  working on equal terms with the programmer.
2) Usability test sessions were carried out.
So, don't let programmers design the interface of your product.]

You do realize that there is nothing in your 2 points that clearly disqualifies a developer?

User interface "specialists" or usability experts are what they are because they have studied the interaction of people and software (or even other products as well). Why cannot a developer also be qualified in this way? I mean, that would certainly make things simpler, wouldn't it?

Now, the tendency of developers to think in terms of implementation can be a problem. Without explicitly thinking of usability, a developer may opt for the simplest approach in terms of implementation only. However, getting a developer to think beyond simply implementing an interface is just a matter of training and discipline.

anon
Friday, December 19, 2003

Anders,

Thanks for the clarification; It does alot more than a normal spell checker it seems. These are not really problems that applies to normal business software though.

The norm for good UI does not apply to software such as yours, and software that for example stroke sufferers use for their rehabilitaion.

With regards to the special UI needs of your users, how do you handle the different severities of dyslexia? Could it be that if you have severe dyslexia you find some UI elements invaluable, but if you have a slight dyslexia find them annoying?

I have a much simpler situation when designing my applications. I can assume alot more about my users since most are capable of doing their jobs properly.

Patrik
Friday, December 19, 2003

Has anyone else noticed that the people who blog about UI don't blog about code ?  With some notable exceptions (like this website) the people that are truly interested and innovative on the one topic tend not to be on the other. I don't have Joel's book, but I think it contains a similar observation.

For example, having read Joel's website, he sounds like a good coder to me, but I don't think he would spend a lot of extra time learning how to code better.  I think he would extra time thinking about UI issues as it relates to his business, and then looking to apply the most relevant technology.  I think the articles he has written support that.  Just a guess though.

I think we have surrendered to that here, and have individuals in our group, who code, but also devote a significant amount of their time to UI issues (50/50 split).  I like that approach over dedicated usability people, because the need for UI reviews comes and goes, but the code doesn't.  We don't need UI reviews two nights before ship, we need coders.

John
Friday, December 19, 2003

For many audiences (on the Win and Mac platforms at least), having the interface look nice can be important. Users can be very complex & discriminating. If the app doesn't look appealing, it can create a drag on user acceptance-- enough to affect commercial prospects and competitivene posture. Amazing, because sometimes these interface issues seem incredibly superficial-- maybe the colors don't work, or certain tiny details don't match the OS.

So from an end-user acceptance standpoint (NOT a programmer's logical perspective), looking nice can be considered a facet of usability. It's that early appeal that entices further exploration and acceptace of the app in the first place. The next time you meet a member of the opposite sex, or when you buy a car or new shoes, select a piece of fruit from a bowl, etc. ask yourself "Does appearance matter?"

Anyone can create the user interface, as long as they're qualified, have good taste/user-empathy and are willing to obsess on small details until it's good-enough. While this may not match the profile of a CS degree programmer, the original poster shouldn't make sweeping assumptions.  Flipping the issue of roles, there is no shortage of sites on the web that serve as examples of how non-programmers and designers can deliver unusable interfaces.

Usability, functional excellence, interface design-- they all combine to result a certain score for a given audience. Different team roles need to work together to optimize that score given other project constraints. Turns out that writing great software is a time-consuming and expensive proposition.

Preachy blabbermouth
Friday, December 19, 2003

Anders, that's a stupid comment. Some of the best UI designers are also programmers. I'm one.

I am a far superior UI designer than most people who call themselves UI designers. Yet I typically call myself a programmer because that's the more challenging work, and those roles let me do the UI I like.

Ian
Friday, December 19, 2003

[I am a far superior UI designer than most people who call themselves UI designers. Yet I typically call myself a programmer because that's the more challenging work, and those roles let me do the UI I like. ]

Let's not get carried away here. Designing a good UI is challenging work. Whatever floats your boat.

What makes iTunes better than MusicMatch or ephPod (assuming we could all agree that one is better than the other)? I'm pretty sure it's not the programming.

anon
Friday, December 19, 2003

Although it is possible for an individual to possess skills to do both UI related work (Interaction Design, Graphics Design, Usability Specialist) and programming, I think it would be rare to find someone that could do each of them well. You would tend to end up diluting each skill because you wouldn't have as much experience in any one of them as someone who specializes.

As an analogy, consider the case when you decide you want to get some cosmetic dental work done. Would the job be done better (whatever that may mean) by an Oral Surgeon, an Orthodontist and Cosmetic Dentist or have a General Dentist perform all functions?

Interaction Architect
Friday, December 19, 2003

Concerning your analogy, i do not believe it to be approprioite to all situations. You are talking about a situation where you want a pefect looking result at the end of it, unless you have pretty screwed ideas about what cosmetic surgery is. Whereas i would be looking at a functional design that is easyish to use.



(by the way, Anders, can i borrow your spell checker?)

...a cynic's son writes
Friday, December 19, 2003

Anders:  Might I suggest purchasing Joel's excellent:

User Interface Design for Programmers

http://www.amazon.com/exec/obidos/tg/detail/-/1893115941/103-6437388-1205419

I consider my self a pretty good designer of UI's, but this book is a serious eye-opener!  I read it cover-to-cover twice the night I recieved it!

Anyone who thinks they know what (and what is not) a good UI needs to read it!  The best 20 bucks spent in a long time . . .

John Murray
Friday, December 19, 2003

It is possible for a programmer to be a good UI designer as well.

But no matter how good of a UI designer or QA engineer he or she is, he should not do the UI design or the QA for a product he is also doing the programing for.

For a project to be really good, the programmer, UI designer, and QA engineer should all be different people.

The programmer is too close to the code and cannot see the forest for the trees.  They are biased.  The bug couldn't be in that wonderfully elegant subroutine they wrote the other day.  I did a LOT of work getting this feature to work, therefore it should be easily accessed from the main menu.  These are all natural tendancies.

Richard P
Friday, December 19, 2003

Richard P, you raise a good point, and one I'm certainly aware of. However it is like writing - the good writer can see how others will see material. This is of course vital if you're an expert in the field, because otherwise you gloss over things.

The same talent is involved in UI design, and thus good UI designers who are also good programmers remain good UI designers. They are in fact a bit better because they can understand new possibilities for rearranging the interaction.

Ian
Friday, December 19, 2003

Show me a good writer who doesn't have an editor.

The actual working of a program have next to nothing to do with the design of a good UI.  Naturally, a hackjob of a backend will limit the choices the UI designer has in the front end, but a good UI will come from a good spec, not by viewing the header files.

A programmer will naturally avoid exposing areas he knows are weak and will focus on areas he's proud of -- no matter how good of a UI designer or QA engineer he is.

No matter how good at UI design your programmer is, if you have the resources, use someone else as the UI designer for that project.

If your programmer is by far the best UI designer on your team, you can't hire another good UI designer, and the UI design will not take away from his ability to engineer the non-visible components, then it may be best to go ahead and let him design the UI as well.

Richard P
Saturday, December 20, 2003

Personally I'm a little sick of the "elitism" that's typified by the cadre of UI designers trying to justify their jobs.  The ratio of posturing to actual advice is often quite low.

It's a great idea to have a separate UI designer simply for the division of labor aspect.  Designing a UI is not only challenging, it's also just a lot of work in general. 

But whether "UI design" deserves its own separate distinction and professional calling is a bit dubious.  That is, the idea that UI designers and programmers are not immediately interchangeable.

The job of all programmers is figuring out human-computer interaction.  For instance, if a feature does not behave quite as the user expects, that is very much a failing of the "interface" between a human and the machine.  Programs have basically arbitary inputs and outputs; choosing the right ones depends primarily on human expectations.

So why is UI design distinct and non-interchangeable?  Just because it's visible?  Well, one hopes that the program outputs, produced by the programmer, will find their way to the screen as well as the chosen arrangement of buttons on a window.

Much is made of user testing.  I don't see how user testing a UI is very much different than user testing a feature, in general.  Both are going to boil down to a statistical measure of what "makes sense."

Plus, in the end, I think the inability of programmers to design good UIs stems from two endemic problems:

a) a lack of user empathy--this is going to make your product suck, no matter what.  If a great UI displays outputs that don't make sense, expect the product to fail in the marketplace.
b) a lack of any process whatsoever.  Also not a good sign, for obvious reasons...

In short: even if your programmer is not the UI designer, he should be a UI designer, just by the nature of his job. 

I will make an exception where the two probably should be absolutely separated, and that's where internationalization is concerned.  A lot of ado is made about making products' global, which has essentially boiled down to swapping out text strings on a UI for different localities.

But as I recall, the English drive on a different side of the street we do.  People who speak Hebrew read from right to left. 

Designing UIs for specific cultures is indeed a specific domain of expertise, and does add a lot of value over what a programmer normally does.  Unfortunately, I'm unconvinced that it really recieves much emphasis; Unicode and its ilk seem to be the panacea-du-jour for internationalization.

it_ranter
Saturday, December 20, 2003

How about a developer with twin degrees in Computer Science and Fine Arts?  We have one like that... and he can write code with the best of them... and design incredibly usable UI's.  And the UI's look very, very professional... which is almost as important as usability when it comes to selling stuff...

dir at badblue com
Saturday, December 20, 2003

There is a problem with testing UI's. That is that you will be testing them with beginners, but for an application, as opposed to a utility, most users aren't beginners. There's a bell curve and most users are somewhere in the middle.

I know I'm repeating myself but you shouldn't even start coding until you have designed the UI. What's the use of coding a feature you find you're not going to use!

Stephen Jones
Saturday, December 20, 2003

Stephen, I couldn't agree more.

There is some good info by Tog here http://www.asktog.com/columns/057ItsTimeWeGotRespect.html and also on this site http://www.boxesandarrows.com/

Interaction Architect
Saturday, December 20, 2003

At it_ranter correctly points out, it's useful to be a bit discriminating in assessing claims that only non-programmers can design good UI's. Many programmers become programmers because they're very good at it.

There is also an enormous lot of garbage espoused by the non-programmer iideology. Organisations have been convinced to establish big specialist testing facilities staffed by "UI specialists" and then found they added nothing, held up programming and tried to undermine the development effort to further their own kingdoms.

Richard P, how can you possibly make judegements about someone's UI or other capabilities based on whether they're a programmer or not. I am a first class C++ developer and I am also a first class UI designer and artist.

Ian
Saturday, December 20, 2003

Richard's not making judgements about whether somebody is a good UI designer based on whether he's a programmer.

What he is saying is that however good a UI designer a programmer is he shouldn't be doing the UI design on a project he's coding because the two skills will get in each others way. That is a totally different thing

Stephen Jones
Sunday, December 21, 2003

It is possible for many coders to be biased in a way that makes creating good interfaces difficult.  We often don't have the best tools, for example, and most force complexity.  This is why it's important for me to know about the best tools; and when it's expedient to use inferior ones, to at least know I am doing this.  Once you start being ok with crap, that will seep into your product.

This is support for that item in Joel's test, re "best tools money can buy."

There are stories of programmers punishing themselves somehow when forced to compromise their ideals.

I informally tested these ideas.  I showed 3 or 4 samples of an interface I wrote to a group of people which included some developers who often were content with subpar tools and code quality.  These coders showed clear bias to the tersest, most 'idiomatic' interfaces, even though they knew the product was intended for nontechnical users.  Everyone else chose 'kinder' interfaces.  I believe this is a useful test.  In fact with this method, I attracted one person who really wanted interesting work to help me, and her ideas + design skills made the interface better than what I would have accomplished alone.

Tayssir John Gabbour
Sunday, December 21, 2003

Stephen: 

"What he is saying is that however good a UI designer a programmer is he shouldn't be doing the UI design on a project he's coding because the two skills will get in each others way."

That conclusion can be made about any one aspect of anything a programmer does.  It's just ye olde "my baby is pretty" syndrome; it applies to all aspects of technology.  If we're going to follow Richard's logic, programmers shouldn't really be doing anything. :)

Generally, programmers use external testers to validate the features they (sometimes) design and write.  Why not just pursue the analogy in the context of the UI, and have external UI "validation" as opposed to end-to-end UI design?

Again, I can see having separate UI design as a matter of division of labor; eg, taking away some burden, but substituing for the basic user empathy a programmer must have in all other aspects of his work is just inefficient and unacceptable.

it_ranter
Sunday, December 21, 2003

*  Recent Topics

*  Fog Creek Home