#12. Always keep correctness in mind
Bertrand Meyer starts the first chapter of his book Object Oriented Software Construction, 2nd Edition with the following sentence: Engineering seeks quality; software engineering is the production of quality software. He goes on to analyze the concept of software quality throughout the chapter. He defines it as a combination of several factors, some external (observable by the users of the software) and other internal (observable only by those who have access to its source code). External software quality factors are correctness, robustness, extendibility, reusability, compatibility, efficiency, portability, ease of use, functionality and timeliness. All of these are important and should be balanced one against the other. But one clearly stands out among them: correctness. Quoting [Meyer 1997] again: Correctness is the ability of software products to perform their exact tasks, as defined by their specification. If a software is not correct, everything else matters little. C...