Novedades

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.

Misión de la ocupación

Participar del proceso de programación/implementación teniendo como entrada las especificaciones de software y ajustándose a tiempos y estándares de calidad y trabajo de la organización y del proyecto.

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.

Estudios

Ingeniería informática; licenciatura en sistemas o computación; técnico superior en desarrollo de software (estudios finalizados o en curso), técnico secundario en programación.

Conocimientos necesarios, según el nivel del puesto

  • 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 según el nivel del puesto

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

Ámbito ocupacional

Forma parte de un equipo de trabajo organizado por proyecto o por práctica donde cada uno asume la responsabilidad de resolver en tiempo y con calidad su parte, teniendo que satisfacer pruebas de conjunto y pidiendo o brindando colaboración cuando se encuentran problemas. En empresas donde se trabaja con objetivos y medidas de productividad, es posible el teletrabajo.

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.