Professionals who design and develop elegant software do so by mastering a set of important principles. This book describes 50 such essential design principles. Every software architect and developer should be familiar with these principles. It answers the following questions: What is elegant software? How to assess the quality of a software design? How to improve a specific quality of a software design? How to determine when to apply a principle? How to determine whether a principle is properly applied or not? It is a handy reference for the 50 essential design principles. Updated: 1st Jan 2019.