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.