Pensando num ambiente profissional, sempre imagino que a melhor forma de entregar valor e ter uma qualidade aceitável o mais rápido possível é seguir três passos:

  • Fazer funcionar;
  • Fazer certo;
  • Fazer rápido;

Com isso, teríamos uma entrega o mais rápido possível para o cliente, caso necessário. Logo em seguida iríamos deixar o código sem as famosas gambiarras e por fim tentar aprimorar a performance do código (sempre atentando para verificar se realmente é necessário melhorar a performance ou apenas um tempo perdido atoa).

Outra questão que costumo observar é em relação a código copiado em vários lugares, acho que copiar uma vez o código (ao invés de abstrair) é interessante na primeira vez, mas a partir da segunda cópia (ter o mesmo código em três lugares) seria melhor pensar em uma forma de manter apenas um.

Isso é apenas um pouco da experiência que tive, não sei se há algum padrão melhor a ser seguido ou algo assim.