La Arquitectura de Software
Extraido de libro "Designing Hexagonal Architecture with Java" de Davi Vieira
"Este afán por la calidad y la corrección que se desprende de cualquier empresa de arquitectura seria no siempre está presente. Como señala big ball of mud, hay escenarios en los que el software más rentable de una empresa es una absoluta gran bola de barro. Se trata de un software que ha crecido sin ningún sentido del orden y que es complicado de entender y mantener. Los desarrolladores que se atreven a enfrentarse a la complejidad que plantean este tipo de sistemas son como guerreros que luchan contra una hidra. El esfuerzo de refactorización necesario para imponer algún orden en tal complejidad a veces no merece la pena. Esta gran bola de barro no es el único problema. También hay factores culturales y organizativos que pueden socavar cualquier esfuerzo de arquitectura de software. Muy a menudo, he tropezado con compañeros de equipo a los que simplemente no les importaban los principios de la arquitectura. El camino de menor esfuerzo para entregar el código a la producción es la norma a seguir en sus mentes. No es difícil encontrar este tipo de personas en proyectos con una alta rotación de desarrolladores. Como no hay sentido de la propiedad, no hay incentivo para producir código de alta calidad. Impulsar la disciplina para seguir una arquitectura de software es difícil. Tanto el equipo técnico como la dirección deben estar alineados sobre las ventajas e implicaciones de seguir dicha disciplina. Es importante entender que dedicar más tiempo por adelantado a tratar aspectos técnicos que no añaden mucho valor, en términos de características para el cliente, puede jugar un papel crucial a largo plazo. Todo el esfuerzo se amortiza con un software más mantenible, aliviando a los desarrolladores, que ya no tienen que luchar contra las hidras, y a los directivos, que ahora están mejor posicionados para cumplir los plazos de la empresa. Antes de intentar promover, y mucho menos imponer, cualquier principio de arquitectura de software, es aconsejable evaluar el entorno actual para asegurarse de que no hay factores culturales ni organizativos que jueguen en contra de la actitud de unos pocos que intentan elevar el listón de los sistemas mejor desarrollados."