Ir al contenido principal

¿Cuáles son las responsabilidades de un Arquitecto?



Creo que muchos hemos asumido alguna vez el rol como Desarrolladores durante gran parte de nuestra vida laboral. Pues bien, durante esa época que para mí es aún reciente, he sido testigo de cómo prima la antigüedad de los buenos Desarrolladores en los posibles ascensos de la compañía.
Es cierto que, donde lo hay, el cargo de Arquitecto de Software es bastante apetecido, principalmente por la posición económica que se supone. Pero, ¿somos conscientes de las responsabilidades de ese cargo?, ¿sabemos a qué nos enfrentamos?, ¿Estamos preparados?

Cuando un buen desarrollador se recompensa por su antigüedad ascendiéndolo como Arquitecto, pueden pasar 2 cosas: la primera que tenga todas las habilidades y se convierta en un profesional indispensable para la compañía o, que es lo que generalmente sucede, que la compañía pierda un buen Desarrollador a cambio de un Arquitecto sin la experiencia necesaria para generar valor al negocio.
Me he desempeñado como Arquitecto un buen tiempo e inicialmente pensaba que lo más importante era conocer de todas las tecnologías, desenvolverse como pez en el agua con cada framework, y en resumen ser el referente para la consulta de tecnología. ¿Qué he aprendido? Me estrellé constantemente entendiendo que para ser un buen Arquitecto, se deben tener varias habilidades, junto con una base sólida de conocimientos.

Listo a continuación las características que durante todo este tiempo he estudiado y aplicado:

Ser un Líder

Si en algo están de acuerdo los principales exponentes de la Arquitectura, es que la habilidad más importante de un Arquitecto es la de ser capaz de liderar, convencer y negociar. Un líder es aquel que indica el camino y que aun en medio de la incertidumbre es capaz de convencer que ese es la ruta correcta.
Los líderes son visionarios y son capaces de adelantarse a cualquier obstáculo en el camino, saben lo que quieren conseguir, crean estrategias y además conocen a todos y cada uno de aquellos que conforman su equipo de trabajo. Escribiendo esto último, me acuerdo de personas que luego de 2 semanas trabajando, no conocen aun los nombres de sus compañeros. En esto entra otra característica importante de un líder; la comunicación.
¿Cómo se logra ser un buen líder? Lo básico es leer bastante, llenar el lenguaje con los conceptos propios del tema y la relación correcta con el contexto. Es por esto mismo que es muy poco probable que un experto en psicología, por ejemplo, sea un líder adecuado para un proyecto tecnológico.
Lo que aprendamos no debe solo enfocarse en los Temas técnicos, lo más importante y lo recalco nuevamente, es la capacidad de negociar y convencer, ser capaces de defender y sustentar una idea con argumentos y claro, resolver conflictos escuchando todas las posiciones.
Existe un libro bastante interesante que explica un método desarrollado por la Universidad de Harvard para negociar con inteligencia, el autor: José Ignacio Tobón.

Capacidad de interactuar con distintos roles

Uno de las características más interesantes y que requiere mayor trabajo es la capacidad de comunicar un mensaje a distintos interesados (stakeholder), haciendo que todos lo comprendan y lo valoren correctamente. Es por esto que la comunicación tiene aún mayor importancia, cada presentación que se haga de lo que vamos a entregar, sea un diseño, una idea o una oportunidad de negocio, debe ser expuesta adecuadamente dependiendo del rol de la audiencia.
Básicamente, interactuaremos constantemente con 4 roles principales: los interesados con conocimientos técnicos, interesados con poder de dirección, ejecutivos de ventas y la alta gerencia. Dependiendo de a quién debamos comunicarnos, el uso de un lenguaje asertivo es decisivo para hacernos entender, lograr credibilidad y patrocinio.
Interactuar y liderar personas con conocimiento técnico es tan complicado que hasta se han escrito libros de esto, como si se tratara de seres diferentes. Un libro importante, escrito por uno de los teóricos más influyentes de la ingeniería de Software, Watts Humphrey (Inspirador de PSP y TSP) es Managing Technical People.
Comunicar la Arquitectura a un equipo técnico es fundamental para lograr los objetivos planteados, por tanto, lo más importante es argumentar cada decisión arquitectural con hechos y datos.
Por otro lado, los ejecutivos, directores y gerentes de proyecto, generalmente quieren conocer el valor que tiene para el negocio cualquier tema que les expongamos, esto es, cuánto será el esfuerzo de implementarlo, cuánto tardará, cuánto costará y sobre todo cuánta ganancia generará o cuánto dinero ahorrará en la operación.

Conocer el sector para el que trabaja

Esta debe ser tal vez la primer labor de un Arquitecto, conocer el sector al que la compañía pertenece, le permite entregar soluciones adecuadas y valiosas. Toda compañía pertenece a un sector de industria y algunas veces es conocida como verticales. Algunas de las que más se mencionan son, por ejemplo: sector salud, retail o de abastecimiento, gobierno, educación, tecnología, etc.
Conocer el sector y entenderlo, permite seleccionar los modelos de arquitectura adecuados, descubrir el estado del arte, los conceptos, identificar la competencia, ayudar a definir las estrategias tecnológicas y de negocio correctas e interactuar con nuestros pares usando la terminología adecuada. De nuevo: comunicación.
No he conocido una forma singular de cubrir este conocimiento, hay que consultar bastante, averiguar, interactuar, capacitarse, buscar temas relacionados, estudiar cada uno de los casos de negocio que se relacionen a lo que estamos trabajando y en definitiva ser bastante inquietos con la lectura y la investigación.

Aprender rápidamente nuevas tecnologías

Como ya comenté en el artículo de ¿Qué es la Arquitectura de Software?, existen 4 especialidades de la arquitectura empresarial, y por cada una existe un especialista. ¿Por qué son especialidades? Porque cada una tiene una gran cantidad de herramientas, frameworks, conceptos y líneas de aprendizaje que parecen exageradas pero que deben ser dominadas.
Un Arquitecto debe contar con mínimo un tipo de especialización, conocer ampliamente herramientas que ayuden a mejorar la productividad, implantar soluciones innovadoras y estar siempre a la vanguardia de la tecnología. Tener un espectro elevado de conocimientos prácticos permite seleccionar las soluciones más adecuadas a través de datos objetivos y pruebas de concepto.
Esta debe ser una habilidad que se debe ir desarrollando gradualmente, es claro que no es posible nacer aprendidos, pero es requerido que tengamos mente abierta y busquemos soluciones a través de alternativas que no hayan sido contempladas. Es importante entonces, conocer la historia de la compañía, buscar toda la documentación posible y de nuevo: leer e investigar.

Capacidad de análisis y diseño

Un buen Arquitecto es capaz de extraer información relevante a partir de unos requerimientos básicos, es importante entender que en principio, la construcción de un sistema está lleno de incertidumbre y es nuestra labor reducirla al máximo. El análisis es tan crucial que un pobre entendimiento de los requerimientos  y de los objetivos eleva la probabilidad de que un proyecto fracase.
Tanto el análisis como el diseño se deben afrontar desde distintas perspectivas, en el primer caso, es posible entender las necesidades y los requerimientos ubicándolos en contexto. Como producto del análisis se debe obtener: Los motivadores del negocio, los escenarios operacionales, las restricciones de negocio y tecnológicas y principalmente los atributos de calidad que deben ser asegurados. Cada uno de estos entregables merece un artículo para ser abordado.
Por el lado del diseño, el producto o entregable más importante son los puntos de vista de la Arquitectura, estos son ampliamente discutidos pero permiten entender las decisiones que se han tomado desde diferentes frentes como radiografías que, unidas, deben formar el total de la solución propuesta. Para realizar un buen diseño debemos entender acerca de patrones, estilos de arquitectura, puntos de vista, ser claros en la redacción y de nuevo, enfocarnos en la comunicación asertiva a través del uso de un lenguaje estándar.
Para este tema recomiendo el libro biblia de la arquitectura: Documenting Software Architectures: Views and Beyond, escrito por varios investigadores importantes del SEI. Otro recurso, especializado para la arquitectura de software, es cada uno de los tomos de Pattern-oriented Software Architecture, más conocidos como POSA.

Participar en el ciclo de vida del producto

El Arquitecto es un estratega del negocio, como bien lo dice la IASA. Este debe participar en cada una de las fases de los ciclos de vida del producto e incluso del proyecto, generando valor y entregando y manteniendo los artefactos producto de su trabajo, especialmente el Documento de Arquitectura (de Software por mi especialidad).
Es el responsable de aportar a cada fase para optimizar la productividad y debe conocerla en su totalidad. Aprender de las fases de un producto depende de la metodología que se use para su construcción, por tanto y aunque parezca un disco rayado, la lectura, la investigación y la comunicación son las habilidades que aportan en cada una de estas responsabilidades.



Finalmente quiero agregar que un buen Arquitecto no nace si no se hace, es posible seguir una ruta para aprender todas las habilidades y conocimientos que se necesitan. Un modelo a seguir para convertirse en un experto en cualquier tema podría ser el siguiente:
1. Conocer el tema a estudiar
2. Ubicar cada uno de los conceptos que lo conforman
3. Aplicar cada concepto de forma práctica.
4. Enseñar lo que hemos aprendido

Comentarios

  1. Buen articulo y excelentes recomendaciones,... he visto esto ...generalmente sucede, que la compañía pierda un buen Desarrollador a cambio de un Arquitecto sin la experiencia necesaria para generar valor al negocio.

    ResponderEliminar
    Respuestas
    1. Me alegra que le haya gustado. Y es cierto, Eso sucede muy a menudo. Creo que muy pocos tienen claro qué es la arquitectura y la casi inexistencia de este tema en un pensum académico da a entender que cualquiera puede asumir el rol de Arquitecto.

      Eliminar

Publicar un comentario

Comenta, pregunta u orienta constructivamente.

Entradas populares de este blog

Proceso para la creación de la Arquitectura

Hoy quiero contarles acerca de un modelo que he adoptado para la construcción y entrega de la Arquitectura de Software, el cual lo he relacionado con éxito al interior de la compañía para la cual trabajo y que considero, bien puede adaptarse a cualquier tipo de especialidad de la Arquitectura Empresarial. Cuando era desarrollador escuchaba hablar constantemente acerca de varias metodologías de desarrollo. Durante mucho tiempo apliqué RUP, XP y metodologías AGILES, usé PSP y TSP como procesos de desarrollo. Pero durante todo ese tiempo nunca oí hablar de metodologías orientadas a la generación de la Arquitectura de Software, aún luego de comenzar a estudiar y al día de hoy he tenido muy pocas referencias. Quiero aclarar que existen varios modelos y  frameworks bastante conocidos para la Arquitectura Empresarial que son confrontados a profundidad en unas entregas muy completas de Microsoft, estas pueden estudiarse en este link . Pues bien, el método al que me refiero es ACDM, ...

Expandir espacio en disco duro en Virtual Box y con Partition Logic

Cuando nos quedamos sin espacio en nuestra máquina virtual, tenemos problemas para seguir usándola adecuadamente. Los siguientes son  los pasos que seguí para aumentar el espacio en disco duro, para la unidad principal de una máquina virtual de Windows XP instalada en mi Mac Book.  Probé una herramienta llamada Partition Logic   y, debido a que no la conocía, decidí documentarlo. Tenía asignadas 5GB a la unidad donde está instalado el sistema operativo, y se veía así: Mi máquina, con 5GB de tamaño en disco duro. 1. Redimensionar la unidad vdi. el siguiente es el comando que realiza toda la magia en VirtualBox: VBoxManage modifyhd "ruta/unidad.vdi" --resize [tamaño] En mi caso aumenté el tamaño a 20GB. VBoxManage modifyhd "/Users/oscar/VirtualBox VMs/WindowsXP/WindowsXPClone.vdi" --resize 20000 Como anotación,  debí clonar la unidad, pues había creado el disco de tamaño fijo en Virtual Box y no me permitía aumentarlo (generaba error...

Atributos de Calidad

¿Qué son los Atributos de Calidad? Los Arquitectos debemos participar en el entendimiento de las necesidades de los usuarios. Sí, esa es nuestra principal responsabilidad.  En mi experiencia he debido iniciar con leer términos de referencia para aplicar a licitaciones públicas y privadas y luego acompañar al equipo de análisis en el levantamiento de requerimientos. Los usuarios finales, a excepción de algunos muy técnicos, hablarán en el lenguaje del negocio, de otros sistemas que conocen, de lo que hace la competencia, de lo que otro proveedor les contó, de lo que alguno de sus más influyentes operarios conoce o del patrón de trabajo que ejecutan a diario. Muy pocas veces nos dirán exactamente lo que quieren y por eso debemos estar presentes; debemos ayudar a traducir esos relatos prosaicos de necesidades a requerimientos técnicos.  Los requerimientos técnicos se dividen principalmente en 2: los funcionales (functional requirements) y los no funcionales (Non-functi...