First off, for the average person (one who just does chatrooms, instant messenger, email, web browsing, etc.) on the computer, you may get very frustrated. Computer breaks, you need it fixed. The tech support guy on the other end of the line seems to speak in a foreign language (“Clearly sir, that was the tray for your Samsung CD-RW drive and not a cupholder.”). You can’t understand him at all. He could actually be making a larger deal out of the problem than it really is (o, monitor is busted…guess you have to replace the whole computer instead of buying just a replacement monitor). Some of the support technicians don’t realize that you don’t understand what they are saying. Some realize it and use it to try and make extra money. And there are the very few, once in a lifetime, that actually utilize analogies to make everything easier for the customer.
This leads me into my main argument. It is not computers that are confusing to the users, it is the developers themselves. “I can’t make it any simpler, it has to be this way. Either way, they can figure it out.” Come on! Most users don’t want to learn anything or take time figuring stuff out. If it isn’t exactly easy to understand, they won’t want to use the product. Developers make programs for themselves, never the users. When was the last time you have ever seen a average user learn to set up Gentoo Linux 2004.1 in a few seconds (for those that don’t know, Gentoo 2004 had a hectic time installing because it all had to be done manually without a nice installer with buttons to click on). Come on guys! Just listen to users and hear what they want the program to do. If they want to be able to start a program in one click on their desktop, do it! If they want to access their favorite site by just speaking into a microphone, by all means, add it in! Ask the public if they want a feature first before you add it into a program. In fact, ask the public to design the overall layout (how the buttons and etc. are organized on the screen) of your program. More importantly, take everything down to their level by using analogies to simplify items. Also, as a more important statement, DO THE LAYOUT FIRST AND MAKE IT EASY TO USE BEFORE YOU ADD FEATURES! Developers can’t grasp that.
I have several programs that can act as good examples. First off, many may hear me talking about Linux. It is a powerful system yet lacks a good GUI (what you see on the screen). I have started a project called Likos Archi where I am gonna invite users to help make decisions on how the system with work (layout, what will come installed, etc.). Try my method of inviting users to make all the decisions on what should be changed, removed, and included.
Another program I would like to point out is IceBB. IceBB is a message board system that I support. Yet, I honestly think that they are going in the wrong direction. Go ahead akurashy and MutantMonkey, argue with me about this, but hear this first. Try going up to 5 people out in public on the streets of a rural town and ask them to try IceBB. If they all learn it quickly without you having to help, then it is user friendly. If they have problems, ask them how to fix it and then do it. Go ahead and hold back the release of IceBB 1.0 Final and drive the community insane. Do you honestly want to grab only a small portion of the market (exclusive developers) or do you want to grab the largest portion (the general public)?
So, as a few final words on this topic. All developers, please get a user friendly interface before actually adding in all those features like RSS and extensive AJAX. And users, please put in suggestions on how to fix the layouts of a program’s look. It only takes a few minutes but can mean a huge difference in the outcome of the program.