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
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.
ResponderEliminarMe 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