>

La programación minimalista

Juanma Cabello     Colaboraciones    03/03/2017


Hoy voy a tratar un tema que llevo unos cuantos meses dándole vueltas: el minimalismo aplicado a la programación. Por si no tienes ni idea del tema, el minimalismo es como pelar una cebolla hasta que te quedas con lo que de verdad vas a usar; es ir eliminando lo superficial hasta quedarte con lo fundamental y necesario. Básicamente es focalizar. Si bien el minimalismo es algo que muchos conocen por la arquitectura, por la música o por la decoración… ¿qué pasaría si aplicáramos el concepto al desarrollo de aplicaciones?

El problema del desarrollo basado en frameworks

Todos, en mayor o menor medida, hemos usado algún framework en nuestra vida laboral y, seguro, que en algún momento te has mosqueado cuando te has dado cuenta de que alguna cosa no la podías hacer como tu querías o al realizar una actualización, algo ha dejado de funcionar y has tenido que depurar para corregir el bug en el propio framework hasta que sacaran el parche por tu imposibilidad de usar otro. Tu aplicación es esclava del framework. Una vez que comienzas el desarrollo con un determinado framework ya no hay vuelta atrás; cambiar de framework es, prácticamente, rehacer tu aplicación desde cero. Cada vez más y más desarrolladores somos conscientes de este problema y estamos optando por un desarrollo orientado a componentes en lugar de fullstack frameworks que se apoderan de tu aplicación.

El desarrollo basado en componentes

El desarrollo basado en componentes, en contrapartida, aboga por dejarte total libertad para elegir qué componentes usar para desarrollar tu aplicación, de esta manera, podemos elegir qué librería usar para logs, qué librería usar para acceso a base de datos, qué librería usar para el manejo de las peticiones HTTP, qué motor de plantillas usar, etc. Cómo puedes ver todo se vuelve modular y la forma de gestionar todo esto sería a través de nuestro querido Composer. Todo se simplifica ya que sólo usaremos las librerías necesarias de verdad. Esto hace que depurar sea más sencillo ya que cada componente se focaliza en una única tarea permitiéndonos averiguar más rápidamente dónde estamos cometiendo el error al haber menos capas en nuestra aplicación y, en caso de que una librería deje de funcionar bien después de una actualización, basta con cambiarla y adaptar el código.

El precio a pagar por la simpleza

Simple no quiere decir que sea fácil. Si hay que ponerle alguna pega a esta forma de desarrollo, podría ser que requiere de conocimientos avanzados en desarrollo. Patrones de diseño y conocimiento profundo del lenguaje son dos asignaturas obligadas.

El consuelo es que, al menos en mi caso, no ha sido hasta después de llevar diez años en esto que me ha surgido esta inquietud. Después de tanto tiempo programando aplicaciones web, la misma experiencia te da sobresaliente en ambas.

El desarrollo basado en componentes es una forma distinta de plantear tus proyectos a la que deberías de darle un tiento. La seguridad de saber cómo funciona exáctamente tu aplicación es algo impagable, bajo mi humilde punto de vista. La agilidad con la que podrás cambiar de librería el día que encuentres alguna que funcione mejor es mayor que en cualquier framework y más eficiente ya que no estarás duplicando funcionalidades (como por ejemplo usar Stringy estando ya usando Laravel, que trae su propio manejador de cadenas).

Conclusión

He usado el logo de Slim framework al comienzo del post porque creo que representa muy bien este concepto de minimalismo aplicado a la programación que te quiero transmitir. La verdad es que es algo bastante antiguo, sólo tienes que echarle un ojo a la filosofía UNIX o al principio KISS pero quería darle algo de visibilidad a estos conceptos en la actualidad.

Si quieres más información al respecto puedes visitar la web del movimiento LESS code, donde encontrarás a otros programadores que basan sus desarrollos en torno a esta idea. Además, si quieres ver un caso práctico de desarrollo basado en componentes, yo mismo he creado y mantengo un repo en GitHub llamado Slim-boilerplate que básicamente es un esqueleto desde el que comenzar a desarrollar usando Slim y otros componentes que he seleccionado.

¿Qué te parece esta visión del desarrollo? ¿La has probado alguna vez? ¿La usas frecuentemente? ¡Dínoslo en los comentarios!


Sobre el autor

Juanma Cabello   

Fullstack #php developer en @WifiProDev y organizador de @betabeersMLG