This Is What Happens When You Let Developers Create UI

November 27, 2006

Deep down inside every software developer, there's a budding graphic designer waiting to get out. And if you let that happen, you're in trouble. Or at least your users will be, anyway:

wgetgui screenshot

Joseph Cooney calls this The Dialog:

A developer needed a screen for something, one or two text boxes and not much more, so they created "the dialog", maybe just to "try something out" and always with the intention of removing it before the product ships. They discovered they needed a few more parameters, so a couple more controls were added in a fairly haphazard fassion. "The dialog" exposes "the feature", something cool or quite useful. Admittedly "the feature" is more tailored towards power users, but it's still pretty cool. The developer thinks of new parameters that would make "the feature" even more powerful and so adds them to the dialog. Maybe a few other developers or power users see "the dialog" and also like "the feature". But why doesn't it expose this parameter? New controls are added. Pretty soon the technical team are so used to seeing "the dialog" the way it is that they become blind to its strange appearance. Ship time approaches and the product goes through more thorough testing, and "the dialog" is discovered, but it is too late to be heavily re-worked. Instead it is given a cursory spruce-up.

If you let your developers create your UI, hilarity ensues, as in this classic OK/Cancel strip. But when The FileMatrix is unleashed upon unsuspecting users, it's more like a horror movie. I still get chills. And like a bad horror movie franchise, the FileMatrix is still alive and kicking, folks.

Friends don't let friends produce Developer UI.

Part of being a good software developer is knowing your limits. Either copy something that's already well designed, or have the good sense to stick to coding and leave the graphic design to the experts.

Posted by Jeff Atwood
213 Comments

Programmers are intelligent.

Programmers designed the UI.

Therefore, what we have here is an example of Intelligent Design.

Mark on November 29, 2006 10:15 AM

"If you let your developers create your UI, hilarity ensues"

That's way overreaching. There's a lot of UI literature theory out there that is meant specifically for developers. It is and will always be part of developing anything, be it a full blown GUI or just command line syntax. Developers can make a crappy UI just like they can make a crappy program, but a few examples doesn't prove they /all/ do a crappy job of it. Bad design is bad design.

The example really doesn't fit bad design either, as people have already mentioned. In some respects, he didn't design the interface, the people who wrote wget did; he's just trying to represent that interface graphically. Can it be improved? That's like asking if one more bug can be found and/or fixed in the application.

Matt on November 29, 2006 10:16 AM

Murray: Thanks for your expert commentary on Mr. Atwood's blog.

You might have missed it, but I'd say an example of his work is this web site. Hate it or love it Atwood's on top, and he's gonna shine, homie, until his heart stops.

Eam on November 29, 2006 10:18 AM

In case some don't realize - that wasn't developed by the wget maintainers, rather another individual.

-N

greyboy on November 29, 2006 10:28 AM

I went through last week redesigning the CSS for my blog from a packaged theme to something custom. And I went through the much expected horrified user/reader feedback on my initial design decisions.

One of my "gets paid for being a graphic designer" friends gave me the advice that he usually improves a design by "taking away" rather than "adding". Which is completely contrary to my "but this would be a cool feature to add" programmer mindset.

engtech on November 29, 2006 10:32 AM

Thanks. I didn't know this program existed. It looks really useful. I'm going to download it now.

Bob Smith on November 29, 2006 11:35 AM

Hey, that looks really useful. Do you think we can persuade him to do one for curl too?

nobody_three on November 29, 2006 11:48 AM

I agree with Matt V; the GUI is quite good for someone who knows wget.

One thing I believe a lot of people miss here is to think about for whom the GUI is for, namely persons who know wget but do not remember all command line options. Normally when using a command line tool you end up having to look in the manual (which is only text for those who do not know). You then browse through it for words that you think would be mentioned in context with your problem (say, "output", because you want to override the default output file). This takes time and can sometimes be like searching on google for something odd (or too usual to).

The application actually works as an interactive manual where, while the user is "reading" the manual also can try the functions. I looked at the webpage for the command and it said that all options also have tooltips which further adds to the manual idea.

The intent with this GUI is clearly to visualise the manual and make it easier to understand and I think, in that context, that the GUI is excellent.

However, if the GUI was designed for non-programmers/command line lovers et al, the GUI sucks big time.

Anders on November 29, 2006 11:50 AM

I'm a developer and yes, sometimes my GUIs look like the one above. Shame on me ;-)

Franklin on November 29, 2006 11:55 AM

Yes, the command line interface is no good model for a GUI. The typical man page for such tools has 120 options, sorted alphabetically. Perhaps 20 or 30 are relevant for more than three users in the history of mankind. If you are really lucky they have some usage examples at the end, but don't count on it.

wget is far from the worst of the lot. It has examples. They even tried to group the arguments into different categories, and it may look like they have tried to sort them for relevance - it's not alphabetical, anyway, so I suppose that's what they have tried. And the info file is actually nice.

Vintermann on November 29, 2006 11:55 AM

Given the command line options for wget, that UI could be much, much worse:
wget --help | grep "\-\-" | wc -l
102

I only count about 20-30 of the 102 possible options - room for improvement!

tomchuk on November 29, 2006 12:06 PM

Users ask for this crap--and much, much worse-- all the time. I've had users ask for the state abbreviations in an address to be 30 point BOLD ORANGE font, BLINKING, just so they could see it without looking for it. I refused. The SVP of the division demanded we make the change. We did. Guess what? Errors users made due to state-specific issues went to virtually nil. Made me think, hmm, maybe we developers and graphic artists don't know what the hell the users need after all.

michela on November 29, 2006 12:16 PM

And yes, I made all sorts of offers to automate whatever it was the users needed to do based on state, as well as numerous other suggestions to make the state abbr. more visible without making it 30 point orange and blinking, all were refused. :)

michela on November 29, 2006 12:18 PM

Hmm while there are some pretty hairy things in that dialog, I have to say that a big dialog with loads of controls on it is prolly the best type of design for a wget gui. The only real alternative is to just make it tabbed, or arrange it so that the controls are grouped in some manner.

Factory on November 29, 2006 12:19 PM

hold on kids, we hit the digg front page

Dan on November 29, 2006 12:27 PM

aaron g:

wget doesn't require any command line options at all, but does have default values for many of them. This shows those default values. Why hide them?

What is with this phobia over being offered choices? Just ignore the ones you don't need to use.

sewiv on November 29, 2006 12:29 PM

Aaron G:

You may want to consider that the criteria you would judge a command line tool on are not the same as people that live and breathe #.

wget requires no command line options - only a URL.It also doesn't do anything you couldn't do with firefox and a few million years to spare - it exists because the most usable choice is not always the best choice.

This GUI is fine for a wget check list and "compiler". It's not going to enable grandma to terrorize the web, but she would be better off with one of the lightweight firefox plugins anyway. As is, it would probably enable many wget users to get their options right more quickly than just using the command line version.

obediah on November 29, 2006 12:33 PM

I don't see any problem with it. Looks very usable.

Loddy on November 29, 2006 12:38 PM

""..At what point does a person become a developer?.."


Hey i became a developer when i produced "Hello World!"

jimmy on November 29, 2006 12:40 PM

iWhat is with this phobia over being offered choices? Just ignore the ones you don't need to use./i

Putting too many options in one place is overwhelming. It's perfectly reasonable to segment them out, so I don't need to spend 10 minutes poring over a needlessly cluttered dialog finding the two controls I need.

Brian on November 29, 2006 12:40 PM

wget is very useful program, I use it almost every day even on my Macs (from bash of course). It is a little complicated, but the man page is well written and the program is extremely effective at accomplish what you ask it.

Let's face it: recursively snagging web pages is a difficult task; the number of options is born of necessity not of some designer sadism.

I use GUI tools when they're most effective, and CLI tools when they're most effective. The two user interface paradigms don't necessarily translate to each other, and effort shouldn't be made to force it. However, being adept at both will make you into a far more efficient user, able to pick the best tool for any given task.

ian on November 29, 2006 12:52 PM

If it takes you 10 minutes to find something on this example, perhaps it's time for a new career?

If you're only using two controls, why are you using the gui? Learn those two controls and use the command-line.

sewiv on November 29, 2006 12:54 PM

I agree... I'm afraid of "Pro Mode".

In defense of the person that created this UI... I am positive that no requirements or wireframes were provided. Heck, there was probably no design process whatsoever.

For the record, this UI is hideous.

My Eyes Hurt on November 29, 2006 12:54 PM

Wha? I don't get it. What's so bad about this? It's so user-friendly. Oh wait, I see. It's missing a POKE statement. -EOF- Seriously, though, why do utilities have to look different than apps? I think all utilities ought to look like Songbird, but without the black areas. Very clean.

Michael Spurlock on November 30, 2006 1:24 AM

I feel sorry for people that cannot use it, this UI is just great, just RTFM you may learn to you it.

BTW wget is a GNU utility if you feel you can make better, grab the source and do it yourself.

TetrisMan on November 30, 2006 1:34 AM

This certainly is my kind of GUI, not the kind of GUI I code, though. Absolutely not. The thing that sucks about this is the layout, it's a little sloppy. But other than that, it's perfect for me.

When doing GUI design, I tend to keep things simple. No redundant nonsense, just what's needed to keep applications easy to use. Doing with as few controls as possible, making sure each control is needed for correct functioning of the application. Should do.

H on November 30, 2006 1:40 AM

As a software developer who has spent years writing front ends, backends and middle tier code I can say that my GUIs are always very usable. There is nothing difficult or challenging to a programmer in producing a decent user interface if you actually think about your work and have a brain in your head. Some programmers even read books on the topic you know.

What is far more pernicious is designers who think they can program! That is what is more likely likely to lead us to hell in a handcart.

karl23 on November 30, 2006 2:02 AM

Ironically, this IS easier to use than plain old wget for one-off gets, so technically the description is accurate.

I don't think the scenario that lead to this is accurate though - I think the developer really believes they've made a good UI here. You have to think like a developer to understand - there's features and code behind all those widgets. One feature, one widget. And it's all one program, so it's all one screen. It makes sense to him, because to him this screen is far less complicated than the code behind it. It just doesn't make sense to anyone else.

SoopahMan on November 30, 2006 2:27 AM

It is easy to understand if you are a normal wget user. besides if you don't like it you're free to make improvements to it.

noddyxoi on November 30, 2006 2:43 AM

Hi, it's me, the bad boy having written wgetgui. Thanks for the constructive comments quite a few of you made. I'll try to incorporate those that are easy to do (I'm not a developer after all...) into one of the next releases. I never thought people would count pixels to determine whether boxes are aligned! ;)
For those who wondered: Pro mode lets you edit the bat file yourself.
Those who assume I wrote it for myself are right. I needed to learn a bit of VB for a project and the only idea I had was this. (Yeah, lame, I know.) After I received some interest I released it into the public, for anyone to change and adapt it. Maybe the project I learned for can become "Today's worst GUI" tomorrow? It is called SolExl and can be found via google easily...
To those who think that it is not abstract enough for a GUI: I agree partly, for example, there'd be no need to name the buttons with wgetstart.bat! Using "File List" or similar would make more sense.
To those who think using wget directly is easier: I can imagine this, but _for_me_ it is much easier to use the GUI than a command line tool. Especially as it works really fast using dragdrop with links (works best in Mozilla).
It feels kinda funny when I read "developers should not design". I'm neither and I had noone to help me, this wasn't a team effort between a programmer and designer and whatnot. I had no real choice but do everything myself with software I had never used before. And yes, I thought quite a bit about what I should do. I know I often decided wrongly.
But I still think that using tabs would be wrooong with wget. ;)

Cheers
Jens

Jens on November 30, 2006 2:44 AM

I would add ... don't let the marketting decide when it's ready :-)

Mikecimerian on November 30, 2006 3:06 AM

You dont understand how true this is. I am SO bad at web design that I started using smarty because I am just SO bad at design. I let the other guys who are better at web design do it.

I am the founder of the Open Education Software Foundation

Aceofspades on November 30, 2006 3:13 AM

I like the UI. The designer just might have thought like me to give everything at a single click and single view ;)

A to Z of World on November 30, 2006 3:24 AM

wget's native GUI is called "man wget". Operation of wget is split between comprehension and command execute modes.

...and just for the record, I am posting this just as a 8 hour long, +3GB recursive wget complets.

Oh... and BTW, the thing that this "GUI" is missing (yes, it's actually missing someting very critical) is the feedback pane that displays the results of the issued wget (yes, there is a 'recursive' check box... so this is most definetly needed).

...so, yeah, this GUI is fscked in the head, but not for the reasons that you think it is...

anonymoustroll on November 30, 2006 3:58 AM

Hi Jens - I was the one that originally wrote about this. I'm not sure of your background, but when I saw the UI for wGetGUI it just reminded me a lot of different screens I've seen designed by developers (and probably a few I've designed myself). I know as an open-source thing wGetGUI is probably something you do in your spare time and I commend you on that. Because of that I actually tried to "obfuscate" the name of your app in my original post. Clearly I didn't do a good enough job (I suppose it is on some of those buttons at the bottom). Please think of my post as not a criticism of your particular application, but rather a comment on the difficulty of designing good UI in general, and the vanishingly small chance of coming up with a good design if you just let the buttons and checkboxes fall where they may.

Joseph Cooney on November 30, 2006 4:00 AM

Hi Joseph,
I'm a mechanical engineer and started wgetgui as a way to learn for a project (SolExl) while I was studying abroad. The project was to use VB - which I hadn't touched before.
I then found wgetgui to be actually useful for me. So, more controls were added step by step: Just as I _needed_ them.
So your initial "dialog" comment is drastic but not far from the truth. ;)
I do quite a bit of programming (for a MechEng) and programming is taught not enough in university. The little time that is used for that is surely not used to teach about good UIs. Also, I'm basically programming only for myself, so the motivation to refine the UI is not there. That's fine for my use, but sometimes I get asked to provide code or make the application public - that's when things get dangerous as I just noticed ;)

Cheers
Jens

Jens on November 30, 2006 4:20 AM

Fantastic example! Thanks for sharing. Let me know what else you're finding.

Also, I can recommend the classic book "GUI Bloopers" for lots of great examples. (Even though some of the examples are outdated).

Jesper Rnn-Jensen on November 30, 2006 4:23 AM

I agree that often graphic designers can make far worse GUIs than bad developers can. The thing that I've found that works - talk to your users! Get feedback either from your users or from customer support team (if one exists) who has to deal with users. Still, in my home projects, I've been known to jack with the Windows API to create things like "Yes/No/Maybe" messageboxes.

Nchantim on November 30, 2006 6:17 AM

Maybe its because its written by linux folks? At least they got a UI! From command line with hundreds of switches or flags to a UI! That's Revolutionary! ;)

Snappy! on November 30, 2006 6:40 AM

I see way too much confusion in these comments.

There are a number of different skills being discussed here. Interaction design is about how a user can interact with the application, how it makes sense and flows (among other things). UI is more nebulous and seems to be used in all kinds of ways, though most people I know who talk about UI are talking about a combination of interaction design and graphic design. And graphic design is more about layout, colors, fonts, etc.

I think developers get a bad rap for designing crappy UIs when it's often not their specialty to do so. What about the loser management who thinks these aspects are unimportant and that it's like finger painting for kindergarten kids to design a UI? So they spend lots of money on developers but skimp on or ignore the interface?

I see developers being pushed into interaction design way more than the other way around. Developers have lots of criticism leveled at them for bad designs. Would the software be any better if UI designers were pushed into writing code after they'd already worked a full day and as an afterthought by the management? Especially without having the skills or interest in doing so?

As far as the comment "stick to coding and leave the graphic design to the experts," I agree that it's best to have people that are really good at an area of expertise. But if anyone wants to put the time in to really learn and understand, they could become at least baseline-competent in either of these areas. It's not like either UI design or development are impossible to learn. But each DOES require training and practice to become good.

The thing that would actually help the most in many business settings would be for management to hire the right staff to do the job. If they can't do that, then it would at least help to train people and get them the information, skills and resources they need to do their jobs. Oh, and yes, set realistic deadlines.

As far as their being many more developers involved in open source projects than designers. Maybe more designers need to get involved instead of whining about how out-of-touch the developers are.

scott on November 30, 2006 7:18 AM

Guys, the product shown is Wget, which is an import-anything tool on linux (maybe other UNIX) and is uber-geek stuff to begin with. The GUI was designed by a third party as an open source goodie. The command line options had already existed for a long time and the help screen goes on for 3 pages. The sensible thing would have been to split the GUI into tabs but a lot of uber-geeks don't like tabs at all, so this is what you get.
Of course, this leads to the question of why a GUI at all, since the kind of people who use Wget prefer black screen anyway and don't see what the problem is with typing in 5 or 10 --options.

Jeff Rubinoff on November 30, 2006 7:28 AM

Jens, you absolutely rock!

Make more software! This site has never gotten more comments! Jeff owes you man. Ignore most everyone's comments, except maybe mine, and Foxyshadis'.

Code or die!

Steve on November 30, 2006 7:34 AM

You guys obviously haven't seen the software i work on. Cluttered mess of check boxes and drop downs. AND since it's a web app, the page reloads everytime you make a change... Good thing only the government uses it

Russ on November 30, 2006 9:26 AM

That is pretty funny (or sad) because that does happen so often. I would like to see a Graphic Artists version that gets all the same information (functionality) into the same area though.

Robo on November 30, 2006 10:10 AM

I've seen worse, too.

One thing that's often overlooked is that it goes both ways. Designers are writing more and more code: JavaScript, PHP, SQL, etc., and it's just as bad for programming as this is for UI. In some ways, it's worse, because if you have good code fronted by bad UI, it can generally be fixed (as a good programmer will decouple the UI from the actual functionality as much as possible), whereas there's often no saving bad application logic, it has to be scrapped and completely re-written from the ground up.

Nicolai on November 30, 2006 10:57 AM

Oh, well!
Saying "this is what happens when you let developers do ui work" is as invalid as saying "the iraq war is what happens when you give americans a gun"...
Let's just agree that you should know what you are doing!

0ffh on November 30, 2006 11:26 AM

are we so bad? damn...

lloyd27 on November 30, 2006 11:44 AM

I believe the root of the problem is usually due to the fact that management don't recognise the difference between a "UI/UE Specialist" and an "application developer". The latter being more of programming to make the application _work_ not _look_and_feel_ .

To them, a developer is a developer and the job scope includes building the UI.

Aaron on November 30, 2006 12:09 PM

Actually, I don't think this is too bad :-) If the intention is to let the developer do stuff without having to hack config files and isn't allowed to use a proper command line interface, why not? Of course, letting the average joe loose on something like this is another story.

rumz on November 30, 2006 12:46 PM

Actually, if youve ever actually used wget or other variants on GUI interfaces to the command line program; this interface is actually quite good and simple to understand.

What you mac users forget is that sometimes a task is NOT simple and sometimes its easier just having all the options on screen (course it assumes you actually know what your trying to accomplish with an application).. lol

Bob on November 30, 2006 12:46 PM

I'm not sure how this could be made any "prettier" without losing usability...

Andy on November 30, 2006 12:54 PM

Here's the same thing, done right:
http://www.hexcat.com/deepvacuum/screenshots/image/main.jpg

James on December 1, 2006 2:43 AM

Ouch Jeff,

Next time perhaps you should ask yourself about target audience and context of the UI before you offer it up as an example of bad design. As many have already pointed out this is actually well functioning piece of software and the UI meets the purpose of it's intended audience.

Good UI design isn't aethetic appeal, thinking that it is is showing a failure to grasp the basic principals behind a UI's purpose. I've used several 'pretty' UI's that I despised simply because it failed to facilitate the intuitive utilization of the underlying program's functions. Subjective reviews of UI are dangerous, if a design is bad, give objective reasons why the UI fails to accomplish it's purposes.

I agree with your basic point that developer's often fudge the UI, but don't be so quick to assume that all developers fail at good UI ;) I think Jens did just fine considering the original purpose of the application and his target audience (himself).

P.S. Never, ever complain about free software, because it's free ;p

alexmachina on December 1, 2006 4:37 AM

Actually, I LIKE that interface !

Mark on December 1, 2006 7:18 AM

Software developers are similar in tempermament to artists.
You cannot push them . In addition they are unmaneageable generally in temperment.

Betty Remple on December 2, 2006 12:33 PM

James,
Right? Please explain.

It's painful scrolling up and down through long lists of text in tiny windows.

The original was written by a user to do exactly what he wanted. So it was "right" for at least one person. Since the author is probably representative of his kind (wget users), his interface is probably right for a good many others.

I prefer the original. No mucking around with superfluous mouse activity to satisfy a non-user's fixation with particular widgets.

Murray on December 3, 2006 6:44 AM

@angtOrange: Hm, AFAIK .Net wasn't even released when that schmoe (me) wrote wgetgui. "Junior" I probably was back then, but a developer??

For my next project, the designer (me) will work closer with the coder (me) and the translator (me) and the user group (me) to create a product that meets the wishes of management (me) and is only then properly advertised by marketing (me) when it is ready to ship by customer support (me).
;)
Seriously, some really helpful suggestions here :)

Cheers
Jens

Jens on December 4, 2006 3:34 AM

Huh ://
What is it? It's realy horror.

Softmonster on December 4, 2006 3:50 AM

#1054;#1076;#1085;#1086;#1079;#1085;#1072;#1095;#1085;#1099;#1081; #1082;#1086;#1096;#1084;#1072;#1088;.

Tugarinov Sergey on December 5, 2006 3:19 AM

This is a fantastic UI. If the target audience is your general w-Get for dummies user, they would probably just use internet explorer. If your target audience is your serious p0rn surfer they would probably love the amount of features all crammed into one form.

Dev01 on December 5, 2006 10:47 AM

urrrmm... man wget? just use the command line ya pansies.

Iain Dooley on December 7, 2006 1:43 AM

@Mike:
Yep. Pro Mode (cheesy name, I agree) lets you edit the .bat file, import and append other txt and bat files.

@Iain:
As you can tell by the design, I'm a hopeless retard and cannot remember wget's parameters well enough. Besides, dragging'n'dropping links is easy for windows pansies like me. :)

Jens on December 7, 2006 4:39 AM

I love the "Pro mode" button... does that mean we're looking at the basic mode?

Mike on December 7, 2006 11:25 AM

It seems to me that most of the comments in here are from the development side of the spectrum. From a designers perspective, designing a functional UI can be a good combination of excellent programming and good design. Contrary to some of the comments here, a good designer doesn't simply add a rainbow of colors to make the UI "perdy". Designers will use spacial relationships and layout organization so that the user isn't overwhelmed. Since your target audience was yourself, then I'm sure it works perfectly. Yes, I'm a lowly designer; but I believe there is always a perfect blend of form meets function.

Let the flaming begin...

madmrshn on December 11, 2006 6:35 AM

How about comparing this screen to its equivalent in competing products? For example,
http://www.sparkleware.com/superbot/help/commontasks.gif

Chris on December 11, 2006 7:55 AM

@ madmrshn,
no flaming here from my part. I agree it would make sense to present basic users with three options (file, page, site) and put the rest onto another tab. As deep down I'm a nice guy, I might do that if I find a way to not compromise the power of my dialog "design".
I used "spatial relationships" and "layout organization". Not in a way you and many agree with, obviously. But I did.
And with one click on the "-" button that "overwhelming" dialog becomes so small and handy, you will not want to stop dragging those links! :D

@Chris
As I said, the idea (which isn't unique to Superbot) of having three basic options (file, page, site) is a good one. However, browsing to the SuperBot homepage and seeing those screenshots
http://www.sparkleware.com/superbot/screens.html
I can't help but notice that it takes a lot of screens to enter those things that are accessible on one page with wgetgui. Implementation of that regex code is something I could use to further disfigure my dialog. An evil plot is thickening and sickening while we type :D
PS: Superbot costs money...

Jens

Jens on December 12, 2006 5:37 AM

But it's not that bad! (im a programmer)

LOL

Luigi R. Viggiano on December 22, 2006 3:21 AM

This reminds me of the UI of MSN Live. It made everything harder to use and it had a lot of bugs in it. I downgraded to 7.5.

clueless_furball on December 23, 2006 4:30 AM

seen development from both sides (programming and graphic design) and chose fill the chasm in between - if you're going to take the time to make a GUI, take the time to test it (or even talk) with one or two users. If you're a programmer or a graphic designer who has to do a lot of UI, take the time to read one or two resources on the subject. All of this would take an afternoon of concentrated effort, BEFORE you start to program or design and at one or two other stages of development.

hag on February 6, 2007 9:10 AM

I see the screenshot from this page, but without running the program itself I wouldn't know what bugs it might have. Can someone explain exactly what part of the screenshot is the problem?

Name is required. on March 1, 2007 10:52 AM

I blogged about this some time ago too.

Has anybody tried to contact the author? I wanted to, but I kinda felt bad. The irony is that he's pretty proud of this GUI if you read his page!

http://sellmic.com/blog/2007/02/20/usability-matters/

Augusto on March 13, 2007 11:18 AM

I'm right here, Augusto.
Why did you want to contact me? To help me improve it? Then you'd have nothing to feel bad about.
Am I proud of wgetgui? Not really, but neither am I ashamed of it. It worked very well for me - originally the only audience - and it also works well for some others.

Cheers
Jens

Jens on May 8, 2007 5:00 AM

wget::gui is another GUI for wget.

[url]http://www.martin-achern.de/wgetgui/index.html#screenshots[/url]

It is in the same manner as WgetGUI, but the options are arranged like the wget-manual. No batch- or shellscripts are used. You have all options of the GUI in one view, without switching through menus, tabs or dialogs.

You can save your options to different settingfiles. So you can manage many different tasks without huge effort.

Rudolf on May 22, 2007 4:27 AM

What I find most amusing is that there is a 'Pro Mode' button on that dialog!

There would have to be. This is wget we're talking about. It's a very advanced downloading and mirroring tool, with way more functionality than you could ever cram into a dialog box that would fit on the screen. (I imagine the Pro Mode box must be a tabbed interface. One boggles. Either that or it's a big fat textarea where the user types in the arguments to be passed to wget on the command line, which incidentally is roughly what I'd design if I someone held me at gunpoint and forced me to design a UI for wget for MacOS 9.)

Hmm while there are some pretty hairy things in that dialog, I have to
say that a big dialog with loads of controls on it is prolly the best
type of design for a wget gui.

Frankly, the only UI that will ever make any sense for wget is the command line interface (and the config files of course). Making a GUI for it is inherently silly. End users are never going to have any use for most of its functionality, even the subset shown in that ridiculous dialog above. Frankly -c (the "continue that previously interrupted download where it left off" option, a bona fide life saver for dialup users) is the only option (beyond the URL to retrieve, of course) that an end user is ever going to want. The rest of the functionality is all poweruser stuff, and they can consult the documentation and use the command line.

Jonadab the Unsightly One on September 24, 2007 7:09 AM

If the wget GUI looks like this, I'd hate to see the source.

You misunderstand. This GUI was not created by the wget developers, but by a third party. wget is a command-line tool, and was never intended for end users. Making a GUI for wget is kind of like making a GUI for grep.

You don't see FTP clients all centering around that idea, despite
the being the same in concept!

That's really unfair. Normal ftp clients don't do the stuff wget was designed to do. Some of them have one or two of wget's niftier and more generally applicable features (e.g., some have retry, and I saw one once that had resume), but complaining that wget doesn't have a nice end-userey interface like ws_ftp is sort of like complaining that a recording studio mixer with sixty channels is harder to use than the single volume knob on a basic boombox. There are bazillions of simple GUI-oriented download tools out there, some better than others, but wget is not trying to compete in that space. It serves an altogether different purpose.

In fairness, you're not the only one to fail to understand that. In fact, I'm pretty sure the creator of this wGetGUI thing didn't get it either.

I'd like to see some other examples people have run across along the way.

I wish I had a screenshot of the configuration interface for Polaris (the library automation system). Hoo boy. Fortunately it only ever has to be used by system administators, but even so it's quite painful to use. I suspect a lot of line-of-business software has some pretty bad UI, actually, because the developers typically assume it never has to be used by anyone who doesn't receive specific training for it. (Of course employees in most industries usually don't get nearly the training they ought to have, but that's the difference between theory and practice for you.)

Come to that, Visual Studio Dot Net has some pretty bad UI in it too. I'm thinking particularly of its UI for creating Reporting Services rdl files (the things that specify how the data returned from a database query should be layed out on paper as a report). Writing the XML by hand would almost be easier. Actually, with a decent text editor and a good reference book on the format it might be.

Or the Windows 98 interface for installing hardware drivers. Remember that little dance? Click Start. Click Settings-Control Panel. Double-click System. Click Device Manager. Select the device in question. Click Update Driver. Click Next. Click "let me select the correct driver", because the find-one-automatically option pretty much never ever works right. Click Next. Click Have Disk. Click Browse. Wait for it to scan the floppy drive, even though there's clearly no diskette in there. Click drive C: and so forth until you find the directory where you unzipped the manufacturer's drivers. Click around randomly in the directory hierarchy there until you find the folder with the correct .inf file. Click okay. For each associated driver file it can't find, repeat the last five steps (starting with "Click Browse", above). Then for each file it wants from the Windows CD, repeat those steps again only with the path for that. Reboot and pray that it actually works. Bwahahahaha. (There are people out there who will look at you with a straight face and claim Windows XP is not an improvement over Windows 98. One wonders if they've somehow managed to completely avoid ever needing to do a reinstall.)

There is one thing, much, much worse then having the UI designed
by a developer: having the UI designed by a graphic designer.

I wholeheartedly concur. I've seen that, and it's wretched in the extreme. Among other evils you get icons that look nice enough but don't communicate squat, rigidly inflexible layouts that break in horrible ways as soon as you populate them with real-world data, controls that do a perfectly standard thing but for no earthly reason are just gratuitously different enough from the usual standard widgets that users have to be specifically trained on them, important controls that users don't see because they look like mere design elements, and other things that look like important controls that ought to do something useful but turn out to be just decoration.

Ditto the comment about the 'Pro Mode' button. I want to see what that does.

You can probably get some idea by reading the wget man page. (For Unix-challenged readers, you can just google the words wget man page and find a copy of the relevant document online.)

wget has a ton of options, but really only a few that you use often.

Talk to a hundred different wget users, and you'll get at least eighty different lists of which options they use often. That's the problem. In fact, you see that big fat dialog box at the top? It's actually missing one of the options I use most often (specifically, I don't see any UI for the -p option, which is really handy and probably the option I use next-most-often after -c).

It also doesn't do anything you couldn't do with firefox and a few
million years to spare

Actually it does. Quite a lot. In order to get the full functionality of wget you'd need, in addition to Firefox and a whole lot of spare time, a text editor (to do things like -k), a file manager, an ftp client (for active ftp), and a Firefox extension to preserve the http headers, plus the Web Developer Toolbar, and that's just off the top of my head. Also I'm not sure Firefox's network options are really configurable enough, even with about:config, to do some of the things wget can manage, so you might also need LWP or somesuch. Come to think of it, if you need wget, then you need wget. Firefox is really completely inadequate. The only real competition for wget that I'm aware of is curl.

A lot of these comments act like wget is just a file downloading utility, but that's missing the whole point. If you want a downloading utility with an easy-to-learn GUI and a small handful of options, then you are clearly not part of the target audience for wget.

Jonadab the Unsightly One on September 24, 2007 9:49 AM

This is one of my favorites posts on this blog. I make all the devs on my various projects read it - so true!

a.k.n.s. on October 1, 2007 9:53 AM

Another example is MediaEncoder http://mediacoder.sourceforge.net/. On paper its brilliant software -- allows you to convert all sorts of media from one format to another. But installing and running it -- good grief! It requires superhuman like intelligence, fortitude and iron hard abs to figure out just which of the tabs, button, scrollbars and widgets to click to even START the process!

M on October 5, 2007 2:51 AM

Disclaimer: I am a developer.

Of course, you could always let graphic designers make user interfaces. That _always_ works out well (not!).

Look at Trillian. Particularly the older versions.
Look at Winamp 3. And Winamp 5, for that matter.
Look at Avast Antivirus, when you use the Skins interface.
Look at Nero's "smartstart" software.
Look at ASUS' "MyLogo" utility (for making custom BIOS images with your own logo on them)
Look at ATI and NVidia's graphics card driver installers in 256 colour mode (where they are normally going to be used). In fact, look at any graphic card driver installer.
Look at Internet Explorer 7.
Look at Windows Vista, heck, even Windows XP is pretty bad with it's "Fisher-price" interface...
Look at any consumer-level video editing software.

All of these programs had "designers" behind them. They're all bloody atrocious.

Now look at some applications that are designed by "developers", such as the GNOME desktop, and XBMC. They have great HCI.

wget is a command line utility, and the complexity of said GUI reflects how many command line options you give. While it's not great, you'll be troubled to write something better that allows as many options as that, without having property page nightmares like you do in Windows (particularly Windows Server). I for one hate property pages, and property-sub-pages.

michael on December 14, 2007 7:53 AM

Dude, please don't generalize.

That is like saying "Oh just look at that fiat uno! It's disgusting! Car manufacturers are useless as designing cars."

There are ferraris out there.

We dont look at one bad blog and say "Oh - bloggers can't design."

Bryan on April 5, 2008 1:27 PM

"This is the best UI i ever see" (a developer)

federico on May 23, 2008 2:03 AM

There is not a DAMN THING WRONG with this simple UI for wget.

get a fucking clue.

jas on June 7, 2008 1:09 PM

Sometimes you will spot good programmers who are also good graphic designers. Sometimes. ^_^

protospike on August 13, 2008 12:08 PM

NICE gui! let the developers do their job...

george on September 13, 2008 1:27 PM

The best thing about that GUI!?

THE PRO MODE BUTTON...

Looking at that GUI I am horrified to think about just what is lurking behind that button...

Alexander Higgins on November 4, 2008 10:24 AM

I love this GUI. I get every option in one screen. No need to run around trying to find something. Or worse, not even knowing the feature exists. More GUIs should be programmed like this.

In my private work, I do program such GUIs and my clients love it.

Only the developers should make GUIs, not clueless managers and designers who don't know the first thing about software.

There is absolutely nothing wrong with this GUI.

oneman on November 4, 2008 11:20 AM

I guess I'm the only one here thinking, AWESOME! — aren't I?

By the way, I want to know — what's behind the Pro Mode button? :D

Anonymous on November 4, 2008 11:23 AM

Developers are good at what they do, and a brilliant developer is worth their weight in gold. And if someone knows a graphic designer who tries to code, then they are the exception, because most designers are afraid of anything resembling code (probably better for all of us).

Graphic design is not the same as designing interfaces. Not by a long shot. And I would say anyone who refers to the buttons and stuff as a UI is probably a developer.

The problem here is not one of colours (which is branding, not UI, or GUI, or usability, or any of that, so stop referencing colours) or icon styles... it is one of people thinking that the way the interface looks is a superficial element of software. To a typical user, the interface IS the software. That bears saying again... the interface IS the software, to the user. To the user, coding/programming is whether it works or not, and in their minds, that is a boolean variable.

As a developer, the smarter and more specialized you are at development, the more UNlike the user you are, and therefore you NEED someone who only cares about the presentation of the information on the front-end to handle that. A perfect example would be the button next to the URL textfield labelled - . What the hell is that button? And did anyone notice that it's possible to choose no info and all info and some info at the same time? What happens if that is done? Does the universe explode, or do you just get 42 as your output?

The two biggest fixes that should be made in UI (I am specifically a designer who does UIs and works directly with developers as a specialty) are these:

1) The interface almost NEVER exactly matches the data model. Yours is not the exception. Basically, the closer it does this, the further you are from an easy-to-use interface.

2) Thinking that you need to see everything that happens. Maybe during testing, but in real life. Most things don't actually require the user at all, and most other things only require the user at certain times. A good rule is, if I am not directly manipulating data, then it doesn't need to be in the UI.


Basically if you have said, or agree with, any of the following quotes, step away from the user interface, because you do not have the ability to tell a good UI from a bad one:

Some people are GREAT algorithm writers. Some are great at getting data efficiently. Some at writing components. Some at UI.

I speak as a programmer who used to design UI's a bit...

The only real alternative is to just make it tabbed, or arrange it so that the controls are grouped in some manner.

GUI programming is not any different than other types of programming.

If the user learns to use the application, it might be easy.

Pretty colors dont make an application more useful.

At least the UI is honest and directly layed out.

Personally I'm a strong coder, average at designing UI in terms of layout and function, but awful at choosing colours and drawing icons and images.

My organization does not have the means to hire someone just for the UI-work

Most developers have some sort of intuition and can come to a decent result by means of prototyping.

The UI displayed here is perfectly usable for it's intended audience, but a clueless graphic designer can render such an application utterly and completely useless.

This gui interface makes sense as it shows all the options at once.

I hate UIs that hide stuff. Show it all to me.

As a developer, I would actually like to see more interfaces like this.

If you dimwits actually learn how to interact with the commandline then you don't need something like is displayed.

It's mathematically complete.

For someone who knows wget, this is not a horrible interface.

*******

This argument in a nutshell:

http://www.ok-cancel.com/strips/okcancel20031010.gif

and

http://i359.photobucket.com/albums/oo32/Uuseer/func.jpg

Joel on November 5, 2008 3:14 AM

This UI looks perfectly fine to me. Why? because of the scenario that lead up to it. A designer needs to toggle things during the course of development. In this case, it conveys 1) the user is intelligent about the application, b) the user has a number of specific requirements that s/he needs to satisfy/check in the implementation, and 3) I would guess that the collection is elegant ( all the stuff in one place, logically organized, relatively). Why is there this overwhelming push to make 'rocket science easy for idiots?' Everything cannot be boiled down to simplicity, so easy a cave man can do it. Now, not all users are rocket scientists (but they should be..lol). Having said that, a reasonable approach would be to provide the necessary information on one relatively simple box, and then trundle down a tree to the more detailed/esoteric capabilities, implementable a number of ways (tabbed index, tree dialog boxes, etc.)
On size does not fit all, and a neophite should not always be the lowest common denominator in considering UI design.

3_jeeps on November 5, 2008 6:38 AM

The scary thing is the button marked Pro mode...

Ken on November 5, 2008 8:27 AM

THANK YOU, Joel. I see way too much we need smarter users excuse-making going on here.

Are some developers also good at user-interaction design? You bet. Are some graphic designers also competent UI designers? Yes. But in both cases, it's a rare combination of unrelated skills, not a rule.

Just because you build the underlying functionality doesn't mean you're qualified to design the UI. Maybe you are, maybe you're not. But it's no more likely than a plumber also being a skilled architect: two different jobs that focus in two different directions.

Calybos on November 5, 2008 8:37 AM

Read Alan Cooper's The Inmates are Running the Asylum for the principles of user interaction design (an important precursor step to user interface design) and his About Face 2.0 for putting them into practice.

You are right - never let your coders work on the user interface without supervision and guidance. The above named books explain why.

CraginS on November 5, 2008 11:33 AM

Check out THIS interface:
http://lifehacker.com/5100037/bulk-rename-utility-blasts-through-your-file-naming-tasks?skyline=trues=i

Gav

Gavin van Lelyveld on December 1, 2008 5:00 AM

I'm sorry but that's a pretty lame stereotype (imagine how it would sound if you replaced developer with some minority group). Why can't a good developer also be a good graphic designer? Are all developers automatically inept at graphic design? Is graphic design really that hard? I don't think it is. At least, not for software interfaces. It can be time consuming and may take a bit of trial and error to see what works (who better to do that than someone who has control over the UI itself?) but that would be true even if a professional graphic designer was doing it.

I've seen interfaces designed by graphic designers. You don't want that either. What you want is a developer who can design to consult with others (including graphic designers and users) to create a well-thought out and well-designed interface. In my opinion, being a good UI designer is part of being a good developer. As is the ability to write documentation or any other aspect of software development. These are not hard things to do.

Dave on December 6, 2008 1:40 AM

Sometimes you will spot good programmers who are also good graphic designers. Sometimes. ^_^
http://proektbaza.ru/

Olen on January 28, 2009 7:55 AM

I think this GUI is perfectly right for the audience it is intended for: users of wget == geeks. It is not posing to be a getright or similiar tool alternative so just stop whinging ;)

Bartman on March 12, 2009 7:35 AM

Wow. Just one bad UI and you fold up every single developer in it. How mature.

Maedhros on March 27, 2009 7:14 AM

A good developer will give the GUI the same treatment as they give their code. Well commented, good refactoring, no smells. If the wget GUI looks like this, I'd hate to see the source.

Jason on February 6, 2010 9:52 PM

I think a site needs to be created where you can submit a User Interface for a "Worst GUI desing of 200x". You're example is pretty horrific but also pretty funny. I'd like to see some other examples people have run across along the way. I've seen some great ones, especially by Microsoft Access "Developers".

Chris Gordon on February 6, 2010 9:52 PM

I don't wanna know the code that controls "The Dialog",

Ramon Antonio on February 6, 2010 9:52 PM

Some of the comments in here scare me. No wonder there are so many awful UIs out there.

Jeff, you remember the "file copy routine" mock interview that you linked to a while back? The one everybody thought was so clever? Well, picture Windows Explorer asking a user all those questions every time they ctrl+dragged a file.

As for it being an extension of a command-line tool, I ask a simple question: Does the command-line tool require every single one of those options to be specified? If so, it's not a very good command-line tool at all. If not, hide the options which the command-line tool doesn't require.

Sometimes it's more than just bad UI design. Sometimes programmers are simply not able or not willing to do the hard work of making compromises, so instead they just shift the burden onto the user. It's one thing (and many would argue, a bad thing) to provide choices; it's quite another when those choices *ARE* the program!

Aaron G on February 6, 2010 9:52 PM

«Back | More comments»

The comments to this entry are closed.