The state of the practice of software engineering can be characterized by a lack of disciplined processes, inattention to security problems, little effort to analyze and maintain system architectures, and ignorance of the intended purpose of software components. The software engineering community needs a doctrine of software quality, which can be captured in three principles: move to the left, reuse everything, and never make the same mistake twice.