But quality of work can be expected only through personal satisfaction, dedication and enjoyment. In our profession, precision and perfection are not a dispensible luxury, but a simple necessity.
A good designer must rely on experience, on precise, logic thinking; and on pedantic exactness. No magic will do.
In the practical world of computing, it is rather uncommon that a program, once it performs correctly and satisfactorily, remains unchanged forever.
The belief that complex systems require armies of designers and programmers is wrong. A system that is not understood in its entirety, or at least to a significant degree of detail by a single individual, should probably not be built.
A primary cause of complexity is that software vendors uncritically adopt almost any feature that users want.
Time pressure gradually corrupts an engineer’s standard of quality and perfection. It has a detrimental effect on people as well as products.
Increasingly, people seem to misinterpret complexity as sophistication, which is baffling – the incomprehensible should cause suspicion rather than admiration.
Software is getting slower more rapidly than hardware becomes faster.
Our ultimate goal is extensible programming. By this, we mean the construction of hierarchies of modules, each module adding new functionality to the system.
Prolific programmers contribute to certain disaster.
Good engineering is characterized by gradual, stepwise refinement of products that yields increased performance under given constraints and with given resources.
Programming is usually taught by examples.