Simplicidad en la entrega de software

Si en vez de leer prefieres escuchar, dale al play.

Simplicidad en la entrega de software
7:33

KISS (keep-it-stupidly-simple principle) es uno de los primeros principios que se presentaron a los desarrolladores de software. Es un mantra que aporta multitud de ventajas a los profesionales técnicos y empresariales de todos los niveles.

En este artículo, explico cómo este principio puede aplicarse fuera del código, en todos los aspectos de una empresa tecnológica, y cómo esta mentalidad conduce a una entrega de software más rápida y segura, a tiempo y dentro del presupuesto

Veamos primero los beneficios de la simplicidad en el desarrollo de software:

  • Las iteraciones simples conducen a una retroalimentación más rápida.

  • La integración continua de pequeños cambios es más fácil que la integración periódica de grandes cambios.

  • Las pruebas de usabilidad no son eficaces sin un alcance sencillo y bien definido.

  • Las PoC y MVP simples llevan el producto al mercado con el mínimo desperdicio.

  • Una hoja de ruta simple es más fácil de seguir.

  • Un plan simple no se distorsiona cuando se comunica a los demás.

Mantener las cosas simples es una valiosa estrategia de negocio. Lo irónico es que adherirse a este principio no siempre es fácil. Simple y fácil no son lo mismo, así que comprender el valor de la sencillez te ayudará a aplicar KISS incluso en las situaciones más difíciles.

Qué hacer cuando mantener las cosas simples no es fácil

¿Cómo tomar los diseños que encabezarán una nueva iniciativa de marca y estructurarlos de forma que se puedan hacer releases diarios mediante una serie de cambios seguros, sencillos y estables?

Colaboración entre disciplinas. Incluye la aportación de especialistas de de todo el equipo desde el principio. Comparte una visión única y cultiva una comprensión común de las razones por las que se están realizando ciertas acciones, dejando el qué y el cómo a los especialistas que llevarán a cabo el proyecto.

¿Cómo tomar un diseño arquitectónico meticulosamente elaborado, que te guiará desde tu antiguo software hacia el nuevo mundo del CI/CD, y convertirlo en algo simple que aporte valor a tu organización semana tras semana?

Plan detallado para definir un objetivo en el horizonte. Mantén la visión, pero concéntrate en los pasos simples que están inmediatamente frente a los equipos. Recuerda, los planes simples son más fáciles de ajustar, por lo que debes mantenerte alerta contra la tendencia a complicar las cosas. Los obstáculos que están a lo lejos serán más fáciles de abordar cuando te acerques a ellos, así que sé prudente y evita prepararte en exceso para todas las eventualidades

Recuerda...

En cualquier cosa, la perfección se alcanza no cuando ya no hay nada que añadir, sino cuando ya no hay nada que quitar.

- Antoine de Saint Exupéry

Qué hacer cuando no sabes cómo simplificar

Si no puedes encontrar el siguiente paso simple, eso es un indicio de que hay un problema. En el código, llamamos a este tipo de indicios un “bad smell” porque nos alerta de que algo no está bien. Por ello, no se puede hacer un buen trabajo hasta que ese “bad smell” no se haya eliminado.

Retroceder o “subir un nivel” es un concepto que puede ayudar en este caso. La forma clásica de explicarlo es utilizando el ejemplo de un mapa. Si nos acercamos al plano más detallado de una calle, nos resultará muy complicado ir de nuestra casa a un hotel en otro país. Tienes que retroceder a un plano superior, donde puedas ver los dos países al mismo tiempo y planificar una ruta entre ellos.

Luego, podrías hacer zoom a un nivel de ciudad en el que puedas ver la relación entre el hotel y tu punto de llegada en esa ciudad. Una vez que tienes una vista clara a ese nivel, puedes descender a los detalles exactos de los giros que debes hacer para llegar a la puerta del hotel.

Entonces, ¿qué hacer cuando no puedes encontrar el siguiente paso simple? Retrocede del punto en el que estás enfocado e intenta describirlo desde un nivel superior. Cuanto antes lo hagas, antes podrás regresar a los detalles en los que estabas concentrado. A veces, descubrirás que ya no necesitas volver a esos detalles.

Una manera de retroceder ante una situación confusa es listar los desafíos clasificándolos como sencillos, complicados o complejos.

Desafíos sencillos, complicados y complejos

  • Los retos sencillos son aquellos que no presentan ninguna incógnita.

  • Los retos complicados incluyen aspectos desconocidos sobre los que puedes tomar nota y abordarlos. También se denominan incógnitas conocidas.

  • Los retos complejos contienen las incógnitas desconocidas y los problemas que ni siquiera sabías que existían.

A veces, sólo con reconocer que existe un reto complejo te permite dar el siguiente paso, que consiste en abordar las incógnitas desconocidas antes que cualquier otra cosa. Se trata de un metaplan sencillo que garantiza que la solución global se simplifique a medida que se avanza. 

Persigue la simplicidad

La simplicidad debe ser un objetivo para tus equipos, ya que les permitirá evitar profundizar en exceso en los detalles de un problema. Si una organización busca mejorar sus capacidades de entrega de software, es recomendable comenzar desde el exterior del problema y avanzar hacia el interior. En cada nivel, se puede lograr una comprensión completa de un mapa sencillo y, a partir de ahí, optar por "hacer zoom" al siguiente nivel, teniendo siempre una visión clara del contexto circundante.

Un diseño simple se consigue manteniendo niveles bien diferenciados de magnitud. La visión a alto nivel nunca podrá ser simple si intenta incluir detalles de bajo nivel.

Conclusión

  • El principio KISS, al igual que DRY y el Principio de Responsabilidad Única, no solo se aplica al desarrollo de código. También es útil para desarrollar equipos y organizaciones de software. En este artículo, he mencionado algunas formas creativas de aplicar este principio. Es un mantra conveniente que deberías tener presente.

  • No te dejes atrapar por detalles complejos hasta que tengas una imagen clara del contexto general. Aléjate de cualquier problema complejo y encuentra una manera de resumir lo que está sucediendo de forma que parezca simple. Una vez que tengas esa visión a alto nivel, si es necesario, puedes profundizar y tratar de simplificar los detalles del siguiente nivel.

  • Si no puedes entregar iteraciones pequeñas, necesitas modernizar tu software. Suponiendo que estás en una posición para centrarte en la entrega de software, enfócate en llevar cada iteración al mercado y en ser capaz de medir su impacto.

  • Prepárate para cambiar de dirección centrándote en pequeños y simples pasos, no en planes complicados ya trazados.

  • Fomenta formas de trabajo colaborativas en todo el equipo de entrega. Con los especialistas adecuados, las posibilidades de que alguien sea capaz de ver las cosas con claridad y hacerlas más simples, son mucho mayores.

Cuando las cosas sean demasiado complejas, no profundices en exceso en los detalles que hay debajo. Puede que necesites subir un nivel para encontrar un mapa sencillo de lo que está ocurriendo. Una vez que tengas este contexto, los niveles inferiores serán más fáciles de simplificar.

Mantener las cosas simples no es fácil, pero si todos comprenden el valor de hacerlo, se convierte en una excelente guía para toda la organización.