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.