Reseña de la parte I del libro "The Software Architect Elevator"

25-01-2023 – por Gustavo Aquino · 6 min de lectura

#arquitectura#libros

Contexto

La arquitectura de software ha sido objeto de acaloradas discusiones entre técnicos y gestores de TI durante décadas. Muchas obras de grandes autores, como Mark Richards, Sam Newman, Len Bass, George Fairbanks, Frederick Brooks Jr., entre otros, han contribuido a esclarecer este vasto tema.

En esta reseña se abordará la primera parte del libro "The Software Architect Elevator" [1], titulado en portugués como "El elevador del arquitecto de software", escrito por Gregor Hohpe [2], autor también del aclamado EIP, "Enterprise Integration Patterns" [3], un catálogo de patrones esenciales para integraciones entre sistemas.

Elevadores
Figura 1. Los arquitectos de software necesitan transitar por diferentes niveles organizacionales.

Parte I – Arquitectos

En esta primera parte, el autor enumera las habilidades y características deseables en un arquitecto de software, y qué funciones debería desempeñar dentro de una organización, como: visión estratégica de amplio alcance, liderazgo técnico y buena gestión de personas. El autor afirma que estos profesionales deben lidiar con discusiones que van más allá del ámbito técnico, como el contexto situacional en el que están insertos y ciertas suposiciones tácitas, que a veces ocultan información contextual fundamental, además de establecer comunicación entre diferentes niveles organizacionales.

Encontrar el equilibrio correcto en las decisiones de diseño de acuerdo con los objetivos y principios establecidos es fundamental, conectando los componentes de software para que puedan trabajar en conjunto y alcanzar el resultado esperado, sin dejar de lidiar con la complejidad mediante el uso de técnicas de gobernanza.

En cuanto a la comunicación, el autor utiliza la metáfora de un elevador de un edificio, que conecta los niveles inferiores, donde los ingenieros de sistemas trabajan en la creación y el mantenimiento de los sistemas de software del negocio, con los niveles superiores, donde se encuentran los ejecutivos responsables de la alta abstracción del negocio ofrecido por la organización. Esta conexión se representa mediante la metáfora de un elevador de un edificio. En este contexto, la función del arquitecto es transitar naturalmente por esos niveles, sin perder la esencia del mensaje, es decir, adaptando el lenguaje utilizado según las necesidades específicas.

En situaciones donde hay resistencia a la actuación del arquitecto de software en la comunicación entre diferentes niveles, el autor argumenta que es necesario trabajar para reducir esa resistencia. Una forma de lograrlo es haciendo que los niveles superiores se interesen y estén al tanto de los proyectos realizados por ingeniería. Además, es importante establecer ciclos frecuentes de retroalimentación.

En cuanto a las características técnicas, Hohpe describe que los arquitectos deben garantizar que las soluciones desarrolladas mantengan el equilibrio y la proporción de las ideas iniciales. Esta capacidad también la menciona Frederick Brooks Jr. en su libro "El mítico hombre-mes", donde se la denomina "integridad conceptual". Brooks destaca la importancia de que el arquitecto trabaje para unir las ideas que componen el sistema y mantener la cohesión del conjunto.

La experiencia del arquitecto en proyectos de diferentes tamaños es fundamental, ya que le permite tener la sensibilidad para identificar oportunidades de cambio que van más allá de los requisitos funcionales esperados en un sistema. Estos cambios pueden incluir la necesidad de soportar variaciones en el tráfico de datos procesado, cambios de entorno cuando el sistema se traslada a un nuevo proveedor de computación en la nube, o la necesidad de implementar funcionalidades de internacionalización para hacerlo disponible en varios idiomas.

Otro aspecto técnico importante es promover la construcción de herramientas para la construcción y entrega de software en producción, aumentando la velocidad de entrega de los cambios y reduciendo el riesgo de errores en operaciones manuales realizadas por los equipos de operaciones. El arquitecto de software debe garantizar que su criterio técnico esté libre de sesgos, por lo que debe procurar mantenerse en contacto con otros expertos que le brinden información que le permita ver más allá de las palabras de moda, y discernir si una solución es realmente nueva o simplemente "recalentada de forma inteligente". Esto es importante porque evita que el arquitecto se sienta cómodo siempre con el mismo abanico de soluciones, o que emplee nuevas herramientas de forma irracional, sin buenas razones para aplicarlas.

Según el autor, la arquitectura empresarial es la organización lógica de los procesos de negocio y de la infraestructura de TI que los soporta, uniendo los logros de los arquitectos de negocio y de TI. Existen diversas herramientas de mapeo de procesos empresariales utilizadas por los arquitectos. Según Hohpe, los arquitectos deben actuar con cautela al usar estas herramientas como meros documentadores, ya que pueden entregar un producto final desactualizado apenas se publica. Sin embargo, este enfoque estático plantea un dilema recurrente para los arquitectos, pues puede no reflejar con precisión las interacciones en constante cambio dentro del entorno empresarial.

Existen diferentes niveles de seniority para los arquitectos de software, que según Hohpe pueden identificarse aplicando el trípode de habilidad, impacto y liderazgo, donde la habilidad se refiere a la capacidad de resolver problemas reales con las herramientas adecuadas; el impacto mide cómo las habilidades del arquitecto benefician a la empresa, ayudándola a alcanzar sus objetivos estratégicos y de mercado; y el liderazgo determina la capacidad del arquitecto de promover el estado de sus prácticas, compartiendo conocimiento a través de charlas, blogs, publicaciones y al mentorizar a otros profesionales.

Por último, la habilidad de hacer las preguntas correctas e identificar quién toma las decisiones y cuáles son las motivaciones detrás de ellas es una competencia indispensable para el arquitecto de software.

Consideraciones

Las reflexiones presentadas por Hohpe en esta primera parte son fundamentales para entender la posición que ocupa el arquitecto de software dentro del complejo ecosistema organizacional, que involucra a diversos grupos de interés y va mucho más allá de las decisiones puramente técnicas relacionadas con aspectos de ingeniería u operaciones.

Sin embargo, es importante destacar que la capacidad de comunicación y toma de decisiones es el aspecto más importante para el éxito de una gestión, independientemente del área observada, ya sea para establecer un nuevo hito o para cambiar el rumbo de un proyecto que se ha desviado de lo planeado.

Lista de referencias

  1. Gregor Hohpe – Página personal
  2. Libro "The Software Architect Elevator" – Amazon
  3. Libro "Enterprise Integration Patterns" – Amazon

Profile picture

Escrito por Gustavo Aquino, Máster en Ciencias, Ingeniero de Software y fundador de Decodifique.com. Puedes encontrarme en LinkedIn.