Dan Abramov on the dangers of doing DRY wrong:
Obsessing with “clean code” and removing duplication is a phase many of us go through. When we don’t feel confident in our code, it is tempting to attach our sense of self-worth and professional pride to something that can be measured. A set of strict lint rules, a naming schema, a file structure, a lack of duplication.
First you have to learn the rule of writing software. Then you have to learn how and when to let go of the rules.