El Método Mikado

Cuando un proyecto se hace demasiado grande y complejo (cosa que ocurre con mucha frecuencia) es habitual que uno intente mejorar partes del código para adaptarse a nuevos requisitos funcionales, legales o a cambios en el modelo de negocio. Llegados a un punto también es posible que quieras cambiarlo simplemente para hacerlo más comprensible.

¿Cómo abordar estas modificaciones sin miedo a estropear lo que ya funcionaba? Aquí es donde entra en juego el Método Mikado, que no es más una manera estructurada de abordar cambios significativos sobre un código complejo. El marco de actuación que el método proporciona ayuda a abordar cambios que aportan valor de una manera iterativa sin romper el código durante el proceso.

El Método Mikado está descrito en detalle en el libro homónimo escrito por sus creadores: Ola Ellnestamy Daniel Brolund.

Conceptos básicos

El método consta de cuatro conceptos básicos:

  • Definir una meta
  • Experimentar
  • Visualizar
  • Deshacer

Estas ideas forman el núcleo del método. Las cuatro son indispensables bien utilizas son una herramienta poderosa para lograr los objetivos.

Definir una meta

Para definir una meta hay que pensar con claridad lo que se quiere conseguir. Un meta tiene dos propósitos:

  • Es un punto de inicio para abordar el cambio.
  • Es el punto final, una manera de medir el éxito, del cambio.

Es a la vez la base del siguiente concepto básico.

Experimentar

Se pretende cambiar el código en busca de alcanzar la meta. Si el código se rompe, si algo deja de funcionar, te da información sobre los prerrequisitos necesarios para alcanzar la meta. Los prerrequisitos y la meta son las partes visibles.

Visualizar

La visualización aparece cuando se dibujan la meta y los prerrequisitos necesarios para alcanzarla. Para visualizar esto se utiliza un grafo como el de la figura siguiente:

Deshacer

Cuando los experimentos realizados para lograr una meta o cumplir un prerrequisito han provocado un fallo en el sistema y has visualizado lo que necesitas modificar para evitar ese resultado, es el momento de deshacer los cambios para restaurar un copia anterior funcional.

De los cuatro conceptos claves explicados, este es el que más rechazo produce en primera instancia, ya que el deshacer se tiene la sensación de estar perdiendo trabajo o malgastando el tiempo.

El método paso a paso

El siguiente esquema muestra el Método Mikado paso a paso. Después se detallarán cada no de sus puntos.

Esquema del Método Mikado

Paso 1: Dibujar la meta

Escribe una breve descripción de la meta a alcanzar y rodéala con dos círculos. Todo lo que se haga a partir de ahora tendrá como objetivo alcanzar esta meta.

Paso 2: Implementar la meta o el prerrequisito ingenuamente

Trata de implementar la meta de la manera más directa posible. El propósito es hacer aflorar todos los problemas y dependencias con que nos vamos a encontrar. La idea es experimentar sin analizar demasiado.

Paso 3: Encontrar errores

¿Hay algún error (de compilación, pruebas unitarias que fallan,…)?

Paso 4: Conseguir soluciones inmediatas a los errores

De nuevo trata de implementar estas soluciones de la manera más directa posible evitando hacer un análisis profundo. Seguramente estas soluciones traerán nuevos problemas que se abordarán en la siguiente iteración.

Paso 5: Dibujar las soluciones como nuevos prerrequisitos

Las soluciones se convierten en prerrequisitos para alcanzar la meta. Cuando no encuentres una solución directa escribe algo como “Solucionar los errores de conexión al proxy”. Te servirá como marca para abordar el problema más adelante.

Paso 6: Revertir los cambios

Siempre que haya errores debes revertir todos los cambios. Esto es crucial. Hay que comenzar cada iteración del método con un código sin errores. Puede parecer una mala idea pero el objetivo del método es conseguir toda la información posible del sistema para comprenderlo en profundidad. Trabajar con un código con errores solo lleva a frustrarse y cometer más errores.

Paso 7: Repetir el proceso por cada solución

Por cada prerrequisito, de uno en uno, repetir el proceso desde el paso 2.

Paso 8: Confirma los cambios

Si la implementación de un prerrequisito no genera nuevos errores y el cambio tiene sentido, es el momento de confirmar el código modificado (haciendo un commit a nuestro sistema de control de versiones).

Después se selecciona un nuevo prerrequisito en el que trabajar (desde el paso 2).

Paso 9: Si se alcanza la meta… ¡hemos acabado!

Cuando todos los prerrequisitos se han implementado sin errores y tienen sentido, se alcanza la meta.

Beneficios

Estabilidad

Permite realizar cambios sobre un sistema sin temor a estropear las cosas que ya funcionan. Evita las excusas del tipo “no podemos añadir funcionalidad porque primero tenemos que reestructurar el código” o “no podemos reestructurar el código porque es demasiado complejo y podríamos estropearlo”.

Comunicación

Permite trabajar con comodidad a los equipos ya que se visualiza con claridad el proceso gracias a los grafos. Permite la integración y colaboración entre los miembros del equipo gracias a esta visualización sencilla y a la facilidad para descomponer en pequeñas piezas los cambios necesarios para lograr la meta.

Ligereza

El método es sencillo y rápido de aprender. Esto hace que sea muy tentador utilizarlo. No hacen falta herramientas especiales para llevarlo a la práctica, simplemente papel y lápiz. Puede ser interesante utilizar una pizarra compartida por todo el equipo para procesos de cambio importantes, pero eso es todo.