Correctness is clearly the prime quality of software. If a system does not do what it is supposed to do, then everything else about it matters little. But correctness is not enough. A system that is correct but impossibly difficult to maintain is of little practical value. The other qualities—efficiency, flexibility, compatibility, and so on—are also important, but they should not be pursued at the expense of correctness and clarity.
— Bertrand Meyer