Log in

David pointed me to this essay, linked off Slashdot, about open-source usability. It's an interesting read. I disagree with his assertion that GUI design - or artistic design in general - is an "innate ability." What appears to many as innate ability is, I think, more about attitude and passion. I also disagree with his statement that GUI design is an "order of magnitude more work": in the average commercial software development project, about half of the time and half of the code go into the interface. What would take an order of magnitude more work is to change hackers' opinions about human-computer interaction.

Last week I was having a discussion with a CMU student about "HCI evangelism." He said he used to argue that human-computer interaction was part of computer science, but now believes it is and should be considered as a separate discipline. I think that it is different from traditional computer science, but I think it's too important to computer science to push it off in a separate department, so the "pure" computer scientists don't have to deal with it (and can continue thinking of it as inferior to "real" computer science). It should be present in all parts of computer science application-building. It's not enough to slap an interface on top of an application; good interfaces are built from the bottom up, giving the right handles to the next level, and that can only happen if developers at all levels know something about usability.

I also think those who say that HCI is "too young" to contribute anything yet are short-selling the discipline. Sure, human-computer interaction has only recognized itself as a discipline for 15-20 years (though over half of that time as "man-machine interaction"), but computer science has only recognized itself as a field for about 50 years! Concepts tested by both time and HCI professionals - such as prototyping, user testing, the human information processor, and the model-view-controller architecture - could help hackers and other code monkeys practice user-centered design. Of course, getting them to appreciate it in the first place is another problem entirely. Just make user-interface design a required course in computer science curricula! ...

In our discussion of all this, David slammed me for wanting to make interfaces so simple that they take away the power that computers have to manipulate information, perform repetitive tasks, etc. How can one have the power of the command-line in the graphical interface, so everyone can start using computers as the powerful tools that they are? This task is many orders of magnitude harder than just usability. It'd be great, but I sure don't know how to go about it. Some programs have taken shots at this, such as Photoshop's batch "Actions," spreadsheet programs, Office's macros, and some of XP's right-click menu options, but those still don't have the power of shell scripts. Still, just because I'm stupid about it doesn't mean that others are too.

I disagree with his assertion that GUI design - or artistic design in general - is an "innate ability." What appears to many as innate ability is, I think, more about attitude and passion.

I disagree with you here, at least as far as artisitic design is concerned. My slides for talks always look terrible. I don't know why, and I don't know how to fix them, but many other people manage to make things that are much more visually appealling. I often sit and think: "Why is this ugly?" and yet leave with no idea how to fix it.

But my main thought about the essay is that the guy who wrote it doesn't believe in open source. He makes a potentially valid point--that for user interface design, there has to be a coherent leadership so that the look is consistent. I could believe this point is true, and maybe this requires a development model that requires closed-source software.

But then he says repeatedly that "programmers need to be paid", which is not addressing the specific problem with user interfaces (the need for centralized control), but is refering to open source development in general.

Clearly what you've tried --- sitting and thinking, "Why is this ugly?" --- hasn't improved your ability to make your slides look good. But that doesn't mean there's no way to improve your ability to make your slides look good. Maybe there are other things you could try: looking at beautiful things, creating imitations of beautiful things, taking art classes, comparing beautiful things to one another and discussing the ways in which each excels the other. Oh, and creating a lot of things you try to make beautiful. (I'm guessing that the total amount of time you have spent making slides over the last year is on the order of 40 hours, but if it were closer to 4000 hours, you might have different results.)

I haven't had much formal art training, but I've done a fair amount of art, and I have various family members and friends who are artistic - those informal experiences help me, and maybe your peers who can make spiffy slides are similar.

Every university seems to mean something different by "computer science," and some of them do their best to exclude anything practical from that rubric. Including HCI.

I don't really agree with the CMU student's point of view. Programming divorced from HCI is usually pointless; HCI divorced from programming is crippled. I like Mitch Kapor's conception of "software design" or "software interaction design".

Some software that has made the power of programming more accessible: spreadsheets, askSam, Hypercard, JavaScript+DHTML, PHP, Perl, Shockwave/Flash, Smalltalk, Logo, even sh --- shell scripts, after all, are the command-line equivalent of macros. But most computer users are still not free to really use their computers. Open source is a much more potent idea in a community of programmers. How can we bring everyone into that community?

I posted some ideas on kragen-tol a couple of years ago. I don't yet know what to do next on this.

How many Python programs have you seen written by non-programmers? How about Perl programs? Hell, Matt Wright didn't know how to program and he wrote a whole book about programming in Perl and wrote software used by hundreds of thousands, maybe millions, of people --- a significant fraction of whom modified it, despite also not knowing how to program.

I think Python is a terrific language, but so far I've mostly seen it make existing programmers more productive, not initiate new ones.

I was a UI manager at one point - plus all front-end design plus and directly with other engineers on how to getting some of my programming-based ideas. UI is difficult b/c it's a combination of knowing what's capable in programming (or knowing how to ask for it via a language translation), to understand design language, to infer and understand what users want, to business/marketing/sales in their languages to determine what they needs. And then be skilled enough to take all these translations and marry them into a UI that pleases everyone. Sometimes this isn't possible. When you verbalize or visualize the best compromise of what is possible you'll sometimes get response back like "None of this is rocket science" (i actually did get that from an asshole VP who just has an MBA from stanford and thinks he knows anything about UI when he knows not a whit of code or even common user interfaces)

I also learned to give up some of my own personal preferences like I really hate the overuse of field-specific i buttons that give info in popup windows but gave in to that b/c when building financial software, this is what the users found useful even if I personally hated it.

I learned to give up on technolgy I hate for business decisions. I didn't want username/passwords to be handled via Javascript. I came in with documentation on lawsuits that were lost b/c of this process and also documentation on the problems with accessibility on going this route. I still lost my case and had to work with Javascript-based software that severely limited the userbase (amazingly, also not the brightest business decision)

I learned to forego aesthetics at times - but only after I'd fight with marketing who always seem to think they know everything when having everything bold and in your face really sucks and provide alternate solutions. I worked with QA to get actual customer responses as an effective tool to counteract fucking marketing's bullshit.

This is just in a commerical context; open source developers aren't usually privy to the extent of information I have available to me as a UI manager. Thankfully, I don't have an ego that demands everyone follow my worldview.

I don't agree that this is innate b/c I don't like that it implies that UI design is person-specific. I also didn't like when I tried to find more info about Stanford's HCI program that they sent me back an email and told me that they wouldn't even consider me for their program b/c I have no cs degree. Instead, I have 2 BFAs and 1 MA plus 8+ years of web design experience and 2 years of college web design teaching experience? And I've done some basic programming and worked in UI?! Where exactly am I not qualified? I haven't bothered to look at the work produced by that program b/c if it's cs specific, I'm sure it's not as good as it could be if they're not going to seriously consider aesthetics or psychology in UI as part of their program requirements.

As far as the magnitude of work, I was the only UI manager at that team. I worked with 4-5 programmers. I had a lot more face time with people and interdepartmental translations to do, but I don't consider it an "order of magnitude" greater in workload or work requirements.

I don't see HCI as a discipline beneath cs but as an interdisciplinary program that should combine user psychology, aesthetics, cs, and basic business/marketing decisions as well as historical technology changes and their impact upon eventual design b/c good UI can encompass all of this for the best possible (not 100% perfect) outcome. I do agree not all cs students are good at this or even want to be so I think it should be optional that they could participate in this - and have them provide feedback if they're into it but not if they're not. I wouldn't want to exclude a Ping who's amazing with this?!

Macromedia has been making an attempt to satisfy both users in their sofware by building for both and giving the user the option to either use their software at a basic or advanced level. While this sounds nice, I think they almost should be separate software with different costs or a little more user friendly than asking the user if they're stupid or not basically.

to be fair, the company i worked for didn't really know what a person like me was supposed to do. when i was hired, i noticed there was zero interdepartmental communication and no one was addressing client issues. now that's a problem. so i just leveraged my job position to improve interdepartmental communication and increase getting needs met rather than ppl bitching back and forth about departments. so i defined my role. i noticed language problems in translating b/w departments limited communication. like sales would want something but had no clue how to translate that to engineering or worse never communicated it b/c of intimidation. so i was the friendly face b/w departments and also tracked customer responses as well in order to seriously improve all-around the product not just in software design but also in creating/writing engineering support documents in a web-based format like explaining sessions to sales as support for them so if a customer (and they do) calls about it, they can just look it up quickly and read the response back to the customer on the phone w/o really needing to remember all this technical stuff b/c they had no interest so that improved customer tech support in additon to the product. and improving interdepartmenal communication helped to get multiple needs met in the same interface which seriously improved the product a hell of a lot.

where do open source developers get to do any of that? they get bug/feature reporting which helps but i mean it's not like a more accessible community like your work environment...?

I think the essay by John Gruber that you cited is unnecessarily harsh on Eric Raymond. Sure, Eric doesn't have the whole picture — but no one can claim to know the final answer on the entire issue. Eric doesn't really believe in "spray-on usability"; he knows it's deeper than that. And John is naive to say that Eric's problem is beyond what Aunt Tille would have to handle when he asks, "In what world does the archetypal nontechnical user have two computers connected by Ethernet?"

I agree with you also in your opinions about innate ability. As with many skills, interaction design is a blend of innate ability, learned ability, knowledge, experience, and perseverance. John Gruber writes: "It’s an art, and like any art, it requires innate ability. You can learn to be a better writer. You can learn to be a better illustrator. But most people can’t write and can’t draw, and no amount of practice or education is going to make them good at it." He is totally off the mark. Millions of children are in school learning just those things, and a lot of them do become decent writers as a result. They don't all become Edgar Allan Poe, but so what? We're still much better off with a more literate population.

Every computer science program should include (a) an ethics course; (b) a human factors course; and (c) a security course. There's simply no denying the fact that computer "science" is to a large part a generative endeavour, like engineering, involving and affecting human society in profound ways. It's high time computer science education accepted responsibility commensurate with its power.

At UNC/Chapel Hill they apparently have a very good visualisations group (a form of HCI, I approve). The physics dept has a very nifty set-up, where they have a haptic feedback device (a sort of "pencil" that you can manipulate, that is attached to a sensing arm). The haptic device controls an atomic force microscope, so it's exactly as if you're running a sort of pencil across a surface.. only the surface is only a few nanometers across!

My UI story: About two summers ago, I was tasked to write a program that would 1) read in sensor data, 2) let the user pick an error model, 3) use a GUI to choose how to cluster the points, and 4) run a Kalman filter to produce the graphs we want. I'm not a programmer; I work in MATLAB because I can fiddle with data easily. My first script had a UI which was intuitive to me (well, I wrote it, so maybe that's isn't saying much), but apparently not for my supervisor. I started to walk him through the interface (which was all clearly documented in the code) but he stopped me and said if the rest of my explanation was as confusing as the first steps I detailed, the GUI was too clunky. He then gave me a list of changes to make (some of which I would have never thought of, such as using the borders of MATLAB figures to scroll and zoom). This roughly doubled the time it took to complete the program, and since I was a summer intern who had a fixed amount of time to complete his research project, I naturally chafed. But he reassured me that UI was always important because other people, equally time-anxious, would be using my work after I left at the end of the summer and can't answer their questions. It would be instead a waste of their time if they had to laboriously go through my code to figure how to work the GUI.

Anyway, in retrospect, the changes in the GUI were for the better. The new interface even allowed me to process the experiments I needed to run for my project faster than if I had kept the old GUI. I think the difference here was one of "attitude." I came at the assignment from a purely end-result oriented perspective. Let me write something which will get the job done, and let the user figure out where he fits in the picture. I hazard a guess that many programmers are the same; they lose themselves in getting the computer to go from point A to point B (and details like deadlines and squishing the never-ending procession of bugs) and forget that their code isn't worth much if the user can't (or won't) use it.

As for whether GUI design is an innate ability or not, I'm still undecided. I may one day become well versed in GUI design practices, but whether my poor creativity skills can come up with an innovative interface (barring the inspirations I occasionally have) is an open question.