Cuáles son las habilidades requeridas para ser un buen arquitecto de software?

Como la otra respuesta describe los lados no técnicos de las cosas, este post intenta proporcionar un complemento.

Ser un arquitecto es sólo una opción de lo que un ingeniero de software puede avanzar. Los arquitectos van a lo ancho. Son generalistas. Los científicos y algoritmos van a lo profundo. Son especialistas. Y otros van a lo no técnico.

A través de trabajar e interactuar con varios arquitectos de software durante el curso de mi carrera, y a través de mi experiencia en el diseño de sistemas (con mi limitada experiencia), aquí está mi opinión:

  • Un arquitecto diseña sistemas de software de acuerdo con los requisitos de las partes interesadas, técnicos, de negocio y operativos, normalmente para un horizonte temporal bastante largo (a diferencia de hackear unos cientos de líneas de código para crear una app en una semana)

  • Un arquitecto necesita tener la capacidad de pensar y trabajar en diferentes niveles de abstracciones (desde el nivel más alto hasta los detalles a veces cruciales), diferentes perspectivas (código, tiempo de ejecución, despliegue, operación) y puntos de vista de calidad (escalabilidad, fiabilidad, seguridad, etc.) del sistema. Un arquitecto suele tener un muy buen repertorio de modelos mentales para poner el sistema en la cabeza de alguien no simultáneamente, sino un aspecto relevante a la vez
  • Un arquitecto puede anticipar los requisitos duros y blandos actuales y futuros del sistema. Para ello, un arquitecto debe haber visto y experimentado muchas cosas sobre la construcción de sistemas, haber experimentado con diferentes enfoques y patrones y entender sus propiedades y compensaciones. Los materiales suficientes son ingredientes necesarios para la sabiduría práctica. Demasiada poca masa no hará una buena extensión.

  • Un arquitecto se ocupa de problemas de ingeniería del mundo real, no de problemas teóricos, por lo que los grandes científicos (solucionadores de problemas teóricos) no son necesariamente grandes arquitectos, y viceversa (no es necesario que un arquitecto tenga una rigurosa profundidad en ciertas áreas especiales, a menos que se requiera). Por lo tanto, un arquitecto tiene que estar basado en la realidad.

Los arquitectos que admiro suelen cumplir las características anteriores.