Código Complejo VS Código Simple

Existe una dicotomía entre usar un código focalizado solo en nuestra necesidad y una robusta que contemple todos los casos. A medida que es más simple lógicamente es menos completa.

La rivalidad entre integridad y simplicidad se enfrentan en varios puntos. A medida que se quede más simple se crearán herramientas menos completas. Igualmente, cuanto más complejas sean las herramientas, más complejas resultarán. Esto es inevitable, por lo que cada uno necesita encontrar su propio equilibrio.

Ademas es frustrante que haya muchos programadores que toman el camino fácil mientras reclaman el más simple. La mayoría de las veces las soluciones más simples y fáciles no coinciden, pero aún así, los programadores eligen fácil como si fuera simple. No hay malentendidos sobre qué es fácil y qué no es. Pero, ¿qué es mantener el software simple?

En desarrollo siempre se prefirió que un software haga una cosa solo . No debe hacer más de lo que necesita, ni proporcionar más funcionalidad que la estrictamente necesaria.

Las herramientas complejas requieren más código, por lo general se pueden combinar con distintas parametrizaciones para adaptarse a muchos contextos y aprovechar su reutilización. Aunque tampoco queda exento de no poder cubrir un escenario determinado y tenga que ser “parcheada”.

Es difícil arreglar estas herramientas con tantas líneas de código y dependencias. Leer cientos de líneas de código puede lleva mucho tiempo y requiere un esfuerzo enorme. Incluso si gastamos el tiempo y hacemos el esfuerzo, corremos el riesgo de romper algo más. Esto se debe a que son difíciles de seguir y solo podemos esperar hacer código confiable que comprendamos.

Para empeorar las cosas, la mayoría de las veces nos encontraremos solucionando problemas que no son nuestros, problemas que no tendríamos si no estuviéramos usando la herramienta compleja en primer lugar.

Creo que el uso de herramientas más simples conduce a un software más confiable y fácil de mantener. Software que cualquiera puede entender. El software simple es fácil de combinar con otros, incluso con aquellos destinados a resolver un problema en un contexto completamente diferente.

Sin embargo, y para que no me mal interpreten La complejidad no es necesariamente mala, a veces no podemos seguir siendo simples, a veces la complejidad es inherente al problema y tenemos que lidiar con eso. El problema surge cuando aceptamos la complejidad sin entenderla, cuando la agregamos sin considerar el costo, o incluso ignorando el hecho de que hay un precio que pagar por ella. Luego perdemos el control de nuestro software y comenzamos a depender de él.

Comprender las decisiones que tomamos nos mantiene en control de nuestro software. Sin ese control no podemos estar seguros al hacer cambios y el resultado difícilmente será la solidez.

Si te encuentras en la necesidad de agregar complejidad, puedes hacerlo. Pero siempre hay que entender lo que se está haciendo, elija pagar ese precio y asuma los riesgos para obtener el beneficio que proporciona. Sí, las herramientas complejas también tienen beneficios.

Agustín Chermaz