¿Qué es necesario para definir la arquitectura de un sistema?
Hace tiempo que no escribimos posts relacionados con la informática y la ingeniería de software, vease ¿Por qué fracasan los proyectos informáticos? o 333, El número de la bestia. Así que hoy vamos a atizarle un poco al tema.
Si definimos que un equipo está formado por un conjunto de personas, cada una de las cuales debe desempeñar una o más funciones podemos entender rápidamente que entonces todas ellas (las personas) son importantes. Dicho esto y suponiendo que existe un buen jefe de proyecto y un buen programador en el equipo, ¿realmente tiene más responsabilidades o es más importante un jefe de proyecto? Esta pregunta es complicada así que la dejo para otro día
, pero lo que si es cierto es que, al menos en España, el tema se confunde. Por lo general, una persona con la “etiqueta” de jefe de proyecto o arquitecto, siempre cobra más que un programador, por muy bueno que este sea y por muchos problemas que este resuelva.
Dando una vuelta rutinaria por ahí, me he encontrado con este gran post (por no decir gran verdad) de Masoud Kalali, ingeniero informático con gran experiencia en la arquitectura de software, miembro del NetBeans Dream Team y autor de varios libros y articulos de lo más interesante.
Lo que Masoud explica es que para definir la arquitectura de un sistema, el arquitecto, que debe especificar un sistema que satisfaga los requisitos del usuario, no sólo debe estar familiarizado con el dominio del problema si no que debe tener, al menos, conocimientos de tecnologías, frameworks, estandares y otros sistemas ya existentes en el mercado (comerciales o libres) que puedan servir como parte de la solución (sin necesidad de llevarla a cabo por el equipo).
Añade que todo este conocimiento no debe ser sólo del dominio del proyecto, si no sobre cualquier otro, ya que soluciones de otro ámbito podrían ayudar a resolver problemas del dominio en cuestión.
Aclarar, que no está diciendo que el arquitecto tenga conocimientos profundos o haya programado en todo lo que existe, nos referimos al hecho de que conozca que ciertas tecnologías, frameworks o herramientas existen y qué es lo que hacen.
Nota: Mi definición personal de una persona que debe desempeñar las funciones de arquitecto de software y no tiene ni idea es “inutil de guante blanco“, ya que no se ha manchado las manos nunca.
Y llegados a este punto, ahora me pregunto y os pregunto ¿a cuantos “inútiles de guante blanco” conocéis? ¿Alguna vez habeís estado en un reunión con dos de estos tipos y habéis oído como una le explicaba al otro que el estandar de documentos abiertos en el que trabaja la empresa X se llama OpenGL? ¿En los casos donde la arquitectura es un chiste, creeis que el éxito del proyecto dependen del arquitecto o de los programadores?
Como siempre, espero vuestros comentarios.
Entradas relacionadas:
- Bill Gates ha solicitado patentar un sistema para detener huracanes
- Windows 3.11, el sistema operativo en la nube
- GO: El lenguaje de programación de Google para sistemas
- MooneyBookers: ¿Un lugar para los estafadores?
- Herramienta para crear tutoriales para NetBeans





Información Bitacoras.com…
Valora en Bitacoras.com: Hace tiempo que no escribimos posts relacionados con la informática y la ingeniería de software, vease ¿Por qué fracasan los proyectos informáticos? o 333, El número de la bestia. Así que hoy vamos a atizarle un poco al tema…..
[...] This post was mentioned on Twitter by Guillermo Salas, astracanada.net. astracanada.net said: astracanada: ¿Qué es necesario para definir la arquitectura de un sistema? http://bit.ly/5PnvAY [...]
Buenas.
Llevo un año trabajando (y cobrando por ello) como Arquitecto de Software.
No entiendo en absoluto ese ataque frontal a los arquitectos de software, e imagino que tiene cierta relación con que, las personas con las que te has topado en tu vida que DECÍAN ser arquitectos de software, tenían mas bien poco de esa profesión… o quizás esa fue impresión.
Ahora te explico que antes de ejercer como arquitecto de software he trabajado durante mas de 8 años como desarrollador en una gran cantidad de lenguajes, varios de ellos a nivel profesional y en los dos grandes ámbitos del desarrollo (Desktop y Web).
Trabajo con soltura con Java, C# (siii sii… el de .NET), PHP, VB6, ASP[.NET], Javascript al igual que conozco lenguajes tan variopintos como el VEE (Agilent Software).
Como se indica en la guía de certificaciones de Microsoft, un arquitecto de software, debe cubrir una serie de capacitaciones (certificaciones) previas y TENER UN MÍNIMO de 10 años de experiencia.
Repito, los tipos que te has encontrado, tal y como los pintas, no tienen mucho de arquitectos de software… pero no te confundas, algunos de nosotros… nos manchamos mas las manos que algunos “programadores estrella”.
Un saludo.
Hola Paco, y muchas gracias por tu comentario.
), además de ir leyendo artículos o haciendo “pruebecullas” con nuevas herramientas (librerias, frameworks o tecnologías) pero estar al tanto de lo que hay.
Estoy de acuerdo en todo lo que dices salvo en una cosa, y es que este post no es un ataque a los “arquitectos” de software, como mucho y si me apuras a los incompetentes. Simplemente eso. si es cierto (y eso me lo recrimina Retruécano incontables veces) que mi forma de escribir suele ser un poco ácida (por no decir mal educada).
En ningún momento he querido (ni quiero) que parezca un ataque a jefes de proyecto, arquitectos, diseñadores, programadores, … de software.
Creo que es un llamamiento al sentido común. Sólo eso.
Tanto Retruécano como yo, trabajamos a caballo entre jefes de proyecto, arquitecto/diseñador y como tu bien dices programando muchas veces lo indecible, (si estuviésemos en un bar te diría más bien que parecemos putas
Lo que está claro (y esto sucede en otros ambitos de la vida) es que a mayor responsabilidad un incompetente puede “provocar” myores daños. Esto es así y no creo estar ofendiendo a nadie (salvo a un incompetente que sea consciente de que lo es).
Volviendo al post, creo que el mensaje que se dice es exactamente el mismo que tu estas comentando, y este es que un requisito necesario (aunque no suficiente) es que un arquitecto necesita tener experiencia en los “ambitos pervios” para poder realizar bien su trabajo.
De nuevo, gracias por tu aporte ya que ha sido muy constructivo y espero que nos sigas visitando.