SOLID Design Principles: Stop Writing Code That Falls Apart