Quizá hayas oido hablar de Clean Architecture en los últimos meses, y te haya generado una sensación de que es el enésimo hype que, como muchos frameworks y tecnologías arrasan al principio, gastas tu valioso tiempo en aprender, y después de dos años ya está desfasado y tienes que aprender la moda que toque en ese momento para no quedarte atrás.
Es una sensación que produce fatiga, y con el tiempo como profesional aprendes a mantenerte al margen y saber esperar el momento de madurez adecuado para subirte al carro.
Lo que pretendo con este texto es contar mi punto de vista respecto a si Clean Architecture es una moda o un hype, o si es una apuesta segura a largo plazo.
Clean Architecture está de moda, pero no es una moda
Voy a intentar explicar está contradicción.
Normalmente, las soluciones tecnológicas que adoptamos tienen que cumplir una función, que es resolver un problema que tengamos. En el caso que nos ocupa, el problema es construir software de calidad. Algo que es difícil, ya que no sólo se trata de cumplir requisitos, sino de crear algo robusto, mantenible, extensible y testable.
Para mi, Clean Architecture es la herramienta que hoy día me resuelve ese problema, y lo hace muy bien ya que es la arquitectura que más me ha ayudado y mejor he comprendido desde que programo.
Además, está teniendo muy buena acogida gracias al auge que ha tenido en la comunidad de desarrollo de Android, y ha ganado adeptos de una manera relativamente rápida en el mundillo de las arquitecturas. Para contribuir a ese aura de hype, se supone que en unos días debería lanzarse por fin el archi-aplazado libro del mediático Uncle Bob.
Es la solución que uso hoy día, sí, pero tampoco me obsesiono con ello. Por eso digo que está de moda, porque probablemente en unos años ya no la usaré, o usaré esos conceptos con con otro nombre. Martin Fowler lo dice, todas las arquitecturas caducan.
Lo bueno es que los conceptos y buenas prácticas que conlleva implementar Clean Architecure sí que persistirán, al menos por bastante tiempo: separación de aspectos, encapsulación, inversión de dependencias, legibilidad…Y por eso digo que no es una moda.
Y es que precisamente una de las bondades de Clean Architecture es que te permite abstraerte de los detalles (bases de datos, interfaz de usuario… todo aquello cuya implementación es sustituible) al posponer las decisiones tecnológicas, para que sus limitaciones no influyan en el diseño de nuestro dominio. Te evitar caer en el hype, y si caes, te ayuda a salir del mismo pudiendo sustituir fácilmente una tecnología por otra sin que el dominio se vea afectado.
Conclusión
Clean Architecture es la solución que mejor nos ha resuelto a nosotros los problemas que debe solventar una arquitectura. Es la solución actual a esos problemas, pero que puede que en el futuro sea otra.
Pero sin duda no es una moda como pueda ser el enésimo framework o librería javascript, que mucha gente utiliza cuando ni siquiera les está resolviendo un problema real, y cuyo conocimiento adquirido morirá cuando dejen de usar dicho framework.
Con las arquitecturas Clean, los conceptos importantes van a perdurar, independientemente de que se llame Clean, Hexagonal, Ports and Adapters u Onion. Las arquitecturas se basan en conceptos similares, por lo que una vez que adquieres el conocimiento de esos conceptos, trasladarlos de una solución a otra no es complicado.
Me atrevería a decir que Clean Architecture es la moda que te ayuda no caer en las modas.
Nota: Este texto fue publicado originalmente en el blog de Kirei Studio.