Tecnología, Agile y Cyberpunk

Sísifo, en la mitología griega, fue el fundador de Corinto. Conocido por su astucia y sus pocos escrúpulos, fue condenado al Inframundo por tratar de burlar a la muerte y enojar a los dioses.

Su castigo consistía en empujar una enorme roca hasta la cima de una montaña sin descanso, de modo que, cuando estaba a punto de alcanzarla, la roca caía y debía subirla de nuevo.

Albert Camus en el ensayo filosófico El mito de Sísifo (1942) interpretó la experiencia de este personaje como metáfora de la condición humana, la cual está determinada por el absurdo.

La pena que cumple Sísifo es comparada con la búsqueda del sentido de la vida que lleva a cabo el ser humano en un mundo indiferente y carente de significado. El autor no interpreta al personaje desesperado por su castigo, que lo lleva a cumplir una y otra vez la misma rutina. Lo ve como un hombre que ha aceptado su destino, su condición absurda.

Para Camus, las experiencias vitales son absurdas y repetitivas. En cambio, adquieren el valor y el sentido que nosotros les damos cuando las hacemos propias.

El mito de Sísifo en Tecnología

Esta mañana escribía este tweet en relación a una reflexión de Paul Graham (co-fundador de Y Combinator y reconocido inversor):

En buena medida la IA está ya poniendo de manifiesto una incómoda verdad que todos los que llevamos el tiempo suficiente desarrollando soluciones digitales sabemos: programamos prácticamente lo mismo una y otra vez.

Por supuesto hay muchos matices a esta afirmación, no siempre solucionamos exactamente los mismos problemas ni exactamente de la misma forma. Pero sorprende la cantidad de veces que sí solucionamos problemas prácticamente idénticos de maneras muy similares.

En la Historia de la Informática nos asusta pensar estas preguntas:
¿Cuántos backoffice como interfaces a la base de datos hemos construido de cero? ¿Cuántos sistemas de usuarios? ¿Cuántos gestores de contenido? ¿Cuántos frameworks empresariales? ¿Cuántos portales de empresa? ¿Cuántos datepickers?

Por supuesto hemos evolucionado lo suficiente como para entender, como dice Robert C. Martin elocuentemente en su libro “Clean Code”:

“Duplication may be the root of all evil in software.”

Y hemos creado librerías de componentes, frameworks más o menos estandarizados y productos Service as a Software para evitar en parte esa duplicación. Pero con esa reutilización relativa de componentes seguimos construyendo soluciones repetitivas.

La realidad es que ahora mismo hay miles de equipos en todo el mundo construyendo el énesimo sistema de usuarios, el enésimo backoffice, el enésimo portal de empresa que aborda problemas que muchos otros han solucionado ya.

Por supuesto podemos agarrarnos a interfaces diferentes, tecnologías diferentes o requisitos cuya solución no hemos visto previamente. No en vano en buena medida el problema subyace en que la mayor parte de la repetición ocurre en el Software Propietario, oculto a la luz pública, pero también existe en el mundo Open Source, no hay más que ver los patrones repetitivos de soluciones con los que hemos alimentado a la Inteligencia Artificial.

Chester.Wade - The Neon Demon 5
Photo by chester wade

¿Por qué hacemos una y otra vez lo mismo?

La Evolución Tecnológica

Hay diferentes motivos. Uno de ellos es que nos gusta creer que podemos hacerlo mejor que lo ya existente. Por eso nos embarcamos en crear el enésimo framework de Frontend, la enésima vuelta de tuerca en la renderización en cliente y servidor, la enésima base de datos, etc. Es decir aprovechamos el propio empuje de la Evolución Tecnológica basada en la emergencia de tecnologías subyacentes que nos posibilitan otras nuevas para, fundamentalmente, hacer lo mismo de otra manera.

Y al hacerlo a menudo acabamos entendiendo que la manera anterior no era tan mala ni obsoleta como creíamos y resolvía el problema exactamente igual.

Por ejemplo recientemente hemos entendido que el auge de las Single-Page Applications adonde llevamos casi toda la lógica y el renderizado fue un error, posibilitado por la potencia computacional en cliente y la sofisticación de los navegadores. Hemos vuelto a retomar masivamente la renderización en servidor, como se ha hecho desde siempre.

La Trampa del Incentivo

El principal motivo por el que hacemos lo mismo una y otra vez es perverso y es porque genera una inmensa cantidad de trabajo para todos en la industria Tecnológica. Miles de Product Managers, Developers, Engineering Managers, QAs, etc desarrollan lo que les piden, en gran medida soluciones repetitivas a problemas repetitivos.

Es un incentivo similarmente perverso al de la consultoría, del que ya he hablado alguna vez, dentro de la cual (y esto no es idea mía sino un mantra de la consultoría corporativa) la complejidad innecesaria vende mejor que la simplicidad. Contratos millonarios de desarrollo y mantenimiento de soluciones innecesariamente complejas a problemas cuya solución sencilla ya existía, vendidos a ansiosos compradores de complejidad innecesaria.

Los Problemas y Soluciones se Repiten

No es cierto en todos los casos, hay un número significativo de equipos de Desarrollo de Producto solventando problemas innovadores que no se han resuelto antes y por tanto buscando soluciones diferentes que nos harán avanzar.

Tampoco podemos trivializar el avance tecnológico, que a veces justifica el intentar abordar una nueva forma de solucionar el mismo problema, en aras de ventajas competitivas, mayor optimización de recursos o mejor Experiencia de Usuario.

Por supuesto, aunque hablamos de un problema masivo, no es el único. Se estima según algunos estudios como el de Pendo (empresa de analítica y servicios de software) que aproximadamente el 80% de las funcionalidades de software desarrolladas no se usan o se usan muy poco.

La reiteración de soluciones repetitivas y el alto porcentaje de software desarrollado que no se usa, exponen una elevada ineficiencia no sólo a nivel técnico sino especialmente a nivel conceptual.

Neonstromo
Photo by Sandro Katalina

La Llegada de la Inteligencia Artificial

Sin ánimo de ser entusiasta ni catastrofista, la Inteligencia Artificial tendrá un papel cada vez más relevante en poner de manifiesto la repetición de los problemas y de las soluciones, nos mostrará patrones donde no los veíamos, soluciones que no conocíamos, en resumen, ayudará a optimizar estas ineficiencias y nos mostrará aún más con claridad que fundamentalmente estábamos trabajando en gran medida en problemas similares con soluciones similares.

Curiosamente, como también ha comentado Paul Graham:

La IA nos ayudará a solucionar los problemas repetitivos con soluciones repetitivas pero no nos ayudará tanto con los problemas nuevos o las soluciones nuevas. Cuanto más originales seamos menos podremos apoyarnos en la IA.

Conclusión

En realidad está en nuestra mano abandonar el mito de Sísifo, dejar de empeñarnos en subir las mismas rocas a las mismas montañas, es decir dejar de empeñarnos en construir las mismas soluciones para los mismos problemas. Ya sea por nuestra voluntad de innovar o por el empuje de la Inteligencia Artificial acabaremos venciendo las gigantescas ineficiencias con las que trabajamos en diseño de productos digitales y acabaremos optimizando y reduciendo el código repetido.

Por un lado esto nos llevará a poder sofisticar aún más nuestro trabajo, subiendo el nivel de abstracción de los problemas y de las soluciones, descubriendo soluciones a problemas que aún no tenemos y por tanto, nos permitirá innovar como nunca antes.

Por otro lado, quienes se empeñen en su papel de Sísifo y no salgan de su rutina reiterativa, verán en jaque su papel en cuanto la tecnología les alcance.

Nos encontramos en una era excitante, en la que se pondrá a prueba nuestra creatividad, nuestra propia esencia humana y nuestra capacidad de auparnos sobre hombros de gigantes para acercarnos a construir lo que seamos capaces de soñar.

You’ve successfully subscribed to Neuromante
Welcome back! You’ve successfully signed in.
Great! You’ve successfully signed up.
Success! Your email is updated.
Your link has expired
Success! Check your email for magic link to sign-in.