I <3 Steve McConnell*
Coding Horror
programming and human factors
by Jeff Atwood

November 27, 2006

This Is What Happens When You Let Developers Create UI

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    View blog reactions

 

« Discussions: Flat or Threaded? The Project Postmortem »

 

Comments

Wow.

The homepage for wgetgui says: "The easy to use Graphical User Interface (GUI)"

I think perhaps they are unaware of the meaning of the word "easy".

=)

The Geek on November 28, 2006 09:41 PM

If you've got UI problems, I feel bad for you son.
I've got 99 problems, but design ain't one.

Eam on November 28, 2006 09:46 PM

Unbelievable!

jd on November 28, 2006 09:50 PM

Jeff, you have a habit of using the word "developer" wayyyy to loosely. Just because it compiles and has an event, does not necessarily qualify the person.

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

At what point does a person become a developer? I don't know. Maybe when it is almost as good as a shrink wrap product? Who knows anymore?

Steve on November 28, 2006 09:53 PM

Another example - the GUI for putty. While having a Windows ssh2 client is very handy, the UI sucks big time.

Spruce Moose on November 28, 2006 10:18 PM

You assume that these UI's were actually "designed."

If the developer of something like that spent as little time designing his software as he did his GUI, the product would have never made it out the door.

The problem is that UI's are mocked up for testing purposes and then deprioritized until there is no time left for them. Designing an easy to use UI takes exactly the same process as designing the rest of the system - talk to the users, do some research, build, test, and repeat. A developer or a graphic artist/designer will do just as well there.

Now, if you want it to be PRETTY as well as functional... yeah, get yourself to an artist.

I speak as a programmer who used to design UI's a bit - I as a developer was the first person on the project who suggested we might as the people who would be most likely to use the software how they expected things to work :P

Mike Ford on November 28, 2006 10:33 PM

I found this out while developing my first commercial application. I always wondered "man, how do professional software developers include so many options for customization so quickly?" And then I found out, in a rather horrid way. My first win forms application (that was meant to pull binary files from a database) had 18 textboxes in it and six buttons. Needless to say, the lesson was learned after I showed it to my boss and he told me to go "think about what you've done."

Also, that Jay-Z line has had me laughing for the past five minutes.

David Sokol on November 28, 2006 10:43 PM

I think UIs are extremely difficult to "code". When was the last time you created a web page or a UI and then got someone else's feedback? "Shouldn't that line be a little bigger", "What about a different shade of blue". It came become extremely frustrating trying to code the UI and maintain it as people keep changing their minds.

And even if the best UI design for an application was to have 2000 elements on 1 page, you know that is going to cause performance issues and you have compromise from time to time.

We all have ID10T users out there, if you can build it so they can use it without screwing something up then go back and work on that UI a bit more.

Tim on November 28, 2006 10:49 PM

So based on that screenshot, you're saying that it is a good thing to let developers design GUIs, right? Because that is total hotness!

Haacked on November 28, 2006 11:09 PM

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

Henry on November 28, 2006 11:12 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 AM

'leave the graphic design to the experts.'

it's probably more interaction design than graphic design that's at stake here... I'd hazard to suggest that a lot of graphic designers would probably make quite a hash of it too.

An interaction designer should be able to understand what the user is trying to achieve and then design an interface to best enable those objectives. Then a graphic designer can make it look beautiful :)

leisa on November 29, 2006 01:04 AM

Graphic designers should never be allowed near inputs that have to be read or otherwise identified. They have a hideous habit of use bunches of pretty colours. This makes it impossible for some of us to identify the details. This also makes captchas a massive pain (yours, I actually like).

Kevin on November 29, 2006 01:22 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 November 29, 2006 01:25 AM

As a programmer, I often conceive similar front-end for my test apps, but these are *for internal use only* (and when I had to code similar dialog boxes I relied heavily on tabbed dialogs with a nice icon -- courtesy of kde-look.org -- on each tab)

When I have to "design" something, I shamelessly steal the best layout I can find...

:-)

MaxL on November 29, 2006 01:27 AM

"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."

I think that basically bouys Jeff's point. :p You don't see FTP clients all centering around that idea, despite the being the same in concept! Nor gui-based spider engines come to think of it, like black widow, sitescan, etc. I wouldn't hold them up as paragons of great UI, but at least it isn't so horrifying.

Thr big problem with a bag of checkboxes, dropdowns, and textboxes, is it doesn't highlight the most important changes, it doesn't hide non-imporant options, it doesn't have any attempt at a logical flow in setting up a run, and most importantly it simply overwhelms.

I think many developers actually understand the issue, they simply have no UI training, nor the imagination and desire to come up with radically different workflows once they settle on one. If nothing else, they'll try to conform it to the way IDEs and other power user tools work, thus the much more common mediocre tree-and-toolbar-based design. A lot of software I use or see would be right at home in the Windows 3.1 school of design.

(I pray that now that linux is starting to get some really good distros and attracting corporations to the desktop, it'll stop being so enslaved to cheapest-and-quickest UI. I don't care if making something easier is dumbing it down, scanning source code to see what a checkbox does got old real fast.)

Foxyshadis on November 29, 2006 01:48 AM

Apple UI design on Windows s-u-c-k-s.

There, I said it.

That being said, I'm pretty darn good at UI design, even if I say so myself. Coding, not so much.

AndyToo on November 29, 2006 02:44 AM

That's it. I've gone blind now. Thank you.

Mats Gefvert on November 29, 2006 02:48 AM

"have the good sense to stick to coding and leave the graphic design to the experts"
I beg to differ here, GUI programming is not any different than other types of programming. There are sets of rules and principles documented, lots of books about it, it's not a black art.

The problem here is most developers look down on their users and think that GUI programming is inferior work.

Fábio on November 29, 2006 03:10 AM

I dont know, the wgetui sure is ugly, but the UI was probably made in some hours work, or rather as fast as the controls can be dragged. You got the functionalities you need and yes maybe the user dont find the application easy, but it would probably be more easy then wget from command line. And who knows, if the user learns to use the application, it might be easy? Rounded corners and pretty colors dont make an application more usefull.

Other Applications are just as ugly to look at:
http://www.codinghorror.com/blog/images/word-all-toolbars-small.png
and I am sure the user base is quite different.

I am not saying that I like wgetgui, but at least the UI is honest and directly layed out. The developer has not added any help functionalities , tutorial, tooltips?, etc. so I cant see that the application is aimed on anybody else then expert users.

You cant say developers are bad designers if they design an application for them self and other developers. The problem is more when developers think they know the users or cant understand that people think different.

There are alot of good ui developers and alot of good ui artists, but very few good ui designers..

/Peter

Peter Palludan on November 29, 2006 03:36 AM

I'd add that the converse is true. Don't let graphic designers and HCI experts do your coding.

But of course as others have pointed out its all shades of grey. 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. Where possible I prefer to leave the appropriate area to the appropriate expert - but of course thats not always possible.

Regarding the wgetgui. I'd consider myself an expert user and I wouldn't use something that looks like that. It makes my eyes bleed and there are always alternatives.

James Randall on November 29, 2006 03:48 AM

Point taken, however:
- In the perfect world we alyways have specialists in req. engineering, architecture, testing etc. however 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.
- Your example screen dump does not adequately reflect professional software development but rather some high school/hobby project.

Casper Bang on November 29, 2006 05:03 AM

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 November 29, 2006 05:10 AM

Casper: agreed. I design GUIs not because I want to, but because we're not even close to having an "interaction designer".

I do the best I can by sketching a design out beforehand, and always keeping the user (not me) in mind, but GUI design is just a necessary evil for me.

Bill Mill on November 29, 2006 05:25 AM

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

UI-design is a speciality most graphics people don't get, but think they do. 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.

Hence the poor usability 90% of all commercial websites...

(BTW, the example here is kind of lame, since this is an app geared at techie powerusers, I wouldn't want any fancy userfriendly UI stand in the way of me and wget parameters, which is why I use the commandline version. Basic rule of UI-design: know your audience. Having user-friendly interfaces for stuff that's only used by peoply like coders and sysadmins is not userfriendly, it's just annoying... So is hiding options for people who need them.)

Duh on November 29, 2006 05:36 AM

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

Ramon Antonio on November 29, 2006 05:47 AM

Jesus H. Christ. I don't even want to know what the "Pro Mode" button does....

Fernando on November 29, 2006 05:52 AM

Point taken, but to buck the stereotype: some developers excel at creating UI, and this is their main focus. It's part of the reason why the label developer has become popular, as people tend not to be just programmers but also specialize in other things such as a business domain, a technical niche, or UI.

There is something of a culture of interesting software development on the OS X platform. Of course great things are being done on all the other platforms too. However, there are a lot of indie developers on OS X shipping well thought out and nicely crafted UIs. Worth a look.

John on November 29, 2006 05:54 AM

At least, GNU wget got Windows *has* a GUI. In UNIX, you don't get to use a GUI (come to think of it, better than having one like the above, I'd rather not have one).

JJ on November 29, 2006 06:14 AM

>I have to say that a big dialog with loads of controls on it is prolly the best type of design

Even though this one looks ugly (just the old Win98 look), it's infinitely preferable to a "Dialog", oh so common, that goes one step at a time. Imagine setting up this Wget as a stepped process:

Do you want ABC? OK CANCEL
OK, ARE YOU SURE?

Do you want DEF? OK CANCEL
OK, ARE YOU SURE?

=8^B

taterhead on November 29, 2006 06:16 AM

Bad developer! Nineties nightmare.

vanjulio on November 29, 2006 06:20 AM

I'd be lying if I said I hadn't produced abominations like that one. I've learned my lesson, but others have not. My current project, where I have no control over the UI, is eerily similar.

Randolpho on November 29, 2006 06:22 AM

Looks almost as bad as rational clearquest.

toastr on November 29, 2006 06:37 AM

> A good developer will give the GUI the same treatment as they give their code. Well commented, good refactoring, no smells.

Yes.

David Grant on November 29, 2006 06:37 AM

As a long time wget user at the command line, this gui interface makes sense as it shows all the options at once. It reminds me of the putty interface for ssh connections, which can be equally daunting until you are familiar with whats going on.

LV on November 29, 2006 06:40 AM

What's wrong with this UI? It presents the options, lets you choose. What more do you need?

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

Even worse is colors. No "graphic designer" ever thinks of the colorblind when make things pretty.

sewiv on November 29, 2006 06:42 AM

It would be more accurate to say this demonstrates what you get when you graft a GUI onto a perfectly fine command-line program. And it's not really surprising or blogworthy.

Goran Zec on November 29, 2006 06:43 AM

maybe he doesn't know how to use the "tab control" ?

matelot on November 29, 2006 06:53 AM

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

It's a matter of attention. The GUI needs the same attention as the rest of the project. It doesn't matter if you make a better mouse trap; the mouse trap has to be usable.

shaitan on November 29, 2006 06:54 AM

If 'Pro Mode' doesn't take you to the command prompt, well, let's just say I'd be deeply disappointed.

C:\>

mikefoo on November 29, 2006 06:59 AM

Goran, do you honestly think this is the best user interface we can possibly come up with for wget? So you're saying this is as good as it gets?

> it's probably more interaction design than graphic design that's at stake here...

Sorry, I should have been more specific. You're right.

> I think many developers actually understand the issue, they simply have no UI training, nor the imagination and desire to come up with radically different workflows once they settle on one

Totally agree. Developers are already so very good at the technical stuff by definition. That's why they became software developers in the first place. I wish they would focus on other complementary skills like HCI rather than digging themselves in deeper and deeper to the technical stuff.

Jeff Atwood on November 29, 2006 07:00 AM

wget has a 126 lines long help message.. the UI presented here seems to have everything included on just one screen.

Let's face it, wget is supposed to be called from the command line, it's a usefull little program, but you have to read the help message the first many times you use it. This UI will let you use the command in 1 minute, I don't see the problem? :-)

(IAAD - I Am a Developer)

Klang on November 29, 2006 07:02 AM

> The homepage for wgetgui says: "The easy to use Graphical User Interface (GUI)"

I think there are a couple of letters missing. Shouldn't it be "The *sl*eazy to use Graphical User Interface (GUI)"? :-)

KenW on November 29, 2006 07:07 AM

As a developer, I would actually like to see more interfaces like this. Thought out better, sure... for example, you should have - by default - a more abstracted interface with fewer options. But to have an advanced interface you can switch to with every possible option and tooltips for each one would be a dream. No more man pages to look up, or wondering about what format or options are available in a config file.

Martin Alak on November 29, 2006 07:15 AM

These needs to be more OpenSource HCI usability people. In addition, CS people need to take at least one HCI course, I know GaTech does this, but I don't think there are many more.

Until these things happen, you're just stuck with what you get.

shane on November 29, 2006 07:18 AM

It looks like what happened here is the author of this front end to wget just dumped every single wget option into the dialog without much user-oriented organization. wget has a ton of options, but really only a few that you use often.

To make a workable GUI frontend to wget I'd take the typical tasks (which are to quickly download one or more files whose URLs you know, and to recursively download a whole site) and put those options on the main page, then hide the rest in tabs or expanding panes or whatever.

Reed on November 29, 2006 07:19 AM

Take a look at the website, that's the GUI 'expanded,' not even in 'PRO Mode.'

http://www.jensroesner.de/wgetgui/#screen

1 Textbox and 5 buttons doesn't seem horrible ... that it uses a .bat file to run wget seems like a worse offense.

opello on November 29, 2006 07:24 AM

I've seen plenty of poor user interfaces, and I certainly don't want to dispute the premise, but this is a very poor example, especially if you don't understand what's going on.

"wget" is a command line program to recursively snarf web pages. It has been arround a long time, it is very solid, and among the command line set, it is very popular.

It is clear that this program is nothing more than a front end that does nothing more than build a set of command line options. This is the kind of thing that can be thrown together in just a few hours with a GUI development tool, and really, I don't see anything wrong with that.

It would be a completely different matter if someone spent months developing a "GUI web snarfing tool" and this is the UI they came up with, but this is clearly not the case.

This is a quick and dirty hack to mollify the set that can't deal with a shell prompt and man pages, and in *THAT* respect it is a good example of efficient code re-use.

BTW, I've seen other Windows programs that do something similar with a slick and more sensible interface, yet don't have a fraction of the capabilities of wget. In my mind, that is the true coding horror here.

Yes, in a perfect world, I'm sure that the wget codebase could be adapted into a much more intuitive GUI-based application. No question about that. But this guy *DID* it, and he is giving it away.

If you can make something better and give it away, by all means have at it!

nobody on November 29, 2006 07:24 AM

Pretty good gui,just getting used may take few minutes.
Stuffing all controls in tabs,or usermode is worse.

Frozen on November 29, 2006 07:24 AM

DISCLAIMER: I'm *not* calling out the wgetgui programmer. I mean no offense. It's a single example of a larger phenomenon, nothing more, nothing less.

> To make a workable GUI frontend to wget I'd take the typical tasks (which are to quickly download one or more files whose URLs you know, and to recursively download a whole site) and put those options on the main page, then hide the rest in tabs or expanding panes or whatever.

Well said. Why not start by thinking about what a typical user would want to do? Or you could just put every command line switch on a massive dialog..

Jeff Atwood on November 29, 2006 07:42 AM

The wget command line interface is also an interface - and one that suffers from just the same problem as this GUI. Take a look at the man page for GNU ls to see even more option overload. If not for backwards compatibility, these could and should have been radically redesigned a long time ago. So it's no excuse to say that this interface just mimics wget's command line, when the design of that very command line is atrocious! Let's face it: command line configuration doesn't scale.

AlexG on November 29, 2006 07:54 AM

I have to agree with nobody? and say that the UI is simply a frontend to a very good commandline tool, and in that respect is actually quite good - it is a WYSIWYG interface to wget - no hidden options, no drilling down through menus etc. If you use wget you will appreciate how immediate everything is in that UI. If you don't know wget this UI will look a bit busy but I would assume it is aimed at people who already use and understand wget.

bob on November 29, 2006 07:57 AM

hmm I can't see the problem :P well no it sucks that's true but half of it's ugliness comes from VB's standard controls, the other little problem is that it assumes the user to be competent but that kind of thing happens to everyone in it's first steps, I think everyone has the potential to become whatever it wants to, I'm basically a logical type of person (developer) but I'm trying to be more artistic and it's hard yeah but it's not impossible at all.

about this dialog, I should first change the way controls look, and then organize the options in tabs and lastly put all the tabs in a "advanced mode" checkbox and let the "simple mode" to be handled by a few presets.

Samus_ on November 29, 2006 08:02 AM

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

Hmm on November 29, 2006 08:16 AM

Part of the probelm is this is a quick GUI skin over a command line app. When I was in college in the 90's my professors advocated that strategy for development. (Build a general purpose command line app then skin it with a gui).

It does provide an easy test harness in the command line tool. The only problem is you typically get a really horrible GUI that you don't want to learn if you already know the command line app, and is unlearnable and unusable if you don't.

I'm not sure why this was what was taught rather than an approach grounded in HCI. It might have been my school (MIT), or a general academic thing. Hopefully it has gotten better - does anyone know? It might also be a Unix thing with the command line is king mentality.

Steve Steiner on November 29, 2006 08:26 AM

wth, there is nothing wrong with that UI!

:D

It's mathematically "complete"

Jay Liew on November 29, 2006 08:48 AM

"If you can make something better and give it away, by all means have at it!"

Spot on.

As an occasional wget user who struggles to remember the plethora of wget command line options, I must thank you for bringing this useful GUI to my attention.

nobody too on November 29, 2006 08:53 AM

lol @ button "Pro Mode"

iamah on November 29, 2006 09:35 AM

Let me say, for someone who knows wget, this is not a horrible interface.

A tabbed interface sucks here because I have to click through each tab anyway to see how the defaults are set, or I have to internalize the defaults for the gui - more work for me.

There's no need to search for anything here - all the options are right up front, no more 'press F1 for help, search the index, come up empty and have to click all the damn tabs anyway'.

I might move some of these controls around a bit, to make them easier to target, but I like them all on one page like this. All I want the GUI for is so I don't have to read the man pages. Again, that's assuming I know what these options are for.

Now, if I didn't know wget, or this app was supposed to be "wget for dummies" then yeah, sure, make a wizard, or tabs, or whatever so a n00b can learn it.

But put a user of this ugly gui would have a much easier time moving back and forth between gui and cli versions of wget than a user of a pretty, dumbed-down, colorful version would.

Matt V on November 29, 2006 09:49 AM

Argh! Argh! Argh!

Ok, programmers can produce awful UI, and usually do. Can't argue there. But for the sweet hairy love of Jesus, don't hand the job over to "graphic designers". At least a programmer will produce a UI that *someone* can use, if only the programmer themself.

UI design is a specialty unto itself. It helps to have graphic design (and programming) skills, but that sure as doesn't make graphic designers into UI designers. Please don't contribute to the continuing mass delusion that they are.

Jeff on November 29, 2006 09:53 AM

Interface design is all about expectations. You need to give your users what they expect. That defines a "good" interface. Users complain more about _how_ things should work and look, not so much that they don't like _what_ it does.

I will argue that the interface design should be figured out first before any development.

After all, to the user, the product is what they see and interact with. It doesn't matter how great the engine is if the car doesn't have the steering wheel in the right spot. Design what your users expect first, then code to meet that design.

Of course, I am a developer that designs and am surely guilty of some "poor" interfaces. Well...I like to think of myself as a designer that developers - but what have you...

Brian on November 29, 2006 09:56 AM

There's nothing wrong with this. Remember, this is a UI for wget! It actually has all those options and no UI is going to educate you on how to use them withing reading the manual.
The natural interface to a terminal is a keyboard. If you simplify down to one button, people might say "wow that's simple" but they're not going to get much work done.
I think I see some hasty condescension here and that's the ugly thing on this page.

rgiar on November 29, 2006 10:01 AM

A few points that have been mentioned I'd like to echo and expand upon.

For small companies there is no 'graphic designer'. Or more specifically, the 'graphic designer' is anyone who can use Paint Shop. I've also used a number of programs more than likely created by a whole team of graphic designers with simply terribly UIs. If you had that example UI designed by one of those you'd no doubt get a good looking interface that would be unusable in the required context.

Speaking of which...the context of the program is important. The above example in context of being a simple and quick UI to access a command line program is perfectly fine as it is in my eyes. That same UI as the options screen in a popular consumer level software product, howevver, is not fine. I know I've made similarily dense options screens but they were for a limited in-house audience or for a technically minded audience.

I do not apply the same level of interface esign to a quick 'one-off' utility used by a dozen people as I would a shrink wrapped software distributed to millions.

Dave on November 29, 2006 10:10 AM

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

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

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 November 29, 2006 11:54 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

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

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

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

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

I'm amazed at all the comments defending this from 'wget users'. I'm a wget user and this interface sucks. It's no better than wget --help, just a list of options in GUI form.

The functionality should be split up in tabs or something... the main url bar and some other things like 'continue download' in the main tab, spidering in another tab, cookies/http headers in another tab... etc.

This will allow both a novice user and an expert to use the tool, and help you to find the options you need fairly quickly.

Nobody wants to look at that POS every time they download a file.

Mike on November 29, 2006 01:00 PM

Seriously: That's sad. I'm developing for a number of companies and even though I've never had any UI classes common sense is enough to get you through it on top. When in doubt, look at some software that many claim to have a "good" GUI (iTunes for myself) and determine what makes it so "good". It boils down to simplicity, cleanliness, and power features embedded in easy to get to places that aren't on the surface.

Brent on November 29, 2006 01:03 PM

at least it is better, than 15 dialog boxes hided somewhere.

Frankco on November 29, 2006 01:05 PM

I really think the title should be changed to "If you've got UI problems, I feel bad for you son."

engtech on November 29, 2006 01:09 PM

That's remind me the bad joke of the Properties dialog of the Novel Client. Take a look on it:

http://www.novell.com/coolsolutions/img/15773-2.gif

Omar Garcia on November 29, 2006 01:14 PM

Actually thats the best wget gui I've ever seen. After much experience with wget from the command line, its nice to see such a full featured and simple to use GUI. I think you have a classic case of VB (now '.net') form over function syndrome.

Cheers.

MrDez on November 29, 2006 01:18 PM

I like it. I've kind-of avoided wget because I couldn't be bothered learning all the command line options (and I use a Unix command line in my job most days a week). I'm going to download this.

OK, I guess some people won't cope with a GUI like this. But then some people can't program, or learn by reading a manual. Me, I like it.

David on November 29, 2006 01:45 PM

I think this dude is a good thinker but damn, i can imagine the poor user or should i say victim running for cover.

ayo on November 29, 2006 01:45 PM

Great, *another* fool that thinks that all developers can't do design. They're just as bad as the ones that think they all can. Assess the individual and stop generalising you banana tree you.

Bob Holness on November 29, 2006 01:49 PM

Yea, developers' UIs are crap. Websites "designed" by "webmasters" (php, asp coders et al) are even bigger turds.

Graphic Designer on November 29, 2006 01:50 PM

It could be the Marketing Department's fault.

Poor guy needed a test harness and wrote what you see. Marketing upped the ship date a month and the rest is history!

Steve on November 29, 2006 01:53 PM

well if any of you craptards had ever used wget you'd what a pain it is. So i guess this tool actually a nice gui for wget. Oh sorry, i forgot, you'd rather have 50-step wizard..

waxor on November 29, 2006 01:53 PM

This is pretty good actually.

dani koolio on November 29, 2006 02:00 PM

Come on, you can't go and blame this on the author being a "developer." Do you really think the code behind the UI is any clearer than the UI itself?

And don't pretend that a crappy designer can show up and make a great UI (or even a good one) out of this. Crap is crap, no matter what your job function is.

disclaimer: I am not a developer or a designer

tvon on November 29, 2006 02:05 PM

I'm coding some UI for living. I saw how specially trained UI designers ruins one too many products.
Which becomes flashy, slick and annoyingly impotent.

I don't like many things in both Linux and Windows UI worlds.

When I have to click thru 15 'stupid user'-friendly wizards. And still have to hack registry.

Gimme my checkboxes in one place. Wget UI is good, back off.

UI developer on November 29, 2006 02:06 PM

I THINK EVERYONE IS PICKING ON WGET BECAUSE THEY AREN'T READING THE ENTIRE ARTICLE.


CLICK THE "The FileMatrix" LINK!!!

CLICK THE LINK! on November 29, 2006 02:11 PM

Who here would be really tempted to hit the "Pro Mode" button to get even more options?

picciano on November 29, 2006 02:11 PM

Honestly, my experience has been worse with "designers" than developers. As someone earlier mentioned, at least the UI a developer creates works for _someone_.

Photoshop is NOT appropriate for UI design. Please get a tool that generates something that could be implemented in the technology to be used, not fiction.

And please save me from designers who know nothing about human factors. They're far more dangerous to UI than any other beast.

Designloper on November 29, 2006 02:16 PM

that's an UI for wget - who the hell needs GUI for wget, it's natural environment is shell..

anonymous coward on November 29, 2006 02:25 PM

You know there is nothing wrong with this. So it's not pretty who cares. Just be thankful you don't have fifteen tabs, cascading dialog boxes, and icons you stare at trying to figure out what they mean.

If you want an example of horrible UI look at outlook options.

malcontent on November 29, 2006 02:38 PM

haha thats nothing. Download the beryl-settings tool (debs available for ubuntu) and check it out. Has more options than all of GNOME or KDE... combined. Quite handy for development since all the options are procedurally generated from the plugins, but man does it ever confuse the heck out of our users.

DBO on November 29, 2006 02:44 PM

So, what's your proposal for good design UI?

Complaining is way easier to proposing.

Dareu on November 29, 2006 02:54 PM

I think the resource editor has done more harm to UI design than good. In particular, it enables a kind of thoughtless drag and drop that results in the kind of VB-looking horror described above.

I'm old enough to have been at this prior to the advent of resource editors, and while they are useful for some things, I still go back to handcoding UI, because, particularly with modern layout-managed frameworks, the code forces one to think through the hierarchy and containership, and to visualize what's going to occur at runtime.

In short, instead of obfuscating the relationship between UI and the code that creates it, handcoding illuminates it.

I'll admit that there are some developers that wouldn't create quality UI either way, but I'd argue that choosing a developer who has the proper perspective on usability is the key.

David Watson on November 29, 2006 02:55 PM

Ha! Great thread. I love the conflicting views. The point that's missing here is audience. If this is a dialog written by somebody for him or herself, than this is probably the perfect UI. It's exactly what he wants to use. Beyond that, there are probably a number of people of a similar mind who like it just like the original developer because they think the same way. Then you get 'designers' (they're the ones who end every post by telling you what a good designer they are...) who hate it immediately, without even knowing what it does or what its for. Simply put, this UI is probably exactly right for its intended purpose and audience. No reason to change it.

Jonathon on November 29, 2006 02:55 PM

Seriously, it's not that bad. The options are all clearly labelled and reasonably grouped. It's ugly sure, but it could be oh-so-much-worse.

Here's the thing. If the goal is to pop up the gui and click as many options as you need and hit go, that's about as good as the gui is going to get. Do I want to flip through a dozen menus to grab some data? No. This gui would work fine for me. This isn't a word processor, it's a frontend for wget.

Erik on November 29, 2006 02:56 PM

And yes, that original screenshot of the File Matrix UI a terrifying thing. However, later versions seem to be improved, at least. (Improved simply means 'better than before'). That one looks like it could really benefit from some more experienced usability input.

Jonathon on November 29, 2006 03:03 PM

That's quite funny. I thought it was a joke at first till i visited the site and realised it's actually for real. I don't know about you, being a developer myself, i think the UI is a major concern as well, after all, it is the first impressions that count.

Winston on November 29, 2006 03:05 PM

nice

Mark on November 29, 2006 03:11 PM

Actually that is a pretty good interface. It comes close to being modeless and stateless, except for that frightening pro-mode button. (If this mode isn't pro mode, then pro mode might have too many options.)
Nothing is hidden, nothing requires multiple clicks, nothing requires remembering if "view source code" is on the edit menu or the tools menu.

Julius on November 29, 2006 03:12 PM

I'd love to see the "pro" mode.

anon on November 29, 2006 03:24 PM

This is why I've got my "inner graphic designer" permanently stashed away in Gitmo. The horrors it would unleash upon the world....

Mark on November 29, 2006 03:27 PM

It shouldn't be TOO too easy to snarf websites. If this complicated GUI turns n00bs away, then rightly so.

Developers FTW! designers should stick to making funny tshirts and barbie doll packaging.

Joey Narfy on November 29, 2006 03:33 PM

this wget UI is great.. yeah i know, its too confusing for people that are looking for pretty flowers that say "PRESS ME", but damn, i would seriously question why i was using a wget gui that was chrome plated and decorated with gay andy warholish abominations.. who but people that don't care about how much lipstick is on a UI is using wget anyway? go cry more noobs!

kferron on November 29, 2006 03:33 PM

It's free software. It doesn't have a corporate hierarchy enforcing certain tasks to certain people. This is what you get.

heroineworshipper on November 29, 2006 03:43 PM

The perfect application doesn't require a GUI at all. It just needs to be ESP enabled.

Billy on November 29, 2006 04:09 PM

Leave UI to Information Architects. Even Graphic Designers aren't experts on UI design. Graphic Designers try to make things look "pretty" while Information Architects focus on structuring content and usability so the UI can be meaningful to the end-user.

Matthew Villa on November 29, 2006 04:41 PM

Ok - so I found this page via del.icio.us (You're on the front page as a "popular link"). The screenshot you've posted reminds me of numerous conversations I've had with staunch supporters of edge-case design or "developer logic."

They look something like this:

Designer/UI person: "We're designing a widget so individuals can automatically post their del.icio.us links to their blog automatically. It should be easy and intuitive."

Developer: "OK! Let's make it look like a stack of form-fields with horrible names and make everyone do some sort of magical time zone conversion so they have to specify the time they want the job processed in GMT. And, let's call the link to this blog posting service..."add new thingy."

Designer: "..."

http://static.flickr.com/121/309869942_7760f4c06e_o.gif

adrienne on November 29, 2006 04:49 PM

What is wrong with ok-cancel.com? Every page is blank, even the home page.

Sam on November 29, 2006 05:53 PM

Do you guys ever read the $#*&^! comments first? How about contributing to what could be a worthwhile discussion on the merits of different styles of UI design, and spending a few minutes to consider ways in which it might be improved as an exercise, instead of leaving mindless droppings on someone's corner of the internet? The reason most UI design sucks is that no one practices or thinks first! That goes for those who just comment to say it's so bad.

Augh, I give up, I'm wasting my time, no one will read this either.

Foxyshadis on November 29, 2006 07:13 PM

It's real easy to criticize someone else's attempt to freely share a their own solution to a problem they've encountered. If Human Factors expert Jeff Atwood believes this is so bad, then it would be most beneficial to everyone to provide and alternative UI to demonstrate a "better" way to do so. Even more so to explain why Mr. Atwood's solution is better. At the very least provide constructive criticism.

Don't be a coward, Mr. Jeff Atwood.

Luke on November 29, 2006 07:21 PM

Foxyshadis, I feel you dogg.

What is _scarier_ than the UI (shame on all the critics!) are the _number_ of posts on such a topic as this (including mine). Is Jeff's readership a "normal" cross-section of humanity?

The trivia of the web is downright frightening. If there was a post: "Gee, we lost a few more Constitutional rights today because we Americans, like, don't care enough", how many comments would be get?

The more I look at the UI the more I like it.

Steve on November 29, 2006 07:43 PM

With respect...

Some software developers happen to be excellent designers as well. You can't discriminate.

What you should have said was, "look at what THIS DEVELOPER did with UI..clearly HE cannot design as well as he can code".

Kevin on November 29, 2006 07:44 PM

>>With respect...

>>Some software developers happen to be excellent designers as well. You can't discriminate.

>>What you should have said was, "look at what THIS DEVELOPER did with UI..clearly HE cannot design as well as he can code".

Aaah... but is he a developer that can design or a designer that can develop?

mars on November 29, 2006 08:24 PM

hehehe
I've used an earlier version of that program, it's what inspired me to actually learn wgets command line arguments.

Jojotdfb on November 29, 2006 08:43 PM

You don't mention that this is the author's first Visual Basic program.
You make no comment on the friendliness or otherwise of the wget command line.
You make no comment about whether this GUI is more usable.
You give no credit to the author for trying.
You offer no alternatives.
Where is your (presumably excellent) work?
By the way, see that little "-" button to the right of the URL text box? That's a minus sign. Guess what it does.

Have a think about what you are proposing the author do. Are you going to provide your design services to this person for free? What's your timeframe?

Busy expert commentators - hate 'em.


Murray on November 29, 2006 08:46 PM

Looks ok to me.

Patrick on November 29, 2006 08:53 PM

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 PM

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 PM

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 PM

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 PM

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 AM

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 AM

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 AM

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

Andy on November 30, 2006 12:54 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 01:34 AM

Good Lord! I've just seen the File Matrix. I say seen loosely because there isn't enough time in the universe to take in every UI feature.

I think someone need to 'step away from the computer' permanently!

Jon on November 30, 2006 01:43 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 02: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 02: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 02:43 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 03: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 03:58 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 Rønn-Jensen on November 30, 2006 04: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 06: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 06:40 AM

The people saying that the UI is good "for people who know wget" are only reinforcing my original point that it provides no useful abstraction to wget and is hence useless as a GUI. If you already "know wget", why would you want to use a GUI, when clearly the command-line is much faster and less of an eyesore?

UIs are supposed to be abstractions. They aren't supposed to expose the inner workings of what they control, they're supposed to hide them.

It's odd that several people have posted about "50-step wizards" as if that's the only alternative. Sound a bit like slashdotters to me. Nobody said that wizards are a paragon of good design - very few of Jeff's readers would make such a preposterous claim. Wizards are only useful in a tiny minority of cases and usually are no better than a bunch of modal dialogs. They don't hide the choices at all, they just force them choices to be made in a predefined order.

The whole point is that we don't need a 50-step wizard or a 50-control form; 99% of the potential users of this program would only care about the same two or three options (URL, filename/pattern, recursive or not). You would only need a 1-step "wizard" for this, which might as well be called a form.

Maybe the developer designed it just for himself, and that's fine; but too many people here who I hope aren't UI programmers can't seem to grok the idea that the average computer user does not know all the wget command-line switches or even what wget is. And yes, I am aware of how wget works, the question I posed about default values was supposed to be a hypothetical one to make people think about their logic.

Oh, and I love the "if you don't like it, make a better one" comments. As if the entire world is made up of programmers. I can just imagine trying to use that line of reasoning with salespeople or management. Maybe you can afford to have that attitude if you're not getting paid for it. ;)

Aaron G on November 30, 2006 06:48 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 07:28 AM


Now post the Pro Mode screenshot!

Gordon Bell on November 30, 2006 07:47 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 09:26 AM

The UI for Wget GUI is sloppy. The UI for the file matrix is overwhelming. Both represent bad designs in the user interface.

The Wget UI can be fixed in about 10 minutes. I mean, how hard is it to make all the buttons the same size and line up the controls, its not. Attention to detail is all that is needed.

The file matrix cannot be fixed, too much stuff going on. I would never use such a program no matter how good it is.

UI beauty is in the eye of the beholder. Should a button be on top or on the button of the screen, what color? Ask 10 people get 10 different answers.

Generally, UI should be:

Clear - Whats are you trying to do? Able to accomplish task with reasonable amount of clicking. You should be able figure out the application by just looking at the GUI if its well designed.

Consistent - Every page should look the same.

Concise - The UI should focus on doing 1 task well, as easy as possible.

Jon Raynor

Jon Raynor on November 30, 2006 09:34 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

You know for a UI that was created for a developer that isn't the worse that I have seen. I know personally I try to stay away from UI design unless I absolutely have to. But can't the same be said when a person who does UI design tries to do the code behind and makes a huge mess of everything?

Brandon on November 30, 2006 10:13 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 think wgetgui is well laid out. What sucks from a usability point of view is how hard the discussion is to follow on your webpage with the poor layout.

anon on November 30, 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 01:24 PM

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 01:40 PM

Anon,

That is what I ment by I have seen worse. They did put some boxes to encompase some of the options to allow for a person to recognize that it is seperate. The problem is there is a lot to take in on that form. It is the problem of giving people to much information/options at one time.

Brandon

Brandon on November 30, 2006 02:27 PM

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 drag&drop 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 02:44 PM

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

Mikecimerian on November 30, 2006 03:06 PM

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 03:13 PM

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 04:00 PM

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 04:20 PM

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 07:18 PM

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 07:34 PM

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

James on December 1, 2006 02: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 04:37 PM

Actually, I LIKE that interface !

Mark on December 1, 2006 07:18 PM

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 AM

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 06:44 PM

No, this is not what you get when you let a developer design a UI. This is what you get when you ask a Junior .Net developer to design a UI. Reason? It is WAY too easy for any schmoe to make something work in .Net.

angtOrange on December 4, 2006 07:10 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 03:34 PM

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

Softmonster on December 4, 2006 03:50 PM

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

Однозначный кошмар.

Tugarinov Sergey on December 5, 2006 03:19 PM

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

Mike on December 7, 2006 11:25 AM

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

Iain Dooley on December 7, 2006 01:43 PM

@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 04:39 PM

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 06: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 07:55 PM

@ 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 05:37 PM

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

LOL

Luigi R. Viggiano on December 22, 2006 03: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 04:30 PM

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 09: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 10:18 PM

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 04: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 03: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 06:09 PM

> 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 08:49 PM

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 08:53 PM

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 01: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 07: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 12:27 AM

fu

tom on May 7, 2008 09:31 AM

i eat cum

tom jackoff on May 7, 2008 09:32 AM

It all over the map. Put everything one side.
checkout youyap.com

YouYap.com on May 9, 2008 06:38 AM







(hear it spoken)


(no HTML)




Content (c) 2008 Jeff Atwood. Logo image used with permission of the author. (c) 1993 Steven C. McConnell. All Rights Reserved.