Que los datos hablen
Yo he intentado optimizar muchas cosas en mi vida. Algunas veces con éxito, otras veces con menos fortuna. Y fíjese que he usado la palabra «intentado» porque creo que más vale intentar algo antes de fijarnos en el resultado; los resultados tienden a ser apuestas futuras o eventos inciertos, esperanzas pavimentadas o hechos sin sustento, ¿quién sabe que va a suceder? De azares sabemos poco y, de lo que sabemos, mucho no aporta ni importa.
El pasado viernes 27 de enero, estuve invitado a dar una charla en el Meetup de Python Valencia, gracias a la cordial invitación de Andros Fenollosa. Mi charla consistió en dar la importancia a la optimización en el desarrollo de software. En este contexto, no me refiero con optimizar a sofisticadas técnicas algorítmicas para resolver problemas combinatorios (NP-Hard) o cosas por el estilo (mi área de investigación), más bien, es algo más «útil» y, por lo mismo, de crucial importancia: cómo obtener métricas para tomar mejores decisiones sobre nuestro producto.
Si la nueva versión de un software tarda un 10% más que la versión anterior en cuanto a tiempo de cómputo, o si esta consume más memoria que antes, ¿cómo podemos detectar ese cuello de botella?, ¿en dónde se encuentra el problema? A menudo creamos nuevas funcionalidades, las dejamos operativas, cumplen el requerimiento, pero el consumo de recursos aumenta y no nos damos cuenta. Esto se puede traducir en un incremento del costo y en una peor experiencia para los usuarios.
Medir, medir, medir, debería ser la consigna. Comparar es medir. Si hay algo que podemos aprender del método científico es a contrastar. No enamorarnos de nuestra idea. No encerrarnos en cómo me gustaría que funcionaran las cosas, sino en ponerla a prueba contra la realidad, realizar un experimento, y aprobar o rechazar una hipótesis. Esta idea apela a tener la capacidad de desligarse de su propia creencia para dar paso a los datos, y si estos demuestran que está equivocado, tener la suficiente grandeza de aceptarlo y cambiar de opinión.
Hay muchos tipos de herramientas que ayudan esto, por ejemplo, los profilers nos dan la información de cuanto tarda cada instrucción de un algoritmo o cuánto espacio está consumiendo. Y no solo eso: también nos ayudan a detectar errores en nuestro código, es decir, nos brinda mejor y más abundante información. Sin datos no es posible tomar decisiones.
Más que nunca: medir debería querer decir «que los datos hablen».
Mi charla la pueden encontrar en YouTube: