El concepto de 'Programa Mínimo Viable' (MVP, por sus siglas en inglés) es una idea poderosa para el desarrollo de software, y este artículo explora su significado y beneficios a través de un ejemplo histórico de Erlang. Un MVP es, esencialmente, el programa más pequeño posible que resuelve un problema específico. Su característica definitoria es la ausencia de funcionalidades innecesarias; cada elemento es crucial para su funcionamiento. Si se elimina una característica, el programa se vuelve inútil, y la adición de una nueva no sería esencial para su propósito principal.
El ejemplo concreto que se presenta es el sistema de tickets original de Erlang, creado por Peter Högfeldt en 1986. La necesidad era urgente y la solución, sorprendentemente simple: un único comando (newticket) que generaba un archivo con información básica sobre el ticket (responsable, estado, título, descripción). Este archivo se versionaba en un repositorio centralizado, permitiendo el seguimiento de la evolución de los tickets a lo largo del tiempo. La gestión de informes se realizaba con simples scripts de shell, demostrando la flexibilidad del sistema.
La belleza de este MVP radica en su estabilidad y longevidad. Aunque se han añadido algunas mejoras a lo largo de los años, se ha mantenido fiel a su diseño original. El autor argumenta que la tendencia de las empresas a añadir 'características' para aumentar las ventas a menudo conduce a programas complejos, inestables y con problemas de compatibilidad. Un MVP, en cambio, permanece útil y funcional a lo largo del tiempo, sin la carga de código innecesario.
Este concepto es relevante más allá del desarrollo de sistemas de tickets. El autor lo compara con ejemplos modernos como Dropbox (simplicidad en el almacenamiento y sincronización de archivos) y Twitter (la concisión de un tweet de 140 caracteres). La clave es que los componentes básicos de un sistema complejo deben ser MVPs para evitar una proliferación de complejidad. Si cada programa individual es un MVP, la complejidad general del sistema se mantiene bajo control. Aplicar este principio es crucial para construir sistemas robustos, mantenibles y fáciles de entender, especialmente en entornos donde la integración de múltiples programas es esencial.
