Vía negativa — Mejorando productos por substracción

--

English version

Photo by Miles Burke on Unsplash

La semana pasada, el equipo de Audiense Engineering se reunió en Córdoba para su Product Meetup trimestral. Este era especial pues, por primera vez, nos reuníamos en persona el equipo original de Audiense y las 3 empresas que habíamos adquirido en los últimos meses. Lo comento aquí porque uno de los debates que surgieron fue el de en qué proporción seguir añadiendo nuevas funcionalidades a los productos o priorizar la reducción de riesgos.

En el mundo del desarrollo de producto, a menudo prevalece la idea de que más es mejor. Añade más funcionalidades, prueba nuevas tecnologías, incorpora los últimos algoritmos, mete inteligencia artificial con calzador, etc. Existe otra perspectiva contraintuitiva que puede ser tan poderosa o más: la vía negativa.

La vía negativa

Esta idea la descubrí recientemente en el fascinante libro de Nassim Nicholas Taleb, Antifrágil, al que seguramente volveré varias veces porque hay muchas otras ideas interesantes que aplican al desarrollo de producto.

La vía negativa se enfoca en:

  • lo que algo no es
  • qué evitar
  • qué no hacer

Conocemos más sobre lo que está mal o no funciona que lo que está bien. Taleb argumenta que el conocimiento crece más por sustracción que por adición, dado que lo que sabemos hoy podría resultar ser incorrecto, pero lo que sabemos que es incorrecto no puede resultar ser correcto.

“La mayor (y más robusta) contribución al saber consiste en eliminar del mismo aquello que creemos que está equivocado: esto es la epistemología sustractiva.” Nassim Taleb

La vía negativa es un enfoque basado en el riesgo. En un mundo de incertidumbre, debemos ser especialmente cautelosos acerca de las cosas que no han sido comprobadas. Para que las cosas sean comprobadas a través del conocimiento negativo, deben resistir la prueba del tiempo. Cuanto más tiempo algo ha estado presente sin evidencia de que sea perjudicial, mayor es la posibilidad de que no sea malo para ti.

“Lo erróneo es robusto, lo desconocido es frágil y especulativo.”

En la metáfora de la ducha del post anterior ya vimos las consecuencias de dar bandazos. Si además estos bandazos son de adición de funcionalidades (vía positiva) cuyo valor no ha sido validado y que además incurrirán en un coste basal, el riesgo de alejarnos de nuestro objetivo aumenta.

En el desarrollo de producto, todo esto se puede resumir en una simple premisa:

“Para mejorar un producto, a veces, hay que eliminar.”

Dime cómo me mides y te diré cómo trabajo

La mayoría de las empresas de producto tienen como cultura premiar solo la adición. Celebramos releases y rara vez premiamos la reducción de riesgo. ¿Cuántas medallas tiene en su pecho aquel que evitó ese mantenimiento que nunca llegó a ocurrir gracias a haber eliminado un código muerto o una funcionalidad en desuso?

La economía actual está diseñada para prosperar por la vía positiva. Por ejemplo, la mayoría de consultoras solo ganan dinero si generan complejidad donde su continua intervención es necesaria.

Aplicaciones prácticas

Veamos algunas aplicaciones prácticas de la vía negativa en el mundo del desarrollo de producto:

Reducir la complejidad del código

Muchas veces intentamos mejorar nuestro software añadiendo más código. Sin embargo, la eliminación de código innecesario o redundante puede ser aún más beneficiosa.

Eliminar código innecesario puede hacer que tu software sea más eficiente, más fácil de entender y más fácil de mantener. Hay un límite para la cantidad de código que puedes eliminar (el código que ya está allí), por lo que la decisión de qué hacer se vuelve más manejable.

Optimizar el rendimiento

Cuando se trata de mejorar el rendimiento de un software, a menudo intentamos añadir más recursos: más memoria, más CPU, etc. Sin embargo, la vía negativa sugiere que, en lugar de añadir, podríamos mirar a lo que podemos quitar.

Quizás algunas partes de tu código están realizando cálculos innecesarios que pueden ser eliminados o modificados para ser más eficientes. O tal vez estás utilizando una dependencia pesada para una sola función, cuando podrías escribir esa función tú mismo y eliminar la necesidad de la biblioteca completa.

Evitar errores

Al igual que con los hábitos negativos, otra forma de aprovechar la vía negativa en el desarrollo de software es evitar los errores antes de que ocurran. A menudo, es más beneficioso prevenir los bugs que esforzarse por solucionarlos después de que hayan sucedido.

En lugar de escribir código complicado y luego pasar horas depurando, puedes intentar evitar las posibles fuentes de error en primer lugar. Por ejemplo, utiliza principios de diseño SOLID y prácticas de eXtreme Programming como TDD para detectar y solucionar los errores antes de que se conviertan en problemas.

Experimenta y descarta

No te centres en las funcionalidades que crees que van a funcionar, más bien evita las que sabes que no van a funcionar. Los actos de omisión, es decir, las decisiones de no implementar ciertas características, también son elementos importantes en el proceso de desarrollo de software.

Alguien que parece que entendía esto a la perfección era Steve Jobs.

“La gente cree que concentrarse significa decir que sí a lo que tienes que concentrarte. Pero eso no es lo que significa en absoluto. Significa decir ‘no’ a las otras cien buenas ideas que hay. Hay que elegir con cuidado. De hecho, estoy tan orgulloso de las cosas que no hemos hecho como de las que sí. La innovación es decir ‘no’ a mil cosas” Steve Jobs

(subtítulos solo disponibles en inglés)

Enfoque inverso

Enfoca los problemas en reversa. En lugar de preguntarte cómo alguna funcionalidad o elección de tecnología te puede conducir al éxito, pregúntate cómo podría determinar tu fracaso. Y entonces, dedica tu energía en prevenir esas contingencias.

Conclusiones

La vía negativa, aunque parece contraintuitiva, representa un enfoque poderoso para la eficiencia y la innovación en el desarrollo de producto. Al enfocarnos en lo que no debemos hacer, qué evitar y qué elementos quitar, podemos lograr productos más robustos, eficientes y manejables.

Esto conduce a un código más limpio, menos propenso a errores y, en última instancia, a un software de mayor calidad. Además, la eliminación de funcionalidades innecesarias o redundantes puede abrir un valioso espacio para la innovación y la mejora.

No obstante, la adopción de la vía negativa requiere un cambio cultural importante. Tradicionalmente, se ha premiado la adición y la acción, mientras que la eliminación y la prevención de riesgos suelen quedar en la sombra.

Debemos buscar formas de incentivar la vía negativa en nuestros equipos. Necesitamos aprender a valorar la eliminación de la fragilidad y el riesgo tanto como la adición de nuevas funcionalidades. Y es vital que celebremos y recompensemos el trabajo crítico de aquellos que se esfuerzan por hacer que nuestros sistemas sean más resistentes, menos complejos y, en última instancia, mejor preparados para el futuro.

Si tienes experiencias, ideas o enfoques para fomentar y recompensar la vía negativa en tus equipos, estaré encantado de escucharte.

--

--

Co-founder & CTO at Audiense. Always cuban. Swimmer and runner wannabe. Like playing chess in my spare time.