El Método Mikado


-
¿Alguna vez te ha pasado que un nuevo cliente solicita un sistema que tiene lógica casi idéntica al software que estamos desarrollando actualmente?
- Pues a mí si :S
Básicamente tenemos 2 opciones y ambas significan trabajo extra, pero de maneras muy diferentes.

Desde siempre hemos aprendido que hay ciertas partes del código que no pueden ser compartido entre nuestros clientes. Bajo ninguna circunstancia puede un cliente ver las partes secretas del otro cliente. Tenemos que separar la lógica de negocio y ser capaz de configurar qué partes deben ser entregadas a cada cliente. Una forma de resolver ese problema era copiar la mayor parte de la base de código a un nuevo proyecto y modificarlo ahí. Eso habría resuelto el problema de inmediato. Sin embargo, un código base duplicado o un código base en parte duplicaba significaría una gran cantidad de trabajo extra.

Por un lado, que sería capaz de entregar muy rápido, ya que no habría que pensar en cómo estructurar el código para minimizar la duplicación.
Por otra parte, que por supuesto significa que habría tenido que mantener casi el doble de mucho código, incluida nuestro mal estructurado código, errores y todo lo demás.
Además, para cada error o cambio en el futuro el sistema, tendríamos que analizar las dos partes para ver si el error estaba en el otro sistema también. Al principio no nos costaría mucho, pero a la larga, esto habría significado toneladas de trabajo extra, por no mencionar que es un enfoque muy propenso a errores.

Si en cambio optó por una gran reestructuración, todavía puede servir a ambos clientes y no existen datos sensibles que se repartan entre ellos. Esta ruta de acceso nos ha obligado a pensar un poco, la reestructuración, y hasta trabajo extra frontal antes de poder entregar al nuevo cliente. La cantidad de duplicación puede mantenerse a un mínimo. Sin embargo, el cliente tendría que esperar más tiempo. Y en el trayecto podrían ocurrir grandes problemas enfrentándonos a una gran refactorización


MIKADO

Mikado es un juego de origen europeo que consisite en recoger palitos. En 1936 fue traído desde Hungría a los EE.UU. y fue llamado en su mayoría "pick up sticks". Probablemente el nombre de "Mikado" no se utilizó porque era el nombre de la marca del productor del juego.
De todos modos, el juego se puso ese nombre por el palo que tiene el mayor puntaje, "el Mikado", llamado así por el emperador de Japón.



Usted puede jugar Mikado con dos o más jugadores. Se tiene un montón de palos, al igual que espaguetis secos. Éstos forman una pila de algún tipo y tienen diferentes colores, el palo de más alta puntuación es el Mikado. El objetivo es coger el palo Mikado. El truco consiste en recoger los palos fáciles, por lo general aquellos que no tienen otros palos encima de ellos. Finalmente, mediante el uso de esa estrategia, se puede recoger el palo Mikado y ganar el juego.

Los cambios en el código con como el juego de Mikado. Raras veces se puede sacar el Mikado a la primera, comúnmente se siguen ciertos pasos, en nuestro caso, extraer clases, refactorizar, etc.
Este proceso mayormente toma tiempo, no tratemos de corregir los errores de inmediato, sinó será como luchar con un software hydra, para cortar cabezas, otras dos crecen :S

Si identificaste el Mikado estás a un gran paso de ahorrarte muchos dolores de cabeza :)


Fuente: PragPub #12 Junio 2010

Comentarios