jueves, 4 de marzo de 2010

ARQUITECTOS INFORMATICOS


El arquitecto de software como un ser visionario


El presente artículo viene a ser algo así como una versión poética y muy propia sobre las posturas que, a veces, se ve obligado a tomar un arquitecto de software, relacionando al arquitecto y su arquitectura, con un visionario y su visión, respectivamente.

Cuando hablo de visionarios, me quiero referir a una persona capaz de tomar o crear una idea o ideal y llevarlo a la práctica. Según mi propia consideración (y de muchas personas que saben en serio sobre el tema), una persona que sólo es capaz de tener ideas, sin llevarla a la práctica o promoverlas para que otros las hagan realidad, no es, ni será jamás, un visionario.

Un visionario

Sin dudas, un ejemplo de visionario fue Galileo Galilei (cache). Es válida la historia que de él se cuenta, en la cual, luego de su retractación forzada sobre la veracidad de la teoría Copernicana (cache) del Heliocentrismo , se fue diciendo por lo bajo Eppur si muove (y sin embargo, se mueve).

Galileo fue un visionario y tuvo que lidiar con la adversidad. Llevar adelante una visión implica tomar algo que se encuentra en el plano ideal, y muchas veces irreal en la práctica actual y establecida, para hacerlo una realidad tangible. Las ideas originales o revolucionarias, e incluso aquellas no tan originales, que tienen que lidiar con la idiosincrasia y el saber establecido, encontrarán casi siempre un plano adverso.

La visión

En una visión -por ejemplo la de una empresa- las bases axiomáticas que conforman la visión tienden a doblarse, debido a la presión ejercida por el entorno (la realidad actual). El mantener una visión no implica cumplir a rajatabla los axiomas sin la menor noción de instinto de supervivencia, sino luchar para que éstos sean una realidad tangible en el futuro. El problema con la visión es que sitúa en el futuro el destino al cual queremos llegar y no nos dice cómo.

La realidad muestra de manera despiadada, que quién quiera llevar adelante una visión tiene que, primero que nada, sobrevivir para que se haga realidad. En ese sobrevivir, el instinto de supervivencia producirá que las bases axiomáticas se doblen, como le pasó a Galileo; pero si la visión es real, nunca permitirá que se quiebren (Eppur si muove).

El arquitecto y su visión de la arquitectura

Muchas veces, un arquitecto se encuentra en ambientes hostiles a sus ideales. Muchas veces es sólo culpa del arquitecto debido a su soberbia y/o cuestiones ambientales; viéndose en la necesidad de torcer los axiomas de su arquitectura ideal. En estos momentos, suele ganar la desesperación, preguntándose: ¿Por qué, si estoy haciendo algo que trae tantos beneficios, existen tanta resistencia? Seguramente, el problema radique en el arquitecto, ya que es difícil que existan personas que no entiendan ninguna explicación; creo, más bien, que existen personas que no pueden comunicarse debidamente con otras. Sin embargo, ante una situación de éstas, siempre es posible flexibilizar nuestros axiomas y así lograr dar el primer paso hacia la implementación real de la visión (arquitectura), manteniendo la esperanza de lograr el cumplimiento de todos ellos en el futuro.

Por estos motivos es que, a veces , la arquitectura es a su arquitecto, lo que su visión a un visionario.

El rol de los Arquitectos de Software


Introducción

De la misma manera que ocurre con la Arquitectura de Software, existen múltiples definiciones sobre el rol de los arquitectos. Podríamos incluso citar una definición por autor. Esto parece ser causa de que, en general, se ubica a los arquitectos en el contexto de una organización en particular, con las propias necesidades y requerimientos de esa organización. La realidad parece indicar que es poco probable que se pueda dar una definición de arquitecto, transversal a cualquier organización, y definir un estereotipo de arquitecto que especifique cuáles son sus responsabilidades y habilidades necesarias dentro de un proyecto. Lo que sí es posible es definir prototipos de arquitectos “a muy grandes rasgos” y aplicar cada uno de estos arquetipos, en una situación en particular, dependiendo del contexto de la empresa, del proyecto y del equipo de trabajo.

Confusiones comunes

El término Arquitecto de Software se ha convertido en el título de moda en toda empresa de sistemas o con un área propia de sistemas. Decimos de moda, debido a que no todas las empresas necesitan realmente arquitectos de software y, tal vez, ni siquiera todos los proyectos necesiten de un verdadero arquitecto de software. Es común que muchas de las tareas relevantes de un proyecto puedan ser perfectamente resueltos con desarrolladores experimentados, sin tener la necesidad de contratar un arquitecto. Muy frecuentemente se tiende a confundir estos dos perfiles, que son abismalmente diferentes. También es importante notar la diferencia entre los “gurúes tecnológicos” y los verdaderos arquitectos. Estas cuestiones aumentan la confusión existente sobre qué es un arquitecto y cuáles se supone tendrían que ser sus responsabilidades.

Existen otras figuras a las que habitualmente se les asigna este título de forma arbitraria; y que no siempre lo justifican, como ser:

Ingenieros

Científicos

Web masters

Project managers

Consultores

Analistas con profundo conocimiento del negocio

DBA’s


Tipos de arquitectos de software

Para definir qué es un arquitecto de software, debemos tener en cuenta un contexto y un escenario en particular. Dicho de otra forma, depende de la organización, de su negocio, de sus objetivos, de la influencia del área de sistemas, de la importancia de el/los proyecto/s y del tamaño de los mismos. Teniendo en cuenta este contexto, podemos proponer una serie de categorizaciones:

Arquitecto técnico

Se trata de profesionales con amplios conocimientos técnicos, conocedor del negocio de los proyectos y que, probablemente, esté asignado a uno o varios proyectos al mismo tiempo. Algunas de sus responsabilidades suelen ser: definir los lineamientos de diseño, su arquitectura y demás cuestiones técnicas de los proyectos.

Arquitecto funcional

Tienden a ocupar el rol de team leader y, a su vez, de líder técnico. Manejan el project y planifican junto al PM las iteraciones. Suele representar un canal de comunicación fluida entre el PM y los equipos de desarrollo. Validan diseños; guían a los desarrolladores, para que cumplan con las expectativas de calidad tomando métricas, organizando y promoviendo la documentación y las buenas prácticas; aseguran que el proyecto no se desvíe de la arquitectura previamente definida.

Arquitecto Corporativo

Unifica los dos casos mencionados anteriormente; pero con algunos agregados. Este modelo, tomado sobre la base que propone Bredemeyer Consulting , es al que apunta Epidata Consulting para sus arquitectos de software.

Probablemente, en la literatura referida al tema se logre recopilar una mayor cantidad de perfiles o roles de arquitectos. Esta mayor variedad, en general, apunta a grandes organizaciones, donde cada función está claramente dividida y, sobre todo, limitada, transformando al arquitecto en un ente con responsabilidades restringidas.

Rol de los arquitectos

Como base, el rol de los arquitectos suele comprender las siguientes tareas:

definición de las vistas de la arquitectura de una aplicación (o sea, CREAR la arquitectura, ya que la arquitectura, en pocas palabras es un conjunto de vistas de alto nivel);

dar soporte técnico-tecnológico a desarrolladores, clientes y expertos en negocios;

conceptualizar y experimentar con distintos enfoques arquitectónicos;

crear documentos de modelos y componentes y especificaciones de interfaces;

validar la arquitectura contra requerimientos, suposiciones;

Y además:

tener una dosis de estrategia y política, o sea, ser, en parte, un CONSULTOR.

De esta forma logramos unificar el arquitecto técnico con el arquitecto funcional, resultando un arquitecto corporativo. Una figura que probablemente se ajuste a cualquier realidad (adaptando algunos puntos específicos de sus tareas).

Dominios de los arquitectos

En el rol cotidiano de los arquitectos, existen varias tareas o dominios (más allá de las tareas propias incluidas en el ciclo de vida de un proyecto en particular) en los que suelen estar enfocados los arquitectos y que es conveniente determinar. Estos son:

tecnología

enfocado más en los objetivos de la organización que en las decisiones técnicas

creación de modelos problema/solución

exploración de alternativas de soluciones

preparación de documentos

convencer y comunicar de la factibilidad de las decisiones técnicas a los sponsors y stake holders (cache)

estrategias de negocios:

claro conocimiento de la estrategia de negocio de la organización, de los ciclos de planificación, proceso de toma de decisiones; conocimiento del contexto de la organización (competencia, productos, factores principales que afectan el éxito de la organización)

todo esto se resume en VENDER, pero no desde el punto de vista comercial, sino mas bien, desde el punto de vista de la actitud,

la comunicación y lo valores de calidad trasmitidos.

políticas de la organización:

conocer los principales stake holders (cache) de la organización. Especialmente, saber lo que ellos quieren y necesitan; mantener una comunicación fluida con éstos.

generación de reportes y comunicación de resultados.

liderazgo:

tener una visión del contexto

toma de decisiones

selección y creación equipos

motivador

tener carisma y credibilidad

compromiso y dedicación

evangelización tecnológica

puente entre desarrolladores, PM's y expertos de negocio.

Sabemos que los arquitectos también forman parte del proceso de desarrollo de un proyecto. Durante este proceso, las fases comúnmente reconocidas como más importantes en la actuación del Arquitecto de Software son:

pre-diseño:

entender el alcance del proyecto

entender los puntos más importantes del diseño: validar y manejar requerimientos y expectativas del cliente

análisis de dominio:

entender en detalle los requerimientos del cliente

crear bocetos de los comportamientos deseados del sistema

diseño esquemático:

definir el look&feel

si es necesario, construir prototipos

desarrollo de diseño:

ampliar los detalles y refinar el diseño para llegar al diseño final

finalizar todos los diseños

documentos del proyecto:

soporte a desarrolladores: lidiar con problemas concretos, revisión de código para controlar la calidad, ver cómo funcionan (o no) las cosas

definir el proceso de desarrollo, los roles de los miembros del team y la secuencia de construcción de la aplicación

especificar metodologías y tecnologías.

definir todos los detalles necesarios para todos aquellos que construirán la aplicación

contratación o staffing:

seleccionar desarrolladores

si el desarrollo es tercerizado, participar en la elección del proveedor

construcción:

asegurar que la visión del cliente sea mantenida y respetada durante el desarrollo

revisar y validar los diseños de nivel de construcción si la complejidad de los mismos lo amerita

diseñar modificaciones pedidos por el cliente.

participar en el testeo y aceptación de la revisiones solicitadas por el cliente

post construcción:

asistencia en la migración del sistema nuevo (implementación)

puede llegar a manejar el entrenamiento de los usuarios nuevos

definir procesos de mantenimiento

También existen una serie de adjetivos que, probablemente, terminen explicando la forma de ser y actuar de los arquitectos. Aunque más que características, se podría decir que son requisitos:

visionario: saber identificar las oportunidades que se le presentan. Crear y mantener una visión del modelo de la solución.

analítico: comprensión y validación de especificaciones y modelos.

comunicativo: frecuentemente "puente" entre distintos jugadores de la organización

decisivo: toma de decisiones críticas.

responsable: actitud ejemplar en el equipo de trabajo. Comprometido con "su creación".

orientado a aprender: para cumplir con una de las metas: la evangelización. Es imprescindible la actualización y capacitación constantes en todas las área que le competen (management, tecnología, metodologías, etc.)

jugador de equipo: predisposición para cooperar y convivir con distintos perfiles.

"bien hablado": correcto uso del lenguaje, por la necesidad constante de comunicar de forma eficiente.

Esperando la estandarización

Desde sus orígenes, en la universidad Carnegie Mellon (cache), la arquitectura de software espera que llegue finalmente una verdadera especificación que sea válida y aplicable en todos los contextos empresariales conocidos. La diversidad de opiniones y experiencias llevan a que varias organizaciones internacionales intenten (por ahora en vano) crear un modelo de arquitecto y arquitectura.

Por ahora, queda a criterio de cada organización el moldeo y “customización” de sus propios arquitectos. Es importante entender que no cualquier profesional puede ser nombrado arquitecto, ya que este punto nos ha llevado al día de hoy, a necesitar un ente superior que ponga un poco de claridad sobre el tema.

Nombrando sólo algunas de estas organizaciones, encontramos a la Enterprise-wide IT Architecture (EWITA ) (con la participación de Bredemeyer Consulting ) y la Worldwide Institute of Software Architects WWISA ) que con sus trabajos difunden el “buen uso” de la arquitectura de software y sus actividades relacionadas.

No hay comentarios:

Publicar un comentario