Here’s the thing. I’m very harsh about criticism of DRY. On the one hand, it does make sense to question your beliefs and to avoid being dogmatic. On the other, it’s very clear that DRY is an absolute prerequisite for any kind of software quality. In fact, it’s the absolute bare minimum. You cannot have quality software with duplicated logic. Not even duplicated twice.
So software engineering is really the art of learning how to properly create DRY code. We should focus more on how to better create DRY code and not talk about the few times where the abstractions we created didn’t work out.
We need abstractions to survive as an industry.