top of page
fondo_08.jpg

Ds - Desarrollo de Software
Desarrollador de Software

Responsabilidad / Principales competencias

Es el responsable por el desarrollo de las piezas de software. Entre sus competencias está diseñar, producir o mantener (programar, adaptar e integrar) componentes o subconjuntos de software (clases, módulos, pantallas, rutinas, subsistemas, programas en general) conforme a especificaciones (funcionales y técnicas) para ser integrados en aplicaciones.

Nombres de Cargos Similares

Programador, Analista-programador, Developer.

Actividades que realiza

  • Comprender el requerimiento de software.

  • Modelizar y refinar especificaciones a fin de determinar un diseño detallado para implantar la

  • funcionalidad requerida.

  • Construir o adaptar clases, módulos u otras piezas de software. Reutilizar componentes existentes integrándolos con código propio. Verificar los programas producidos probándolos en forma unitaria.

  • Revisar el código para resolver defectos o mejorarlo.

  • Documentar los programas de acuerdo a estándares. Tanto con documentos funcionales y de arquitectura, como con comentarios en el propio código.

  • Investigar nuevas tecnologías, cumplir con los procesos definidos y proponer mejoras.

  • Entregar a través de la totalidad del ciclo de vida de aplicaciones concepto, diseño, desarrollo, implementación, prueba y soporte.

  • Mantener las aplicaciones productivas, corregir errores e implementar nuevas funcionalidades.

  • Cumplir con las entregas según las estimaciones de tiempo realizadas.

  • Trabajar en estrecha colaboración con otros desarrolladores.

  • Trabajar directamente con los desarrolladores y gerentes de producto para conceptualizar, construir, probar y realizar productos.

  • Reunir los requerimientos de funcionalidad y traducir esas necesidades en soluciones funcionales elegantes.

  • Construir prototipos en fase de alcance técnico de los proyectos.

  • Optimizar el rendimiento de las aplicaciones.

  • Trabajar para construir aplicaciones con foco en la funcionalidad.

  • Crear interfaces de usuario atractivas.

  • Detectar oportunidades de mejora o conformidades y observaciones para incluirlas en el sistema de mejora continua.

  • Participar en la definición y revisión de estándares y normas aplicables al diseño y construcción.

Conocimientos necesarios

  • Algoritmos y estructuras de datos.

  • Dominio de lenguajes de programación (Paradigmas: Estructurados, Orientado a Objetos, etc.).

  • 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 de Bases de Datos y lenguaje de consultas estructurado.

  • Conocimiento de Servicios Web.

  • Conocimiento de SOA: Aplicaciones orientadas a servicios.

  • Conocimiento de protocolos y lenguajes de comunicación como XML, JSON.

  • Conocimientos de Ingeniería del Software.

  • Nociones de arquitectura de software y aplicaciones N-Capas.

  • Prácticas de Testing y Refactoring.

  • Conocimiento de metodologías de análisis como UML u otros.

  • Conocimiento de metodologías ágiles como SCRUM u otros.

  • Conocimiento de herramientas de control de versiones como GIT u otros.

  • Conocimientos de patrones de software empresarial.

Competencias, habilidades o aptitudes deseables

  • Iniciativa, proactividad y capacidad de análisis para la resolución de problemas.

  • Flexibilidad en sus enfoques de las situaciones y búsqueda permanente de la calidad.

  • Actuar ateniéndose a un orden propio que le facilite el acceso a lo que pueda necesitar.

  • Conocimientos, metodologías y modelos de calidad para la industria del software.

  • Capacidad de trabajar en equipo, estando dispuesto a preguntar, a compartir información y conocimientos y a tomar en cuenta a los usuarios.

Otras habilidades interpersonales deseables

  • Creativo

  • Buen manejo del tiempo

  • Capacidad de resolución de problemas

  • Gran capacidad de aprendizaje

  • Capacidad de autogestión

  • Actitud, responsabilidad y compromiso

  • Orientación al Cliente Interno/Externo

  • Orientación a Resultados

  • Actitud crítica, de perfeccionamiento y actualización permanente

  • Capacidad para trabajar en forma cooperativa y constructiva, en equipos multidisciplinarios

  • Capacidad de abstracción: comprender la “big picture” más allá de detalles de implementación

  • Permanente capacidad para derivar de la práctica, elaboraciones conceptuales.

Posibles especializaciones o áreas de especialización

  • Desarrollador de aplicaciones clientes-servidor:

  • Diseñar, programar, implementar y mantener aplicaciones de escritorio.

  • Programar con capacidad de conexión con un servidor de aplicaciones.

  • Sólidos conocimientos de tecnologías de comunicación de aplicaciones distribuidas.

  • Sólidos conocimientos de consultas avanzadas en bases de datos robustas con gran volumen de información.

  • Desarrollador Web

  • Diseñar, programar, implementar y mantener aplicaciones Web Front-end y Back-End

  • Sólidos conocimientos en HTML, CSS, JavaScript y extensiones de JS como jQuery u otros

  • Conocimiento de protocolos de internet (ej: HTTP, HTTPS, FTP, TELNET, etc)

  • Conocimiento de lenguajes de estructuras y transferencias de datos serializados como XML, JSON

  • Conocimiento de programación asincrónica y servicios web: AJAX, SOAP, Rest API

  • Conocimiento de testing funcional y de stress de aplicaciones web

  • Capacidad de desarrollo de interfaces web responsivas para distintos tipos de pantallas

  • Conocimientos de Seguridad Web. Técnicas de prevención de ataques por SQL Injection y XSS

  • Desarrollador Juegos / Aplicaciones Lúdicas

  • Analizar y desarrollar el código fuente a partir de stories, improvements y bugs

  • Colaborar con las tareas de testing de los juegos desarrollados, creando casos de prueba automatizados cuado sea necesario y eventualmente creando issues o haciendo seguimiento de los mismos o el cierre.

  • Participación en el Basecamp del proyecto de ser necesario

  • Desarrollo y generación de ideas para nuevos juegos

  • Desarrollador Aplicaciones móviles

  • Participar en la definición de la interfaz gráfica para móviles

  • Conocer sobre el desarrollo de apps móviles para las diferentes tecnologías nativas (ios, android, windows)

  • Integración entre desarrollo mobile y desarrollo web. Comunicación un servidor web a través de API Rest.

  • Trabajar junto a los desarrolladores web para crear y mantener un marco sólido para soportar las aplicaciones móviles y web

  • Trabajar con los desarrolladores de front-end para construir la interfaz con el foco en las características de usabilidad

  • Crear interfaces de usuario atractivas, específicas del dispositivo y experiencias

  • Normalizar la plataforma para entregar a través de múltiples marcas con mínima duplicación de esfuerzos

  • Mantenerse al día sobre las últimas tendencias del sector en las tecnologías móviles

  • Desarrollador de sistemas embebidos.

  • Conocimientos avanzados de Electrónica Digital (Multímetro, Osciloscopio, Soldadura, Ley de Ohm, Resistencias, Capacitores, Semiconductores, Circuitos Integrados)

  • Concepto de ánodo y cátodo, Multiplexación, Transistores

  • Manejo de sensores para tomar información del medio ambiente (luz, temperatura, humedad, humo, etc.)

  • Lectura de señales digitales (Digital Read, Pulsador, Internal Pull-Up, Pull-Up / Pull-Down, Interrupciones)

  • Herramientas y protocolos de comunicación (Comunicación Serial, Bit / Bytes, Bluetooth, Wifi)

  • Conocimientos de procesadores cortex

  • Desarrollo de sistemas sobre placas open hard como Arduino o Raspberry u otros

  • Arquitectura de Integración por Serie

  • Memoria SD, Flash, EEPROM

  • Request / Response HTTP

  • Configuración de Router

  • Arquitectura de Integración por Ethernet

  • Domótica, Robótica, Internet de las cosas.

Diferencias por nivel

Nivel: Competencias

Nivel 1 - Trainee: No requiere experiencia previa, requiere capacitación y supervisión.

Nivel 2 - Junior: Tiene alguna experiencia, pero escasa autonomía. A menudo requiere apoyo para completar asignaciones que no sean rutinarias.

Nivel 3 - Semisenior: Tiene experiencia en su campo de ocupación e independencia para abordar problemas conocidos; puede descomponer problemas, buscar posibles soluciones y tiene idea del conjunto del proyecto.

Nivel 4 – Senior: Cuenta con una experiencia (más de 4 años) variada, gran autonomía y capacidad de brindar coaching a otros; comprende la arquitectura y sabe preguntar y completar especificaciones incompletas; sabe estimar su esfuerzo. Puede participar del diseño y realizar revisiones del código de otros miembros, asumiendo otras responsabilidades.

Desarrollo

Desarrollo

Análisis

Diseño

Calidad

Soporte

Im

Implementación

Co

Comunicación

bottom of page