Diseñar, desarrollar y evolucionar componentes en C con foco en calidad, rendimiento y mantenibilidad, participando activamente en decisiones técnicas y liderando mejoras de arquitectura, refactorizaciones y estándares de desarrollo.
\n
- Desarrollar y mantener software en C (C99/C11 según aplique), asegurando robustez y rendimiento.
- Diseñar soluciones con enfoque de arquitectura: modularidad, separación de responsabilidades, interfaces claras y mantenibles.
- Aplicar buenas prácticas: gestión de memoria, manejo de errores, concurrencia si aplica, y estándares de código.
- Depurar problemas complejos (crashes, memory leaks, race conditions, issues de rendimiento) usando herramientas de diagnóstico.
- Participar y liderar code reviews, definición de guidelines, refactorizaciones y reducción de deuda técnica.
- Colaborar con otros equipos (QA, producto, DevOps/Infra) para asegurar entregas consistentes.
- Mentoring y acompañamiento técnico a perfiles mid/junior cuando sea necesario.
Requisitos imprescindibles (Must-have)\n
- +5 años de experiencia competente programando en C (C “real”, nivel senior).
- Dominio de fundamentos: punteros, estructuras, memoria dinámica/estática, ownership, alignment, etc.
- Experiencia diseñando software mantenible en C: diseño modular, APIs internas, abstracciones razonables, reutilización.
- Conocimientos sólidos de patrones/principios de diseño aplicables a C (modularidad, desacoplo, responsabilidad única) y nociones de arquitectura de software.
- Experiencia con herramientas de desarrollo y depuración (según entorno): GDB/LLDB, sanitizers, Valgrind u otras.
- Capacidad para liderar iniciativas técnicas (proponer soluciones, priorizar, ejecutar y mejorar el estándar del equipo).
- Trabajo con control de versiones (Git) y buenas prácticas de colaboración.
- Experiencia con CI/CD (automatización de builds, tests, releases).
- Docker y Kubernetes (especialmente si el software se empaqueta/despliega en contenedores).
- Experiencia en Azure (VMs, contenedores, pipelines, observabilidad, etc.).
- Desarrollo de herramientas internas (CLI, utilidades, automatizaciones para el equipo).
- Experiencia con microservicios y diseño/consumo de APIs REST y/o GraphQL (si el producto expone/consume servicios).
- Conocimientos de networking (TCP/IP, sockets), multithreading (pthreads) o IPC (según el producto).
- Estándares de calidad/seguridad: static analysis, sanitizers, MISRA/CERT (si aplica al dominio).