As many here are probably aware, my major interest is in the GUI part of applications. I find that part fascinating and devising ways to make a task easier and more intuitive is for me at least the most challenging part of Windows programming. To me a great program that performs it task perfectly is useless unless it is easy to use and does not require much of a learning curve. This includes end users, not just programmers, an application should be clear and intuitive for all. I try to concentrate on making as little use of the keyboard as possible while sticking to the standard Windows method of doing things.

I was wondering how everybody ranks the GUI portion of their apps in importance.
Posted on 2004-03-13 21:55:24 by donkey
In general, user interface is a very important part of any application that requires user interaction. So much so that there are entire four year university programs dedicated to the subject.

I personally find that it's much easier to learn how to use an application when its UI conforms to certain standards and is designed well. There is a certain look and functionality that people come to expect from most windowed applications. (i.e. the close window at the top-right, or "File" being the first item on the window menu, etc.) Developers that don't conform to those standards when they should will have a hard time selling their software.

Beyond that, it is the responsibility of the GUI designer to ensure that the interface is aesthetic, intuitive, responsive, and powerful. A programmer will really benefit from some basic artistic knowledge. For example, it comes in handy for learning where to position and draw elements with regards to spatial placement, color, contrast, focus, etc. A good metaphor here would be feng shui.

Unfortunately many programmers care nothing of GUI design and manage to produce downright hideous looking interfaces for their programs. It always makes me wince a bit when, on here or other programming forums, newbies will ask how to color a button or other control, with the intent of integrating it into some commercial application somewhere down the line. Of course they do this without realizing that the user will likely not take very kindly to having an application override their default font, color scheme or window theme. I often see custom controls which also lack any concern for the users' settings.

And then there's the other end of the spectrum, when applications concentrate a little bit too much on the GUI. Often the result is a sacrifice of size, functionality and power for needless bells and whistles. These applications (who will remain nameless to prevent any potential ensuing flamewars) tend to overdo it. The main function or data presentation of the program takes a back seat to the GUI, and the user has to spend more time tinkering and learning about all of the little buttons, wheels, switches and lights just to figure out how to make the application do what he or she wants it to do.

I regularly hear the argument from the "hardcore power users" and "133t coderz" -- often embittered by all of the computer illiterate n00bz that they have to put up with daily (who coincidentally represent the largest computer user market share) -- that if a user can't figure out how to use their program, or some other program, then that person is somehow "unworthy" and should not be using a computer to begin with. (the typical Linux zealot mentality) But, if that's their opinion, then they are certainly welcome to it. Unfortunately that kind of thinking won't hold up very well in the commercial world, should these elite coderz ever decide to go that route.

That's my two cents anyway.
Posted on 2004-03-14 01:52:37 by iblis
most of my apps are console, and dont require any thing but text input/output to make full use of the program. my programs are mostly winsocks/ or some sort of service or some algorithm, dont require a gui. but ive done my share of guis for gui apps where a gui only works.
Posted on 2004-03-14 02:19:33 by Qages
I think it should always have been fairly obvious which vote was going to win the poll. I have to agree that a GUI is a very important part of any program, unfortunaly I also find it a hardest part of any program to get right.

I wonder though Donkey why you try to avoid the keyboard. Of course every task should be possible with the mouse, but I find any repeditive or often used tasks should always be possible with keyboard shortcuts.
Posted on 2004-03-14 07:44:25 by Eóin
99.5 % of my apps is GUI oriented .
The sentence as " console is for experts " is very right , and I make progs for normal users , not for expert . The tools such as compiler , specific tools , etc ... are for experts , not for end user . All they needs is point and click , an attractive GUI and easy to use.
Posted on 2004-03-14 08:05:51 by dreamweaver

I think it should always have been fairly obvious which vote was going to win the poll. I have to agree that a GUI is a very important part of any program, unfortunaly I also find it a hardest part of any program to get right.

I wonder though Donkey why you try to avoid the keyboard. Of course every task should be possible with the mouse, but I find any repeditive or often used tasks should always be possible with keyboard shortcuts.


I have no problem with keyboard shortcuts, I mean keyboard use like having to type in the names of files etc... I think that every function of a program should be able to be accessible without the keyboard. I do however normally use the standard shortcuts ie CTRL+Z, CTRL+C ... But when I design the GUI I aim at reducing the keyboard usage to zero then add the shortcuts afterward, this reduces reliance on them and forces the app to be more GUI friendly

I knew as well which option would "win" the poll, I wanted to see how prevalent the extremes were but it would hardly have been a fair sampling not to include the obvious choice.
Posted on 2004-03-14 09:36:27 by donkey
About avoiding use the keyboard, I consider is bad too, the same that consider that the gui is not important.

With the keyboard, if you are a "power user" you normally will know the 'hot keys', and dont need take the mouse for do an action.

Also a "expert user" become to be a user that read the help file ;).

or run:

prompt > appName ?

or appName --help


Also see tha there exist a diference in know how to execute a programm, and know how to use it... (the idea is not clear.. let me explain it..), supose that I know all the switch for x application in the command line, I pass: nasm -fobj helloworld.ccp . Hey!!!! you see there exist a diference betweeen a "power user" and a user that know for what is the application (trying compile a .cpp file with an assembler). I expect that the point is explained well with this.

Also this append in some way with the applications that have a GUI. supose that you have a 3D modeler, now you see alll the buttons in the app, the icons and the menus, but hey!!! I dont know what is a 3d model.. then I dont know for what is the application, at this point like the anterior example, there no exist much diference, the command-line user know the switches and the GUI user know the meaning of the icons and organization, but dont know really how to use the application!!!.




Sure that for standar applications (like a text editor) is easy to follow in GUI, but is easy know to the simplest help passing the ? to the cmd-line programm.


Have a nice day or night.
Posted on 2004-03-14 09:42:49 by rea

99.5 % of my apps is GUI oriented .
The sentence as " console is for experts " is very right , and I make progs for normal users , not for expert . The tools such as compiler , specific tools , etc ... are for experts , not for end user . All they needs is point and click , an attractive GUI and easy to use.


The sentence as "console is for experts" is not true. Even, a new asm coder has a basic knowledge about masm's (ml.exe) switches. He should be able to build an application with the classical statements:


ml /c /coff sourcefile.asm
link /SUBSYSTEM:WINDOWS sourcefile.obj


Most of the times, compared to console applications, gui applications are easier to use. This is why windows has a graphical user interface. %100 of my tools are console applications, they have few switches to run and they don't require any "expertise" Notice that in some cases, console applications are easier to code and to use.

Personnaly, I like Donkey's works, he's coding very nice gui applications :alright:
Posted on 2004-03-14 10:44:05 by Vortex
GUI's are cool, but for most of my apps I use DDraw fullscreen so I prefer and simple and straight to the point keyboard driven GUI, nothing more, nothing less.
Posted on 2004-03-14 22:22:54 by x86asm
GUI is very important part of application. It like when you buy something in the supermarket, you will most likely approach toward nice packed candies rather than others with not so nice package. Of course if your program sux, no GUI will correct that :)
Posted on 2004-03-15 15:19:35 by Mikky