Un mejor enfoque es el de diseñar primero, luego codificar el diseño y finalmente tomar en cuenta las consideraciones de costo empíricas (perfiles de ejecución o medidas de tiempo/espacio) o formales (complejidad tiempo/espacio) para decidir en que partes se debe invertir tiempo para realizar optimizaciones.