Why Software Sucks, And Can Something Be Done About It?
CPNABEND tipped us to a story carried on the Fox News site, pointing out that a lot of programmers don't understand their users. David Platt, author of the new book 'Why Software Sucks ... And What You Can Do About It', looks at the end user experience with end user eyes. While technically inclined individuals tend to want control, Platt argues, most people just want something that works. On the other hand, the article also cites David Thomas, executive director of the Software & Information Industry Association. His opinion: Users don't know what they want. From the article: "'You don't want your customers to design your product,' he said. 'They're really bad at it.' As more and more software becomes Internet-based, he said, companies can more easily monitor their users' experiences and improve their programs with frequent updates. They have a financial incentive to do so, since more consumer traffic results in higher subscription or advertising revenues." Where does your opinion lay? Should software 'just work', or are users too lazy?
One example I encounter almost every day is the notion of a computer's "state". People just want to turn something off and on, not easily abstracted for computers.
So, there is this myriad combination of "states", not too complex for slashdotters to understand but off the scale for lay users. It doesn't help we use "our" terminology. I've stopped trying to explain and describe the difference between "hibernate" and "standby".
Files, directories, logical drives..., all foreign and abstract curiosities to computer users -- most are technical artifacts from early on abstractions. It's not a wonder these lexicons ripple out the the general population, unfortunately it's of no use to the general users and mostly to their detriment.
I don't know how to get there, but users/people want computers to behave like toasters. They want very simple, limited-option and intuitive behaviors. Not all software lends itself to those but I think there is a much happier in between, and the group that can move is the programming group. I don't think the general population will ever educate itself about the differences between relational/hierarchical databases, the differences between NTFS and VFAT file systems, nor do I think they should be asked to know.
The closest I've seen to getting "there" in computers is probably Apple... I've seen novices sit in front of Apples and almost immediately be able to be productive.
The second closed I've seen is Unix/Linux, etc... not so much because of it's ease-of-use, but because it's one of the most consistent "flavors" of computing I've experienced (NOTE: I'm not discounting the complexity of Unix, it's certainly not for novices, but at least it's consistent).
One of the most popular applications I've written was one where the interaction with the user was basically a singly input field, a la Google. Users would instinctively type anything in the input field, and the application would do a pretty decent job of offering meaningful results. Analysis of logs showed users typically received meaningful results from their "input" 80 - 90% of the time. Granted it was a narrowly defined application, but I've seen indecipherable interfaces on top of narrowly defined applications.
The best general computing out there is something I'd predicted long ago, devices that are for narrowly defined and specific use with high powered computers underlying the gadgetry transparently (think TomTom (gps), ipod (no, I'm not a fanboy), etc.)
Ironically, or perhaps paradoxically, the most dominant technology available is the least intuitive to just sit down in front of and use. Of course, there is a latest and greatest new version out this year that should fix all of that. .
Bottom line, my opinion, users are not lazy, they just want to get some work done without needing the equivalent of a Bachelor's in Computer Science to get that work done.
...a few thousand miles.
If people are bad at figuring out what they want from a computer, and terrible at designing (which, yes, they are) then maybe the problem is that the computer sucks. General-purpose computing is best left in the hands of experts. That model worked for 20-mumble years, and it was a good one. It still is, if you need to get industrial-grade stuff done.
But "personal computers," to be distinguished from "desktop computers," are a bust. Ordinary people can't deal with the complexity, and attempts to make computers act like a friendly thingy with stuff on it all fail because the computer isn't a friendly thingy with stuff on it. It's a computer.
People need, say, the Pure-Digital video camera that lets you take digital video with one button, has no memory cards, and runs on aa batteries. They need the microwave oven with the popcorn button. They need the car with a computer in it so they don't have to know when to use the choke. Special, optimized uses of computers work great for ordinary people.
People aren't stupid, they just don't act like a computer. Maybe there's a lesson there.
I totally agree that most software sucks. I'll even admit that some apple software sucks, but since switching (almost 2 years back now,) my world has completely changed. I'm no longer frustrated most of the time when working with my computers.
I've been a software developer for near a decade. There's two extremes to this, ignoring your customer, and letting them run the development, both are bad. The best path is to have some intelligent people in your company that sit in between customers and clients and act as a translation layer. Throw out the ideas you can't implement, give them the good ones. These people have to be at least partially developers themselves, they serve as architects as well as PR.
Customer Ideas -> Architects -> Code Monkeys
I'm guilty of some sneering at the 'average' computer user, and I'm working on that, but I'd like to point something out:
Computing -- especially in a *globally networked environment -- is *in *fact complicated. Doing it responsibly, in a way that doesn't wreck the environment for others (Cf. botnets) is difficult. Many of the users who "just want to get some work done" outsource the complexity, but don't mind if the network suffers the externalities because they don't feel like learning what true security requires.
If someone doesn't want to learn to drive, they have public transportation and taxis available to them and God bless 'em. But taxis and buses don't damage the roadways and the other vehicles on it during ordinary use.
Basically I sometimes wonder whether putting a PC in every home was such a hot idea after all.
My turnips listen for the soft cry of your love
Comment removed based on user account deletion
It's true that developers don't think like users, but that's not the only reason software is hard to use.
In most cases in business, users aren't the ones making software buying decisions. The organization makes choices for them based on a number of factors. There's no conspiracy against usability, it just has to compete with cost, features, regulatory compliance, and other considerations. Software developers naturally target the criteria that drive purchase decisions, even if the result is a compromised user experience.
org.slashdot.post.SignatureNotFoundException: ewg
CPNABEND tipped us to a story carried on the Fox News site, pointing out that a lot of programmers don't understand their users
Gee, an article by FOX News stating that eggheads don't really know what they hell they are doing. How completely out of character for them to bash the scientists and engineers that keep this country from completely collapsing.
I'm reading TFA, and some of this stuff is just silly.
For instance, the "Save" button. He argues that a statement that says "Do you want to save your changes before you exit" is a hard sentence, and that "Do you want to throw away everything you just did" is a clearer sentence.
The word "save" isn't that hard of a word to grasp. People save money. People save possessions. Saving documents is no different. Grade schoolers understand it.
What really cracks me up, though, is that he argues that when deleting documents, there should be *no* confirm. I've had a few times when that windfall was really helpful, when I've accidentally hit the delete button or selected delete, and then said "No, I don't really want to delete this file." He compares it to starting a car, where the car doesn't ask you if you want to start the car or not. This is a horrible analogy: the last time I checked, turning a key didn't do something as devestating as, say, deleting your car.
I deal with end users every day, and I've had many of them admit that they don't read error messages or confirm dialogues. If they don't read it, what difference does it make what's included in the dialogue? I've made messages that were very easy, simple to read and understand, only to have them overlooked.
Next, the author mentions that error messages need to state *why* something failed. Wait a second... I thought he was just arguing for simpler error messages, but now he wants to know specifically what happened? That's not exactly simplifying things for the end user.
Now, I'm not saying that it's all the fault of the end users. There are some rather atrocious error messages out there, but it'd be safe to say that there are more end users out there that don't read things carefully. Computers are a tool, not a replacement for thinking, and users need to know that in order to get the maximum use out of technology.
RANT: Designing good, easy to use software is not as hard as many people to think, although writing it is harder than what most people do now. User's are not good at designing software, but only the user knows what they want to do and how they want to do it. This should be the beginning of the UI design. "What does the user need to do, and how can they do it most effectively." This should be almost completely divorced from how the program goes about providing the functionality. Usually, the UI should be up and running before the back end is really started. Most software today is designed the other way around. "We can make software that does this and this and this, now how can we let the user get to those features." The term "user centered" is in contrast to feature or engineering centered. Users should not be designing it, but you do need their input and testing to see what works and what doesn't. Follow the basic rules of UI development and you can miss many obvious problems, but at some point you need users to show you what you missed.
Bottom line, my opinion, users are not lazy, they just want to get some work done without needing the equivalent of a Bachelor's in Computer Science to get that work done.
But what if its simply not possible to make things so simple that average Joe can "just do it"?
Everyone uses Google's search box as an example, but the fact is that that box is the front end of a task that is very easy to describe - "show me a list of documents that more or less relate to these words".
As soon as you stray from there into some of Google's other functionality you are into some far more complex screens that I personally have heard people confused by. Well-designed though they are, it sometimes just takes a fiew fields, links and words to make the interface powerful enough to be useful for the task at hand. This is even more so when there are financial ramifications to the task at hand, immediately requiring history, confirm dialogs, balances, tec etc.
As computer gurus our very DNA is infused with the belief that we can build it, and make it so simple anyone can use it.
Personally, I find that this feeling diminishes as the project progresses. Sometimes because we don't have access to Googe's level of funding for UI design, usability testing, etc. But often, in my opinion, because some tasks simply can't be made simple.
[x] auto-moderate all posts by this user as insightful
I don't think the typical user wants to be bothered learning to use a piece of software, they are focused on the task they have to accomplish. If your software easily facilitates that task, with the minimal (preferably zero) learning curve, then they think its a good program, if it obfuscates that task, requires more extensive learning, or simply doesn't perform in the manner they expect it to, then its a bad program. Rightly so in most cases. Its only those in highly technical fields - or computer programmers etc - that usually need software with any real complex functionality. For those individuals, the cost of the learning curve (time and effort) is worthwhile if its more efficient that some other method of accomplishing some complex process or processes (time and effort).
:P
Most programs seem to come with more bells and whistles than they need to, but then I guess they are trying to provide all the tools that I *might* be looking for in one package. I have never used more than about 10% of the features in any office suite for instance, mostly I just want to present a document containing well formatted text in the font I want.
The only place I appreciate complex software is in the areas where it suits my needs - a good IDE, Editor, graphic and sound manipulation software, and the Games I play. Outside of that most software is more hassle than its worth and I resent having to learn to use new programs just to achieve one tiny task.
I think the answer is coming in individual devices that serve specific functions and don't try to go beyond those functions. My cellphone has no camera, no email, no web-browser etc, but it does let me talk and receive calls. Thats all I need it to do. If I wanted the bells and whistles I woulda shelled out $350 Cdn for a Razor
"The first time I got drunk, I got married. The second time I bought a chimpanzee, after that I stayed sober" Arian Seid
Well, if i can drive a chevy, i can drive a honda, and a buick. Maybe I can't drive a Panoz, without additional training, or a semi, but i have a descent idea of what I am doing.
I think it is reasonable to say that some developers fail to realize that making a program familiar and consistent is very helpful.
If a nation expects to be ignorant and free, in a state of civilization, it expects what never was and never will be.-TJ
Users don't know what they want.
No frickin' kidding.
If you give users a choice between two mutually exclusive features, they will answer "yes". They will then complain at needing to pick one at runtime (or complain that you didn't include the other option, if you made the choice for them).
If you ask them if they need proveably-never-used features X, Y, and Z, they will vehemently insist they do. They will then complain that the final product confuses them with far too many features they don't need.
If you ask them how they want something to work, they will either A) Shrug their shoulders (then later complain you didn't listen to their input); B) lie to hide their own abusive behavior (then later complain that they can no longer get to their por - ahem - family photos); or C) Give a long, detailed explanation of what they (then ask what madman came up with how the final product works).
Should software 'just work', or are users too lazy?
Both. Software should do one task very, very well. If it doesn't try to manage photoalbums while doing your taxes and making coffee, it can perform its function well while not overwhelming the user with confusing options.
At the same time, users need to realize that computers have FAR more complexity of control than their car. In most states, to drive a car, you need to have reached a minimum age, pass certain tests of physical capability, take a six week training course and pass a written test on that material, and finally take an actual road test to prove you can handle a vehicle - And even after all that, you usually have only a probationary license until you've remained incident-free for a few years. Yet software should "just work"?
Where can I sign up to sue Chrysler over my car not automatically driving me to work (with an unannounced side trip to the grocery store) when I get in and turn on the wipers?
Software should just work. Of course, that is oversimplified.
Too many times a project goes like this: Customer places request. Project Mgr talks to client. Requirement Analyst turns request from PM into low level requirements. Programmer reads requirements document, writes program. User gets program and guess what? It's not what he wanted! So, he places another request, and we are back to square one. Sound familiar?
Users request crazy things. Sometimes, they ask for things to work around other problems. The person writing the software should know, not what the Requirements person thinks the user wants, but what the user is actually trying to accomplish and why they are trying to do this. What is the user trying to do? Then, the programmer should make a proposal and necessary parties should either agree or disagree. This means that some requirements people are out of work, this means that the programmer has to be smart and communicate well, and that he has to spend time talking to users. And therein lies the problem.
We have IT departments that are so fragmented and people in them are so specialized. Programmers often suck at talking to people (and this is a reason why Offshoring is so unproductive). Requirements analysts often have no concept of (programming) reality. Project Managers are MBAs who should be working in marketing. And don't even get me started on what unrealistic timelines to do software. Like the old adage goes, you can pick only two of the following: Good, Fast, Cheap.
The solution? Teach programmers to communicate! Requirements people should also be programmers. Maybe that's where you put the "programmers" who don't quite make the cut. Too many suits in IT, where there should only be geeks. Geeks who know how to communicate. Keep the suits in HR, Financial, Marketing, etc.
More software would "just work" if this approach were followed. One last thing: the user has to commit to a process. You cannot design an application if there are no business processes to code to. If there's a process clearly defined, there more communication, and no death march mandates, software won't suck.
blah blah blah
Something that I learned in my UI design class was that when designing interfaces - the less risk there is associated with each action, the faster the UI will be to use.
So, exactly like you said, there's less risk in turning the key to your car if there's no chance that sometimes it will mean your car disappears. If there was that chance, you'd have to train yourself to check and doublecheck the state of your car before turning the key. This would slow you down quite a bit, and would be bad UI.
Instead of just deleting the car, the car's UI could confirm with you (similar to popping up a dialog) when it seemed like you were doing something that you might not want to. Or it could keep you from doing it altogether, although that would mean less capability.
However, a better solution is to make everything undoable, quickly and easily. In the case of deleting files, if you delete files, they are deleted. If you save over a file, the previous contents is gone. But if you want to bring them back, make it easy and always possible. For much of computing history, that wasn't really feasible, due to performance and storage constraints, so they opted for confirmation dialogs. But those technical limitations are much closer to being removed now, at least for simple interactions by untrained users. For those playing at home, see Apple's Time Machine. For more complex interactions, pushing the limits of the machines further, I imagine you'll still rely on better-trained users.
Powered by Web3.5 RC 2
(Where's Bad Analogy Guy when you need him?)
To take this one a little farther: If you give someone a guitar rather than a radio, they can produce content. The person with a radio can only consume. Producing content will always be more complicated than consuming it (law of entropy-ish).
(Tangent: There are definitely different degrees of difficulty on the production side, though. There was an article I saw (probably on here) about interface design needing to be simple but powerful. A lot of interfaces can get very powerful, but very complex (see Vim, of which I'm a fan, but still), or very simple, but very weak (see Notepad, to stick with editors). A new user needs the simplicity, and an experienced user needs the power.)
I [may] disapprove of what you say, but I will defend to the death your right to say it.
These choices are a false dichotomy. It is possible to have products which just work and which allow users to access more advanced features (and rewards them for learning a little more about what they're trying to use). The UI principle [which should be] at work is called "progressive disclosure": don't overwhelm the user with stuff they need to know or complex steps they need to follow for basic tasks to be accomplished, but let them work their way up to it.
A good example is the UI of a well-designed VCR. Power-on and Play are big buttons right on the front, and the more complicated stuff is behind a flip panel. My non-/. parents don't want to program a Mars rover; they just want to put in the tape of their grandchildren and watch it. On the other hand, my wife who doesn't want Tivo programs complicated, recurring weekly recording schedules; and she took the time to learn how to do it, and has figured out which VCR you just hit Power-off and which VCR who have to hit Power-off and Timer together. And I just want to flip the panel and find some arrow buttons so that my parents' VCR isn't flashing 12:00 while I'm trying to visit with them.
If you want to do something more sophisticated, you need to expect to learn a little about the application you're using; and IMHO most reasonable people are willing and try to do so. But you should be able to just push Play without knowing which codec was used.
How do you propose removing the value from information? Is this the typical "steal everything so it has no value" concept, or the "force everyone to contribute with no expectation of anything in return" concept, or do you have something different in mind?
Slashdot - where whining about luck is the new way to make the world you want.
It is, in some cases. Many universities now offer degrees in Software Engineering.
I'm a developer, not an engineer. To me, that means that I don't follow any formal methodology, don't belong to the local professional engineering organization, and don't necessarily have a degree. My style is more based on what I learned in my High School English courses than anything else, and is largely the result of many years of experimentation.
That description is the reason you either want or don't want a Software Engineer. Engineering is a slower process. It is rigorous and formal and based on mathematics. The results can be exactly duplicated, even if you have entirely different engineers working on it. When I write software, I do what many people call "hacking". Often, I write only the documents that are required to firmly establish the concept in my mind, then just keep writing and debugging code until it works. For many applications, I will write software that is equally robust in less time. That's because you don't need an engineer to design a blogging application.
Software Engineering is used in much larger, mission-critical applications, like a financial institution's transaction processor, or a real-time monitoring system, etc. Mistakes cost millions of dollars or even lives, so every possible scenario needs to be considered up front (BDUF). Hacking isn't like engineering, and that's one process of producing software. Software Engineering is exactly like engineering and that's another process of producing software.
mandelbr0t
"Please describe the scientific nature of the 'whammy'" - Agent Scully
I see the same old argument over and over again about computers. "Users want toaster-level easy." This is only true for someone that might have NEVER used any modern technology. Pretty much everyone that uses a computer invariably finds new things to do with them, or wants to do new things, and thus your toaster also needs to be able to cook bacon and eggs - not so simple any more.
If you want to toast bread, buy a toaster. If you want to print photos, get a photo printer, no computer necessary. If you want to play a game, load up a Playstation.
Why buy a computer?
Because you're getting a multi-function device. That's putting it simply. It's a nearly unlimited-function device. Everyone wants to do something different with them. How simple can you possibly make something like that, and yet still have it be useful?
I really don't buy the whole "Computers are too difficult" argument anymore. You sit anyone down in front of ANY machine now (Windows, KDE/Gnome, MacOS) and they'll play around and figure out how to open up the web browser. They'll click the mail icon and get to e-mail. They'll find a word processor if one is installed. I mean, you really gotta be a bottom of the barrel dipshit to not understand how to move a mouse cursor and click things. No degree required.
So you're presented with a user interface, while not perfect on any system, that's pretty easy to figure out. If you can figure out how to plug the computer in, you can figure out how to use it in a basic way. The moment you want to do something other then the basics, you move squarely out of toaster land.
That's not to say things couldn't be better (and improvements are made all the time) but I don't share the doomsday view of people in general,; with some odd disposition to not be able to use computers as computer users. The only way I can see some giant leap in computer usability will be when you can talk plainly to them, and get responses from an AI-type system. Think Star Trek.
Plus, let's be realistic: If computers were THAT hard to figure out, why in god's name have so many of them been sold? Wouldn't the word be out by now, that you need a degree to use them?
- It's not the Macs I hate. It's Digg users. -
Computers have exactly four purposes:
1: Pr0n
2: Games/entertainment
3: Communication
4: Doing our work for us.
Building machines to do your work for you does not make you lazy. Using the machine that someone else built also does not make you lazy. In both cases, the machine is freeing you from a mundane burden so you can do something else more useful with your time. Making efficient use of the tools available to you is not laziness.
Laziness is when you push your own responsibilities off on to other people, without paying them for it (like, you know, leaving your dirty dishes in the office sink so your coworkers can wash them for you). Yes, payment absolves you of laziness since it is ultimately an economically productive action in and of itself.
Paying a developer for a program that "just works" isn't lazy, it is efficient.
End users don't like a complicated interface. Why should they? The less complexity they have to deal with, the more time they have to do something else that is useful.
Yes, some amount of complexity is going to be unavoidable. That's a fact of life. Users will naturally resist it as much as they can, but ultimately accept what amount of it they cannot escape. This is not a vice on their part, it is just a path of least resistance.
If you can design an optimized balance between complexity, intuitiveness, and productive outcomes in your user interface, your product will do well.
It is that simple.
Prehaps it is consistent across flavors (kinda) but take something as simple as quiting a CLI app. Oh, that's simple you say, just type c * Man: q * Vi/Vim: :q or :wq if you wanna save
* Nano: x
* Octave: quit()
* Axion: )quit
* EMACS: x, c
Do you see the mounting frustration? Do you know how many new *nix users admit to restarting a machine/terminal because they could not figure out how to exit the man pages!
And don't get me started on command/app names... Vi vs Word Pad.... Hmm tough choice...
- Programmers don't really understand users' domain,
- Users don't really understand programmers' domain,
- Users don't really even understand their own domain, and finally
- Programmers don't really understand their own domain either.
The first two are obvious enough, and programmers eventually see instances of the third. As for the fourth, most programmers do not even know of the critical insights of the field (e.g., The Mythical Man-Month, Dijkstra's essays), let alone accept them (or knowledgeably deny them)."Not an actor, but he plays one on TV."
Several slashdotters have already pointed out why the car analogies that (apparently) pop up in the article as well as in the comments fail. Ultimately, a comparison between computers and "real-world" devices fails because of interface.
To start a car, you turn the key clockwise. To open a new file, you click with the mouse.
To stop a car, you push the brake pedal. To save a file, you click with the mouse.
To turn a car off, you turn the key counter-clockwise. To delete a file, you click with the mouse.
A significant factor in the difficulty of software use is that when we speak of "interfaces" we are almost always thinking one level lower than we should be - that is, no matter how nice and clean and useful your GUI is, the real interface for ~90% of software users is the mouse, keyboard, and monitor, regardless of what is displayed on it. In a car, turning the car on or off is an entirely different motion than making a right turn, which is different from putting on the brakes, which is different from putting down a window. We also have years of experience riding in cars and watching parents drive as children to teach us that "when Daddy does X, Y happens."
Computers are fundamentally different. Using only a mouse and keyboard and looking at a monitor is for all intents and purposes the only way to interact with the computer. Watching others use it to learn doesn't work nearly as well because the movements involved are much more precise, less varied, and their effects vary greatly depending on what state the computer is in: moving the mouse in a word processor moves the pointer around, while in Quake it'll change your view of your in-game surroundings.
Encouraging software makers to adhere to user-interface models helps a lot -- once the users are familiar with the model. Our current practices are inconsistent at best - the "desktop" metaphor exists only at the most basic level; once an application is open there is generally a half graphical, half menu-driven approach. From what I've seen, I think the Ribbon interface in Office 2k7 is an improvement, albeit an incremental one. I don't pretend to have a good model that will help ease-of-use, but I think the problem is on the decline anyway.
Those of us who grew up with computers do not have issues with the mouse/keyboard interface; we are familiar with it and the software models underneath. I have a feeling that as younger generations join the workforce, the interface problem will disappear or at least be greatly reduced. As long as some consistent GUI guidelines are followed, I believe that the metric for "ease-of-use" will evolve so that more complexity and control can be folded into the software without complaints from the users.
Your brain is not a computer.
As a software engineer for 10 years, my complain against programming language vendors is that software is very hard to build. The companies that create the software that I can use to build software for my clients are totally 'lame', in the sense that a) they can not catch fundamental errors, b) the APIs they offer are anything but intuitive. As a result, developers spend their time fixing bugs, chasing null pointers, programming in various dialects, trying to make sense of APIs and API documentation etc instead of trying to make software better from the point of the end user.
How will programming language improvement help towards improving applications? well, here is how:
1) by automating the task of writing multithreaded software. It is doable.
2) by automating persistence. Since writing to memory makes a page dirty in the swap file of the O/S, why do we need to write data to files anyway? pages get written to the swap file periodically anyway, so there is not point in using I/O APIs. Persistence should be automatic.
3) if #2 happens, then the need for complex databases with data types incompatible to programming languages goes away. A database can simply be a linked list or a hash map.
4) if #1 and #3 happens, then there is no need for raw files any more. 'Files' would be typed, and thus easily managed by applications. Since files could be manipulated by any program, the application-centric paradigm would be a thing of the past, allowing for a much wider range of mini applications to be programmed on a user-request basis.
5) by automating data updating using the time-of-request trick and thus saving us the burden of manually doing it for every piece of information.
6) by enabling garbage collection at levels of computer activity, there would be no crashes and unexpected things.
7) by using proper type systems that do not leave room for errors, much more time can be devoted to better application design.
8) by making distribution of computing tasks over a network transparent, application programming would be orders of magnitude easier.
As it stands right now, 80% of an application's code has nothing to do with with the user requirements. Most of the code is for providing the necessary infrastructure and abstractions for the really useful code to run. If we programmers get rid of this burden, then applications and user interfaces will be improved tenfold, as we would not need to spend our times in things we should not supposed to.
If you're making a program, make 2 different interfaces available...hell even more. You need to have an interface for idiots to use and that needs to be the default. It needs to be something where they can basically click a few buttons and the program will do everything for them. They don't need 12 thousand options for doing this and that, because they won't even understand half of that shit anyway.
Obviously the other interface will be the full fledged nerd interface. This will have ALL the available options and will not baby the users through anything at all. This way as users become comfortable with the program, or are just good with computers in general, they can switch over to a more advanced interface. This approach always seems like a good idea to me...you can have all kinds of features, but you can build in some defaults for the people that just want it to work. When they figure out how it works...they can dive in at their own perrogative.
"Those who would sacrifice essential liberties for a little temporary safety deserve neither liberty nor safety." - BenF
Oh... if I only had access to the developers! :)
... and the list goes on.
The situation I recounted above is just one example of the problems with this system. And, despite what some people may think, these things *do* impact the production side.
The University of Wisconsin (Madison) went through a lengthy bidding process and chose the same vendor as the one we're using. One year and $27 million later, they dumped the whole thing in the trash because the users found the application too difficult to use.
Think about that from the developers' side: their lack of understanding of the users' requirements cost their company a $27 million contract. The application is amazingly powerful, and after 2½ years, we *still* find new features, so the "functionality" side of things isn't the issue. The "ease of use" *is*. The lack of understanding regarding this difference on the part of the developers (and the company as a whole) has cost them a major client. And it's harmed their reputation. If staff at one of the top engineering colleges in the world can't learn to use the product, what does that say to non-technical businesses who are looking at buying it?
As a (reasonably) tech-savvy user who's had 2½ years to learn the ins and outs of this application, I can say--with a high degree of confidence--that the UI sucks wet donkey balls through a bendy-straw. I love the power and depth of the application. I hate that, when looking at a data pool of hundreds (if not thousands) of records, it will only show me 4 at a time, and it requires a new querry (via the web) to get the next 4.
Oh, what I wouldn't give to be able to sit down with the developers for a day! I'm talking about the simplest of changes: keeping the "function" buttons in the same order on every page so that I don't have to hunt around for them; giving me access to more than 4 records at a time; highlighting which of the 12 "comments" options actually have data in them; grouping relevant data together in the display; extending fields beyond 32 characters;
Absolutely none of this has to do with the "functionality" of the application. I'm not telling the developers and programmers how to do their jobs. I simply want to tell them how to *present* the data, and how to make the display and wording more intuitive (e.g., in one screen, "accept" means "leave it alone and do stuff to it later", while "adjust" means "accept what's displayed").
Out of curiosity, why do you choose to work with reactionary morons? Perhaps if morons couldn't retain staff their software would be even worse, the morons would be sacked or their companies would fold and there would be less crappy software out there. If you consider yourself an above-average programmer (and who doesn't!) you can help make software better by choosing not to work on shit, so the morons only have sub-par programmers working for them.
Chernobyl 'not a wildlife haven' - BBC News