ATTENTION: You are viewing a page formatted for mobile devices; to view the full web page, click HERE.

Main Area and Open Discussion > General Software Discussion

What makes software 'good'?

(1/2) > >>

zridling:
It's an abstract question, but what are the elements of good software?



SpoilerThere's even an international standard for evaluating quality software!

iphigenie:
There's standard "attributes" for good programming and standard "attributes" for good software - the problem is agreeing on the meaning of, and metrics, of said attributes.

And there, the plot instantly thickens and the story turns into a surealist poetic exercise

Jimdoria:
Actually, there's a whole field dedicated to solving the problem of what makes good software. It's the Usability/Human Factors profession.

The problem with developing a "standard" is that the measure of how good software is depends on who is using it. Is a CD burner application with hundreds of options good software? It could be, if you are an audio engineer charged with mastering CDs for mass duplication. Probably not so much if you are a teenager who wants to make "backup" copies of CDs you've purchased.

To determine how good a piece of software is, you have to analyze how well it serves the needs of its users, and how well it matches to the way they work, the other tools they use, how they use their computer, and a range of other factors. It's like relativity - there's no privileged frame of reference. Goodness is measured relative to the users of the application.

The word "intuitive" gets thrown around a lot in these kind of discussions, but it's usually just shorthand for "who the heck knows?" "Intuitive" is a popular term because it removes responsibility from developers. By definition, it implies a certain immunity to logical analysis. But the thing is, there are perfectly objective, measurable ways you can design software that works well and serves the needs of its users. Unfortunately, there are many companies (and individuals) who don't see the need, don't want to spend the time/money or simply don't know that it can be done.

All that said, there are certain qualities of "usable" software that can be taken as touchstones of its "goodness". These were defined by Jakob Nielsen in 1993, and they are:

* Learnability - How easy is it for new users to learn how to use the software without extensive training/assistance?
* Efficiency - How well does the software accomplish the tasks the user is attempting to do? Does it speed the process or throw up barriers?
* Memorability - Can you easily find that function you last used a week ago? Can you come back to the software after a few months away and still use it like a pro?
* Error Handling - How gracefully does the software cope with the unexpected, either in interacting with the user or as the result of its own internal processing?
* Satisfaction - How do people feel about using the software? Do they love it, hate it or just think "eh"?
This may not be an exhaustive list, but I'd say that any program that exhibits all of these qualities in abundance will be thought of as "good" software by the people who work with it.

zridling:
Jimdoria, here's a good example of a Windows user sitting down for the first time and installing Ubuntu. The Canonical folks should listen to his suggestions.

acrystal:
All that said, there are certain qualities of "usable" software that can be taken as touchstones of its "goodness".
--- End quote ---

In addition to usability, it's critical to consider how "useful" software is.  Software can be highly polished and usable, while addressing a fairly trivial issue.  Such software would have great usability, but be much less useful than software that solves a more important problem or adds more valuable capabilities.  Tom Landauer was one of the first to address this issue: http://www.amazon.com/Trouble-Computers-Usefulness-Usability-Productivity/dp/0262621088 .

Navigation

[0] Message Index

[#] Next page

Go to full version