Hace días descubrí un artículo en InfoQ titulado “Eres un arquitecto de software?” de Simon Brown, y hoy he leído una pequeña reseña en javaHispano, lo cuál me ha recordado que tenía pendiente escribir algo sobre él. En él, Simon nos expone su idea de lo que un arquitecto de software debería ser, o cómo un desarrollador puede llegar a ser arquitecto.
La idea más importante del artículo creo que es que ser arquitecto es un rol, no un rango, por lo que el arquitecto se debe comportar como tal y ganarse el respeto del resto del equipo, no porque un papel diga que es el arquitecto los demás deban reverenciarle.
Según Simon, la arquitectura de un proyecto puede dividirse en dos fases: definición y entrega (delivery):
En cuanto a la fase de definición me gustaría destacar las siguientes ideas:
- Definir una arquitectura es crear una estructura, líneas de trabajo, principios y liderazgo técnico
- La selección de una tecnología es sobretodo gestionar riesgos
- Testear la arquitectura para probar que realmente funciona
Y en cuanto a la fase de entrega:
- Es el arquitecto quien tiene la visión global del proyecto y quien tiene que defenderlo tanto frente al cliente como a los desarrolladores
- Es el arquitecto quien debe asumir el liderazgo técnico
- Es el arquitecto quien debe promover e incentivar el continuo aprendizaje del sistema a los desarrolladores
- Es el arquitecto quien debe asegurar la calidad del código
- El arquitecto debe escribir código
En definitiva, el arquitecto debe asumir un papel activo, y comprender que es el líder técnico del equipo y como tal debe ser un referente dentro del equipo.
Yo estoy trabajando duramente para ser este tipo de arquitecto. Y tú, eres arquitecto de software?