I was having a discussion the other day about my next OS X application and the responses I got were that there was a free web way or a free command line way to do what my app will do, so why bother?
It got me thinking about how I use software, how other people use software, how people tell me how to use software and how I tell other people how to use software.
How I use software
I am a mouse and GUI guy. Even though I have been programming for over 20 years, I still do not touch type. I did learn, but much of my programming requires me to move my hands away from the home keys and onto the symbol and modifier keys. My 6-8 finger floating typing technique is adequate, and I usually use all the control keys from my left hand while my right rests on the mouse. The disadvantage of a floating typing technique is that I often strike the key next to the one I want, and given that I regularly move keyboards with slightly different layouts and key separations, this is a problem. So give me a GUI any day.
I am also a native application guy. Given the choice between command line, web or native GUI, I go native every time. Part of it is the aesthetic beauty of a great native GUI, part of it is the comfort level using standardized GUI (command lines and web sites are notoriously non-standard) and part of it is because I have spent so long with menus here and icons there and buttons this way that I don’t want to change.
Here’s my morning so far:
- I am typing this blog using MarsEdit, instead of the web WordPress page for creating entries.
- I just checked in my source code using VersionsApp, instead of command-line SVN. And I’ll stay on SVN, not git or mercurial until a better GUI comes along.
- I just edited some of my shell scripts in TextMate, instead of using vi or emacs.
- I am watching my news feeds using NetNewsWire, instead of the free Google Reader web site version.
- I have Tweetie up for twitter instead of my own twitter web pages.
- I use AppViz to track my iOS app sales instead of relying on Apple’s web site
- I use Colloquy instead of command line IRC
- I just updated this web site using Transmit instead of command-line FTP
And I have paid for each of these apps (Colloquy is donation-ware)!
I love the value I get from each of these products. I love how productive I am with them. And I love how I love using these products. And I know I’m not the only one because all of these products are very successful in the market (and likely why I am becoming an indie developer too).
I never get these feelings or productivity from the command line. I don’t get attached to things on the web either. The command line is as boring as a desert, and the web seems transient, almost like its unfinished, unpolished or just going to change yet again for no apparent reason.
How other people use software
I think a lot of people outside the tech world expect software to be hard, confusing, full of jargon, unstable, continuously changing and requiring of special skills to use. And to use it, they have to learn all the odd commands, weird menus and sequences of steps to get the job done.
I also think the iPad is changing this perception, albeit very slowly.
Well designed GUI applications like the above are great for non-technical people to do technical work. They require no special skills, they have very clean and simple interfaces, they eschew jargon and they make the experience of using the product oh so much more fun.
On the tech side, there will always be those who say the command line is faster, more efficient and the right way to do things. I’m not going to argue with them, it works just great for them, it suits their style and they must love the simplicity and elegance of well crafted commands. I do not. And I will not feel guilty because they feel superior. I can use the command line, I choose not to.
Web GUIs drive me nuts. Great web interfaces are few and far between. But the inconsistency between sites, the lack of a HIG (Human Interface Guidelines) standard, the performance delays caused by round-tripping and my perception that all web sites are like mine, under continuous development and change, make it hard for me to like them. And with net neutrality all but a fiction, reliable internet service a fantasy, I like having my applications and data on hand no matter what.
How people tell me to use software
I have been told by experts and novices alike how to use the software they like the way they like to use it. Listening to them has made me a better developer and has enabled me to create more flexible and useable interfaces.
But some of the things users put up with amaze me. Application restarts, arcane commands, odd sequences of menu operations, manual behaviors because the automation fails, save and reload, step by step processes that add nothing to the document but are required to stave off perceived problems, chicken dances and goat sacrifices all. I had one user who loved his CRM package, but could never find a contact in it and had to shut down all other software before sending out a mail merge. Yet they would not change products and wanted me to use the same messed up system.
I tend not to put up with these things. If an application does not look great, I look elsewhere. That seems superficial, but a developer who does not deliver good aesthetics usually does not deliver good solutions either. If an application is complicated, confusing or full of jargon, I use another. If I have to be trained to use the application (even with domain knowledge), I choose another.
How I tell other people to use software
I don’t. Software, at the end of the day, is a means, not the end. Whatever works for you to achieve your ends, do that.
Well, actually, I do tell people how to use software, but only indirectly. By creating well designed, intuitive and easy to use applications that are fun and efficient to use, are bug free and look amazing. I hope they compare my software to others and realize that they have gold in their hands instead of plastic.
Oh, and maybe a little directly in this blog.
I buy a lot of software. I write a lot of software. I use a lot of software. And I regularly replace software with new, shinier and better software.
When I work, I choose to use small, focussed, well designed, native GUI applications because through them I more productive, I enjoy using them, I enjoy doing the things they do for me, I like the way the look and operate, and it suits my style.
And my next OS X application, which will be a Noverse public for-sale one will do just that, replace confusing and complicated web interfaces with an excellent native GUI to help me, and I hope you too, gain the same enjoyment from my software as I do from the software I choose to use every day.