If you're writing a small application (and sometimes if not) you can usually clobber together a GUI using some resource editor. But what about more complicated applications, or designing small ones well? Where should you put the buttons? What text should it have? What menu options should there be?

I'm sure this could be a career or a 1000 page book, but does anyone have any tips or experience in ways of doing this?

Posted on 2006-05-02 10:56:12 by stormix
Behold, the king of shitty GUI design is speaking here.

I dump buttons and everything anywhere where I see fit and do concentrate on the 'works' first. Later on I move them to fit them my needs. Eventually it will look somehow good. Usability Owns. =)
Posted on 2006-05-02 11:23:01 by JimmyClif
I highly doubt JimmyClif has mastered the Art of ****ty GUI design. I'm sure a few elements of tasteful form and function have slipped into his applications despite his good intentions.

If you're truly interested in designing an unmanageable GUI interface, you might want to get hold of the following book/chm and not follow any of the excellent guidelines outlined in it.

Developing User Interfaces for Microsoft Windows
by Everett N. McKay

Posted on 2006-05-02 19:45:02 by Kayaker
OK...first of all...what are those **** hiding?

Next to answer stormix's your question...the general layout of a GUI design would be...
1. Just follow the convention as per requirement but don't get caught up in it, as the exact size of the buttons etc, as JimmyClif mentioned, Usability Owns (or as I say Usability First, Make-Up (lipstick) later).
2. Again: Get the program working properly and then cleanup any "minor" issues with the UI, one should have designed the UI ok-ish to begin with.
To have a good ROTFL with respect to UI design check a software called EasyBurning by Dirk Paehl.

It works OK, no issues there...but one look at it and you will go "Come on....!!!" - Thats an example of the other extreme...UI design having taken a toss completely.
3. Next, with respect to the flow of the options etc, just think about how the user(s) will look at it, if English, left to right and top to bottom. So keep the flow that way.

After all this being said, never hesistate to do your own thing, kinda set your own convention, as long as the users can follow it without much issues.

Hope all this helps!!!  8)
Posted on 2006-05-03 07:54:54 by shantanu_gadgil

I propose we collaborate on a book which teaches the fundamentals of shitty gui design.
Somehow I have a feeling we'd make a bundle :)

(Yeah, I concentrate on making the bloody thing work first, and worry about cosmetics last too - did you see my voip thingy? LMAO)
Posted on 2006-05-03 10:46:02 by Homer
Whenever I write a program I write my worker routines first, and build as a console application, to make sure everything works the way it's supposed to and no optimization is needed per routine. Once all the routines are done I start working on the UI. UI is always an afterthought to me, and as came from the *nix world it's not something I'm used to spending a lot of time on. So here's more or less how I get it done.

I have a bunch of graph paper left over from my days in art so I usually draw out what my invisioned layout would be, along with a table to show what routines each control will reference (subclassed or not, etc.). Once I have a drawn out picture (usually colored due to boredom), I create the UI with "dead controls" (ie. not reference any actual routines). Once my dead UI is complete I send it to a few friends who aren't programmers, some of which suck with computers. This way I get decent feedback on usability and feel. If it checks out okay then I insert the routines and begin optimizing the UI, and if the loading becomes an issue I throw in a little splash screen which works with my color palette).

I only do this when my application is either commercial or designed to be "pretty". One such "pretty" application I did this on was the Shifting Menu Demo that was posted here a long time ago to show off a neat menu. Lacking such applications I tend to just slap a UI together as shown in the IRC Bot/Client I posted here a while back. It really depends on your target audience I suppose. My personal taste is to have everything on the main application, as done on the earlier posted EasyBurning 1.81 software posted earlier. Other people prefer tabs or side bar menu's (like Shifting Menu does), and even others like the application to be MDI or a Wizard like application. Figure out what your target audience wants then try to work within those restraints. Don't become obsessed with UI as I'm fairly sure more people use what works better over what looks better any day. A good example of this is YahELite which has a very hacked together UI but is one of the most popular chat clients for Yahoo! due to it's features and stability.

Bryant Keller
Posted on 2006-05-03 12:47:15 by Synfire
Huh I usually make my designs first, (but in my case it always is drawing images from scratch). Then, if I'm pleased with it, I start coding the UI handlers.
Then, I start toying with the GUI, and write any remarks. Sometimes I also measure with stop-watch how fast and easy I can use most commands.
On the next day I look at the GUI, almost having forgotten it - and see what my impression is. Not rarely, plastic surgery is in order for the GUI.

Joel Spolsky has some "lectures" on GUI, and links to good articles/books.
Posted on 2006-05-04 02:21:09 by Ultrano
Thanks for all your comments. The lectures by Joel Spolsky are especially good :alright:
Posted on 2006-05-06 18:56:31 by stormix