intermediate

Applying design principles in practice

Recognize overengineering, explain trade-offs, show principles in code, and justify when breaking a principle is the better choice.