This document discusses the Open Closed Principle of software design. It explores the tension between meeting today's needs while allowing for future changes. The principle advocates designing software that is open for extension, but closed for modification, by favoring changing software through addition of new code rather than modifying existing code. This reduces the risks and costs of unexpected defects when software is modified. The document examines how qualities like flexibility, reliability and stability can be promoted by following this principle.