I think DRY (don’t repeat yourself) is counter productive and should not be taught. Everything that’s correct about DRY is covered better and far more specifically by other concepts (for example, SOLID). Meanwhile, blindly applying the DRY idea results in tons of bad code.