Lately I’ve been not so much changing, but expanding, my interests when it comes to programming. Up to about 2 months ago, I would have told you I was a web guy for life. I was strongly opinionated when it came to programming for the desktop. I would have told you, “The Web is the future, why should I program for the desktop? Its dying. Everyone would rather have a web application than a desktop application.”.
Its funny how opinions change.
Well what I said may be true for trivial things, there are still many things that I would much rather use as a desktop program over a web application. Mostly, development things and a few other things too. I find it funny, actually, because one of the desktop applications that I use that gets used over anything else is Tweetdeck, which is an example of a desktop client being used as an alternative to the web application. I am currently collaborating on a project that has a tight integration between the Desktop and the Web, and it is really getting my into the whole idea.
The extensibility of the web, with the convenience of the desktop.
With this newfound interest in Desktop programming, I have begun to look into popular GUIs, and also what I think makes a GUI. It seems to me, that I may either be different than the general opinion, or I may care more about functionality than appearance.
I really don’t like the GUIs of the Adobe Suite and iTunes, which are two very popular desktop applications. I feel that their GUIs focus too much on appearance and not enough on usability. iTunes 10 simple has some fundamental issues, such as the unified color which makes it difficult to quickly discern different buttons or tabs. The Adobe Suite, I feel, has too much of a learning curve. Many important things are hidden from view with no instructions. They say “The best design is one that requires no instructions”. The user should simply know how to use it. I feel that the Adobe Suite GUI could not be further from that. I also feel everything requires too many clicks. I feel that only one click should be required to do just about anything. Only rare events should require two, and two should be the max for any operation in a program.
A GUI that I really love is a much lower profile application called SmartGit.
It’s simply a graphical interface for the traditionally command line GIT versioning tool. While I’m not crazy about the opening splash screen, I feel that the layout is marvelous. All things that I would want to see at once are easily viewable. The working directory, the file listing (including a bunch of information about them), and a side by side comparison of the file on the disk and the one in the repo. Its excellent! All important commands not only are one click away, but have big buttons at the top of the window. Each, with a clear purpose and a descriptive icon. And most importantly, the GUI is exactly what it needs to be, and nothing else. It uses the default shell, which is something that can not be said about iTunes or the Adobe Suite. Why does an application need to have its own “brushed metal finish” on the GUI? Don’t give me that! Keep It Simple Stupid!