DRY and WET principles

DRY stands for Don't Repeat Yourself & WET stands for Write Everything Twice. DRY preaches not to repeat yourself, extracting it and creating an abstraction if you see duplication in the code. But, in software, requirements change. If you keep changing abstraction to changing requirements, the abstraction becomes complex and the code becomes unmaintainable again. So, WET preaches to avoid complex abstractions and embrace duplications whenever possible.

Bonus: There is another middle-ground principle called DAMP which means Don't Abstract Methods Prematurely. In a nutshell, balancing between DRY and WET and knowing when to create abstraction is the key to writing clean and maintainable code.