PerformanceLa micro-optimización es una de las malas prácticas que pueden encontrarse en cualquier proyecto. La micro-optimización es una respuesta errónea a problemas potenciales o reales en un proyecto, aparece cuando el equipo falla en identificar la causa raíz y se enfoca en solucionar las consecuencias. Esto suele ocurrir por:

  1. Urgencia: No hay tiempo suficiente para analizar el problema.
  2. Experiencia: siempre se sigue la estrategia para parchear las consecuencias.
  3. Miedo: A veces las personas conocen la causa raíz, pero tienen miedo a mencionarlo.

La micro-optimización es mala porque:

  1. Le quita el foco al equipo de la visión general, provocando el efecto de "Los árboles no te dejan ver el bosque".
  2. Se obtiene feedbacks parciales.

La micro-optimización se suele implementar como: checklists, métricas, reportes, documentación o algún tipo de papeleo burocrático que necesita ser aprobado para su ejecución.Algunos escenarios donde se puede observar la micro-optimización son:

  • Debido a la alta tasa de defectos, el equipo decide que tiene que frenar el desarrollo periódicamente y esperar a que QA pase los test de regresión. Esto es micro-optimización y no ayuda en nada. La causa raíz de la alta tasa de defectos es que la calidad del código fuente es muy pobre, lo cual es ocasionado por la falta de experiencia y conocimiento del equipo en las tecnologias que están utilizando para el proyecto.

  • Debido a la baja productividad, los managers deciden contratar mas pesonas para el proyecto. Nuevamente, esto es inútil. La causa raíz de este problema es que los desarrolladores y el dueño del producto no están colaborando como deberían, y como consecuencia, los desarrolladores nunca entienden lo que realmente requiere el negocio.

  • Debido a la baja performance de la aplicación, el equipo descubre que el cuello de botella esta en alguna de las capas de la arquitectura. Entonces deciden gastar mucho dinero en una solución comercial que les ofrezca una mejora en la performance de la capa con problemas. Esto también es micro-optimización y muy probablemente vuelvan los problemas de performance. La causa raíz suele ser que la arquitectura en general esta mal diseñada.

 Para evitar la micro-optimización enfóquese siempre en la imagen general, no en los detalles. Una técnica simple y muy útil para evitar la micro-optimización es la técnica de los 5 ¿por qué?. Un ejemplo de la utilización de esta técnica para evitar la micro-optimización es:"El equipo solo entrega la mitad de lo esperado" (problema)

  1. ¿Por qué? Porque no tienen tiempo suficiente.

  2. ¿Por qué? Porque tienen mucho trabajo.

  3. ¿Por qué? Porque fallan a la hora de estimar cuanto trabajo pueden tomar.

  4. ¿Por qué? Porque pensaron que las actividades requeridas para completar dichas tareas eran mas simples

  5. ¿Por qué? Porque los requerimientos no están los suficientemente detallados.

Evitar la micro-optimización no significa que los aspectos como: performance, cobertura de código, etc. no son importantes; significa que sirven para un propósito superior.

El mayor efecto al evitar la micro-optimización es que encontrará que el mayor problema en su proyecto no es de carácter técnico, por lo que probablemente utilice un enfoque distinto para solucionarlo.

Basado en: Micro optimizations.Fighting the wrong battles for the wrong reasons.

Inspiración.

"Si tú tienes una manzana y yo tengo una manzana e intercambiamos las manzanas, entonces tanto tú como yo seguiremos teniendo una manzana cada uno. Pero si tú tienes una idea y yo tengo una idea, e intercambiamos las ideas, entonces ambos tendremos dos ideas"

Bernard Shaw