Brief Thoughts about GUI Coding and Design

As I have been working on my projects in the past and present most of which focuses on GUI coding and design, I have some rule of thumbs which I have in my mind. See, people think GUI coding and design is easy. That's true, only if you are the only user in the world or maybe less than 5 people who are using the application with the GUI as the front end.

But if you got at least hundreds of people using your GUI that you designed, that's another story. Couple that with your business managers and a bit of office politics, things then gets complicated.

You can say client-server programming is like that too. But client-server coding is mostly technical. It does not have the soft side such as human interaction, like GUI, because client-server is behind the scenes. As long as it works, the user doesn't give a damn how it works or whether the code is sloppy.

But GUI is front-end and visible to humans, which themselves are complex animals with complex opinions. When it comes to visual things for humans, satisfying one might not satisfy another.

Developers see thing differently than end users and what one group care the most about is what the other group careless about. There will also be a new user who will criticize the tiniest thing that is unknown to 99% of the people whom had been using the application for years. Then there are the infamous impossible requests by clients such as shoving everything into one panel or window while the fonts are very visible to an old lady all without compromising the look and balance of the application. Then some others will even complain that everything is all customizable to a point that it's too confusing.

Then there is the development side of things. Business Managers constantly request to change the look because after a while they realize their prior request was wrong and therefore gives new specs, which can also be "wrong" later. Then once everything is believed to be confirmed and then release out, you have the end users who will request for new modifications. The only thing you have to do is to make sure your code can adapt to change immediately because god knows when they will come back and say "actually, make it this way", which was the original way you had suggested it in the first place.

There's more to what I'm saying here about GUI, but I'll stop here for the time being. Basically GUI programming and design is both an art and science. Anyways, here are the rule of thumbs I found to be useful if I'm the sole person in charge (a.k.a the manager, the coder and the designer)

1) Be consistent on the look and feel and widgets everywhere
2) Make sure GUI design have a 'stress-less process flow' feel
3) Make sure it's pleasant to the eye
4) Make it intuitive. (activate and deactivate widgets, etc.)
5) Don't overdo
6) Be efficient; trim the fat, and be simple but not too simple
7) Balancing look is the key
8) Make sure your code is extremely easy to maintain
9) Think ahead and leave yourself open when coding and designing the Interface for possible future changes

No comments: