Software Design Principles (Basics) | DRY, YAGNI, KISS, etc