Responsabilidad / Principales competencias
Es el responsable de la definición y diseño de la arquitectura.
Entre sus competencias está:
Definir la arquitectura de los sistemas tomando las decisiones de diseño de alto nivel y estableciendo los estándares técnicos, incluyendo plataformas, herramientas y estándares de programación, teniendo en cuenta los requisitos funcionales, no funcionales y las necesidades del negocio.
Nombres de cargos similares
Diseñador de Software, Diseñador de Soluciones, Desarrollador Senior.
Misión de la ocupación
En cooperación con el Líder de Proyecto, participa en la toma de decisiones adecuadas para lograr una arquitectura del sistema que garantice un mejor desempeño, flexibilidad, mantenibilidad, robustez, reuso o las cualidades que se pretendan de la aplicación.
Actividades que realiza
- Negociar con el propietario de la aplicación y el líder de proyecto para tomar las decisiones de diseño de alto nivel que correspondan.
- Seleccionar el software: Seleccionar la tecnología a utilizar en conjunto con el líder de proyecto; y definir y revisar estándares y normas aplicables al diseño y construcción, brindando coaching técnico al equipo de desarrollo.
- Diseñar la arquitectura: Conducir la construcción del modelo de arquitectura/diseño, subdividiendo aplicaciones complejas en partes o componentes menores, más fáciles de manejar.
- Realizar un seguimiento del proceso de desarrollo para asegurarse que sus instrucciones se implementen en forma adecuada; y registrar los cambios de arquitectura que se produzcan.
- Asegurar la calidad: Medir la performance de la aplicación y conducir pruebas en relación a la performance, seguridad, etc.
- Facilitador: Colabora con otras áreas como seguridad informática, base de datos, operaciones, el equipo de mantenimiento, etc.
- Liderazgo Técnico: Capacidad para asumir la dirección técnica y asegurar todos los aspectos de la arquitectura con responsabilidad y autoridad. Poder realizar coaching y mentoring sobre problemas técnicos, ayudando a la evolución profesional del equipo de programadores.
- Conjuntamente con el líder de pruebas, definir las pruebas de los requisitos no funcionales y de integración que se realizarán y efectuar un seguimiento de las mismas.
Estudios
Ingeniería informática o sistemas, licenciatura en sistemas o computación en curso (no necesariamente completas). El puesto requiere experiencia en el rubro.
Conocimientos necesarios, según el nivel del puesto
- Dominio de arquitectura de software, metodología de componentes y su interacción.
- Conocimiento de las tecnologías de comunicación disponibles.
- Estándares y normas a aplicar en la construcción de software de la tecnología a su cargo.
- Conocimiento en programación avanzados en varios lenguajes, arquitecturas y paradigmas.
- Manejo de herramientas para la gestión de requerimientos y ambientes de desarrollo.
- Lecto-comprensión y elementos de redacción en inglés.
- Conocimiento avanzado de Bases de Datos (tanto en la rama de programación como administración).
- Conocimiento avanzado de comunicación entre aplicaciones: SOA, Servicios Web (SOAP, REST), protocolos y lenguajes de comunicación (XML, JSON).
- Conocimientos de Ingeniería del Software.
- Prácticas de Testing y Refactoring.
- Conocimiento de metodologías de análisis como UML u otras.
- Conocimiento de metodologías ágiles como SCRUM u otras.
- Conocimiento de herramientas de control de versiones como GIT u otras.
- Conocimientos de patrones de software empresarial.
Competencias, habilidades o aptitudes deseables según el nivel del puesto
- Iniciativa
- Creatividad
- PlanificaciónyControl
- Pensamiento de Integración
- Pasión por la tecnología
- Capacidad de análisis y de síntesis para la resolución de problemas complejos
- Capacidad de trabajar en equipo, compartiendo información y conocimientos y tomando en cuenta a los usuarios
- Actualización permanente en las tecnologías a su cargo, de forma tal de proponer e instrumentar
- Gran capacidad de aprendizaje.
Ámbito ocupacional
Puede formar parte de un área de soporte a distintos proyectos o formar parte de un equipo de trabajo organizado por proyecto. Es el referente para el diseño, arquitectura y para solución de problemas complejos.
Posibles especializaciones o áreas de especialización
Aplicaciones móviles.
Requiere conocimiento de sistemas operativos y software para dispositivos, lenguajes o ambientes de programación para sistemas embebidos