Why do so many developers get DRY wrong?