Donald Knuth dijo: «We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil».
Analizando un poco esta frase, Donald nos dice que en el 97% de los casos una optimización prematura será la causa de todos los problemas. O dicho con otras palabras: Primero preocúpate de que funcione y luego ya lo mejorarás.
Podemos ver el proceso de optimización como un proceso de “tuneado”, donde se hacen ajustes al sistema para que funcione más rápido. ¿Verdad que no tiene sentido preocuparse de que funcione más rápido si todavía ni se mueve?
Una optimización prematura nos hace perder la visión general, centrándonos en detalles en fases demasiado iniciales. Muchas veces para conseguir una buena optimización habrá que hacer verdaderos “inventos” (a bajo nivel) que tienen mucho que ver con el tipo de tecnología que se esté usando. También hay que tener en cuenta que estos inventos suelen introducir complejidad al sistema y esto no nos interesa para nada, sobretodo al principio.
Lo mejor es que una vez se tiene el producto acabado, dedicarse a identificar los cuellos de botella y buscar soluciones para ellos. Ojo, esto no significa que se tenga que desarrollar de forma “quick and dirty”, sino dejar lo que sean realmente optimizaciones para el final. En general, si se han hecho las cosas bien, el proceso final de optimización va a ser mucho más sencillo.
Para poner un ejemplo, en una aplicación que desarrollé para Android, se descargaban más de 100.000 registros de una base de datos vía internet. El proceso inicial duraba unos cuantos minutos. Una de las optimizaciones consistió en hacer que la app eliminara los índices de las tablas de la base de datos SQLite del móvil durante la inserción en masa y volverlos a crear al final de la descarga. ¡Con esta optimización se redujo en varios minutos el tiempo!
Enric Caumons CTO @ Eureka-Startups.
Fuente: Eureka-Startups