This question is along the same lines as this one, but instead of talking about quality of code, I'm talking about the final product from the users' perspective. If you had limited time / budget, and could only guarantee one attribute of the software (other than the basic requirements) that take it from decent software to good quality software, what would you consider most important?

Is it having as few bugs as possible? An intuitive interface? Helpful error messages? Good technical support and documentation? If we don't want our software looking like cheap crap to our users, what should we always remember to include?

closed as primarily opinion-based by user40980, GlenH7, gnat, Dan Pichelman, Kilian Foth Sep 20 '13 at 14:25

Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise. If this question can be reworded to fit the rules in the help center, please edit the question.

  • Of course it depends. What's important for Photoshop (ease of use/aesthetics/power) is vastly different from what's important for Mars Rover software (rock solid/mathematically correct). But some software may strive for both (debuggers anyone?) – Thomas Eding Sep 18 '13 at 18:17

Intuitive and attractive user interface. It may seem clichéd, but there's some truth to the statement "beautiful things work better."

Edit 9/18/2013:

It's been years now but Morten's question below has been stuck in my head all this time. Yes, I do judge SQL servers by their user interface. Everything has a user interface. Well, almost everything anyway. Shells, config files, commands, log files, they all are an interface for users. Even most linux kernel modules have some UI exposed as files in /sys and /proc. Yes, those are user interfaces. Just because it isn't graphical doesn't make it any less important.

Example: I know Postgres is an excellent database. I'm sad sometimes I don't use it more. I use MySQL more. Why? Part of it is that the shell commands are easier to use. show databases; says what it does and does what it says. I looked that up once, the first time. Never did again. When I use psql, I can rarely remember. Is it \dl or just \l? No wait, isn't \dl something else? Huh, do I really want \dn? Shoot, ok, what's the command for help? \help? No, that's a list of SQL commands. Where is the list of shell commands? Ah. \? has the list. WHY is \? different from \help?

Yeah if I used it all the time I'd get used to it. That's not the point. The point is that well designed software shouldn't require "getting used to."

I know that seems like a silly example but it does have an effect.

  • 1
    +1 exactly, if the original iPhone proved anything it's that having a functional, intuitive and attractive product rates higher than a long list of features – Thomas James Dec 20 '10 at 4:58
  • Not all software has a user interface. Do you judge SQL servers by their attractive user interface? Yet there are several SQL Servers that are judged as high quality. – Morten Dec 20 '10 at 9:13
  • 6
    Sometimes the most beautiful thing a piece of software can do is leave the user completely unaware than any software, or anything much else, was involved in what happened at all. – flamingpenguin Dec 20 '10 at 11:41
  • 1
    The previous comment is quote material. flamingpenguin do you mind if I qoute you on it? – Morten Jan 5 '11 at 7:40


Any other essential feature is just an attribute of or contributes to usability (bug-free, functionality, attractiveness, etc.)

This is the #1 most important feature because it is what proves that your software has value. If it has value, it makes money.


it has to do what the user needs it to do easily and quickly. it has to be easy to use.


Making it easy to improve. High quality software is built when you build it to allow you to cheaply take care of defects (UI/Performance/Crashes/etc).

Any software will have defects, so build so that improving quality is easy and low cost.

Everything else will just follow from this.


The most important feature is that the customer can do what he asked. That means that is not only fulfills basic requirements, but does so in a way that the customer can understand.

I guess we would call that "Usability", which then becomes the answer.

The rest, like looks and features, and bugs (withing reason) can be improved afterwards. If the customer can do what he asked, he is also usually going to be happy, and more likely to ask you to make these improvements.

A pretty software that doesn't help the customer do his job isn't gonna get you more work, in my experience.



Software should do the job that is asked of it, when the user asks it to, in the way that the user expects it to. It should not introduce any surprises along the way ( be they unpredictable or non-obvious behaviours, long delays with no clear feedback or simple crashes ) it should simply be effective and reliable at its job.

Software that does one thing well is far more useful than software which offers many interface options but behaves unpredictably or crashes. You can always build new features in as demand shows itself, but unless your software does the job that is expected of it in a way that falls within user expectations you don't have the foundation to bring in any further improvements.


IMO, providing a platform to evolve the program is the best feature a program can have. Firefox is a good example of this. They deliver a decent working product and as and when bugs are fixed, the software get updated automatically. This is very helpful for the enduser as he has the latest build always. This will also help in your case because when you get more budget and time, you can push new features easily.

I think the other best quality of a software product is how it handles exceptions and respond to exceptional scenarios. Most programs fails to handle this gracefully. They either get killed by unhandled excpetions or they produce meaningless error messages which confuses the user.

Creating bug free software is not a simple job. It will happen eventually as and when the program evolves. But it is programmers duty to make sure enough information is available to debug the issue. One good example of how to produce excellent error messages to user is VirtualBox. On any unexpected errors, it informs user what could have possible gone wrong with an option to contact the developers with the detailed log file for more help.


If your talking about Business software it's all about Ease of Management. At my company we work hard to get rid of any piece of software the requires too many admins.

For desktop software for me it's all about Stability. I hate software that crashes on me.


I my mind quality is a measure of the amount of concerns of the stakeholders that are adressed by the software.

In general my definition maps prety well with the RUP definition.

RUP defines quality as:

  • satisfies or exceeds an agreed upon set of requirements
  • Assessed using agreed upon measures and criteria
  • produced using an agreed upon process.

Not the answer you're looking for? Browse other questions tagged or ask your own question.