Rasgos y Características del Arquitecto de Software

Gustavo Andres Brey
Ingenia, Architectural Journeys
5 min readJul 16, 2018

Hace un par de años, cuando comenzó la materia APIT (Arquitectura en Proyectos de IT) en la Universidad Tecnológica Nacional, junto con uno de los docentes, Gastón Escobar definimos una serie de rasgos o características que debía tener el arquitecto de software, obviamente excluimos los temas técnicos y más que nada apuntamos a los skilles interpersonales y de liderazgo que todo arquitecto de software debería tener o intentar desarrollar, aquí los explico más detalladamente:

Visionario

Ser Visionario para un arquitecto es poder definir esa idea de arquitectura, comunicarla y generar el compromiso para cumplirla. Para poder tener siempre esa visión y alinear al resto de los stakeholders es importante cumplir con las siguientes características:

  • Escucha Activa, para el correcto entendimiento del negocio y las posibles críticas a las decisiones del arquitecto.
  • Comunicación verbal, no verbal, oratoria y capacidad para modelar.
  • Sagacidad Política, tengo que preguntarle a Gastón bien por que es esto, suena lindo.
  • Liderazgo para la creación del team de desarrollo, movilización y motivación del mismo alineándolo detrás de la visión.
  • Carisma para poder alinear al team detras de la visión (de la arquitectura a construir). Y es por eso que el carisma es tan importante en un Arquitecto, es ese grado de atracción y desenvolvimiento personal que permite agrupar y convencer personas para lograr algo, en este caso, para sumarse a la abstracción que el arquitecto propone construir.

Traductor

Este es uno de los rasgos que más pongo énfasis durante la cursada de la materia, a la hora de comunicar el conjunto de decisiones que van materializando la arquitectura necesitan ser comunicadas y consensuadas con todos los stakeholders, no pueden ser presentadas de la misma manera, ni con el mismo lenguaje, ni con los mismos modelos a todos, el arquitecto debe asegurarse que cada tipo de stakeholder entienda la vista de arquitectura que tiene que entender con el lenguaje correcto, por lo tanto el arquitecto debe tener las siguientes características asociadas:

  • Poliglota / Multi-lingual, para poder comunicar la misma arquitectura a diferentes stakeholders que poseen diferentes lenguajes.
  • Analista, es importante estár al tanto del contexto que cada stakeholder se encuentra, que preocupaciones (concerns) posee.
  • Capacidad de síntesis, esta característica puede ahorrar mucho tiempo en las reuniones del arquitecto, pudiendo guardar tiempo para otro tipo de actividades, esto no quiere decir ocultar nada sino comunicar lo justo y necesario.
  • Generalista, el arquitecto debe ver siempre la “Big Picture”, debe concertarse en las decisiones que guían la construcción de la aplicación trabajando y comunicando abstracciones, los detalles hay que dejarlos para los analistas del negocio y diseñadores/programadores.
  • Identificar qué es lo relevante, qué tiene impacto que no, clasificar y priorizar
  • Alta tolerancia a la ambigüedad, esto puede ayudar mucho a acortar el tiempo en las reuiones, las abigüedades son sanas, siempre y cuando no haya buena fe en el entorno de los stakeholders, pero mi recomendación es no invertir tiempo en discusiones que no aportan al proyecto, si un administrador de SCM le dice robustez a la latencia (response tiem), todo bien, no hay que enseñarle en medio de una reunión que lo que dice está mal, lo importante es poder manejar esa ambigüedad tener bien claro de que se está hablando, no discutamos temas de nomenclatura, lo que importa es el significado (Como dice Nico Passerini).
  • Mentalidad abierta, esto no es exclusivo del arquitecto de software, aunque lamentablemente muchos cerecen de esta característica :(

Diseñador

Este es uno de los rasgos diferenciadores, debido a que es sumamente necesario aunque no es suficiente. La creación o el diseño de la arquitectura es uno de las principales tareas del arquitecto a lo largo del proyecto por lo tanto es muy importante tener un criterio de diseño y evaluación de alternativas muy aceitado para poder articular dichas decisiones, utilización de principios y patrones, descomposición de módulos, alocaciones y sobre todos los trade offs necesarios para la construcción de la arquitectura. Quiero dejar claro que diseñar no es “documentar” en modelos, todo lo contrario, diseñar es la actividad de entender el problema y buscar a traves de las tácticas disponibles la mejor solución basadas, generalmente, en abtraciones, creatividad y reuso de soluciones anteriores (patrones). Las características asociadas al diseño las podemos catalogar de la siguiente manera:

  • Creatividad, a la hora de buscar alternativas para solución de problemas y decisiones necesarias.
  • Conceptualizador, esto está muy relacionado con los modelos mentales y la visión del arquitecto, pero básicamente es necesario entender el problema antes de tomar decisiones, y que la conceptualización esté lo mejor posible (que terreno pantanoso me he metido)
  • Modelador, en esta característica está en juego la conceptualización (punto anterior) donde modelamos para representar la realidad (negocio, recursos, etc) y por otro lado la comunicación de lo decidido, aca se mezcla con lo que hablamos en el rasgo de traductor.
  • Colaborador y Moderador, colaborar a la hora de resolver problemas y moderador para generar consenso en una reunión y búsqueda de compromiso, ya que es muy común tener reuniones con diferentes tipos de stakeholders y generalmente las decisiones son tomadas en un contexto donde la arquitectura es el centro o guía dicha decisión.
  • Comunicador de conceptos y modelos.
  • Perspectivas, es la habilidad para ver un problema y plantear diferentes soluciones y en cada una de ellas poder ver que impactos va a tener en el corto, mediano y largo plazo. Para este punto en particular recomiendo mirar la siguiente página de un método llamado, “análisis basado en perspectiva”

Crítico y Consultor

Es muy importante como crítico la habilidad para tener una mirada fresca e imparcial acerca de su propio trabajo, separando las personas del problema, aceptando críticas y buscando feedback constante que puede venir de cualquier rol. Es más que importante tener la voluntad para reconsiderar y volver atrás si es necesario las decisiones tomadas. Con respecto al rasgo de consultor, es muy importante a la hora de la construcción es muy importante al soporte y la educación sobre la arquitectura, las revisiones y el feedback para un posible cambio. Agunas de las características que salen, podrían ser las siguientes:

  • Busqueda constante de feedback
  • Tener la capacidad de reconsiderar decisiones previamente tomadas en base a una crítica
  • Educador de la arquitectura
  • Revisor de la implementación, que cumpla con lo que la arquitectura define

Cualquier opinión y sugerencia va a ser bienvenida.

--

--

Gustavo Andres Brey
Ingenia, Architectural Journeys

Ingeniero, Padre, Ingenia Co-Founder, Profesor UTN y UCEMA, Ex NERD@GOV, Casado con la nerd mas linda. Founder KidsConf, ArqConf y DevopsConf. TEDx Speaker