This guide looks at the development cycle of OOP, bringing its snares and shortcomings into focus to help achieve successful design and implementation. It clarifies the differences and similarities between OOP and classic software engineering and provides strategies for avoiding the pitfalls.