ESH StB-Examensvorbereitung GmbH
Agile Robots SE
Ingeniero/a Senior de Rendimiento en C++ (todos los géneros)
Sobre el puesto
En Agile Robots, creamos potentes marcos de software para orquestar sistemas robóticos complejos y resolver tareas desafiantes. Las soluciones se venden a diversos clientes internacionales para permitirles controlar sus celdas de trabajo robóticas. La integración fluida y el despliegue escalable son objetivos clave.
AgileCore está diseñado para ser una plataforma escalable que soporte múltiples proyectos en paralelo. Eso solo funciona si la plataforma subyacente escala con ellos: si se mantiene rápida, segura para subprocesos (thread-safe) y fácil de diagnosticar a medida que se multiplican los proyectos, los dispositivos y las condiciones operativas.
Buscamos un/a Ingeniero/a Senior de Rendimiento en C++ para unirse a nuestro equipo central de AgileCore Runtime. Este es un puesto de perfil en T dentro de un equipo senior pequeño: primero eres un miembro pleno del equipo central, contribuyendo al Runtime, revisando las contribuciones de los equipos que construyen sobre nuestra plataforma y compartiendo nuestras tareas de soporte y lanzamiento; y, dentro del equipo, te haces cargo de la práctica de rendimiento y estabilidad como tu especialización.
En cuanto a la especialización, impulsarás el rendimiento del núcleo del Runtime (el Blackboard, el Motor de Comportamiento y las rutas de ejecución subyacentes), harás que el sistema sea demostrablemente seguro para subprocesos bajo carga y lograrás que los fallos en el campo sean rápidos de diagnosticar. Eres responsable de la práctica: la metodología, las herramientas, los benchmarks, las auditorías y la formación. Trabajarás mano a mano con el arquitecto de la plataforma, quien posee los presupuestos de rendimiento y los contratos de interfaz de ruta crítica a nivel de arquitectura; tú convertirás esos presupuestos en una realidad medida y aplicada, y los moldearás con tus hallazgos. Establecerás el estándar de rendimiento, concurrencia y resolución de problemas, y elevarás la capacidad del equipo para cumplirlo sin ralentizar el desarrollo de funciones. Este es un puesto orientado a la entrega, no a la investigación: el éxito se mide en mejoras fusionadas, escalaciones de campo cerradas y puertas de regresión en verde, no en tablas de clasificación de microbenchmarks. Optimizamos según el presupuesto que necesita el producto, no hasta cero.
Por qué este puesto
- Infraestructura de rendimiento desde cero: las suites de benchmarks, los presupuestos y las puertas de regresión de CI son tuyos para construir, no para heredar.
- Un problema físico y medible: tu perfilado y tus benchmarks se ejecutan contra robots reales en nuestros equipos de hardware-in-the-loop, donde los plugins de terceros se encuentran con bucles de control de proveedores de 1 kHz.
- Un equipo central senior pequeño con verdadera propiedad: tu trabajo se convierte en el estándar sobre el que se construye toda la plataforma.
Tus responsabilidades
- Responsabilizarte de la latencia, el rendimiento y el jitter de los componentes principales del Runtime (el Blackboard, nuestro plano de datos tipado y suscribible en proceso, y el Motor de Comportamiento, árbol de ejecución de habilidades, manejo de disparadores) y llevar las mejoras de principio a fin: desde el gráfico de llama (flame graph) hasta el cambio fusionado y una puerta de regresión que lo mantenga corregido.
- Construir la base de tiempo real para la plataforma: políticas y prioridades de programación, afinidad de CPU, asignación y disciplina de fallos de página en rutas críticas, y estructuras sin bloqueos (lock-free) donde valga la pena.
- Ser un miembro pleno del equipo central de Runtime: desarrollar componentes principales, revisar contribuciones de los equipos de funciones que construyen sobre la plataforma y participar en las rotaciones de soporte y lanzamiento del equipo.
- Hacer que el rendimiento sea medible y obligatorio: suites de benchmarks, presupuestos por subsistema y puertas de regresión en CI en lugar de sorpresas en el sitio del cliente.
- Ser la autoridad práctica en seguridad de subprocesos: modelos de propiedad, jerarquías de bloqueo, razonamiento sobre el orden de memoria y eliminación de clases enteras de condiciones de carrera mediante sanitizers, pruebas de estrés y de carga (soak testing).
- Asegurar que el producto se mantenga en todo el dominio operativo en el que se utiliza: cada dispositivo soportado, perfil de carga y topología de despliegue, no solo las configuraciones que aparecen en una demostración.
- Mejorar la capacidad de depuración para que el despliegue en fábrica y el soporte escalen: rastreo, registro estructurado, métricas de tiempo de ejecución, manejo de bloqueos y volcados de memoria (core-dumps), símbolos para binarios de lanzamiento eliminados.
- Llevar el rendimiento y la estabilidad al SDK de Plugins y su C ABI, donde los plugins de terceros se encuentran con bucles de control de proveedores que se ejecutan a 1 kHz.
- Investigar problemas complejos a través de los límites de software, SO, red y hardware, incluyendo las escalaciones más difíciles del campo.
- Colaborar con el arquitecto de la plataforma en el diseño crítico para el rendimiento: proponer e implementar mejoras dentro de los presupuestos de rendimiento y los contratos de interfaz de ruta crítica de la plataforma, e incorporar las mediciones en cómo se establecen esos presupuestos.
- Mentorear a ingenieros en rendimiento, concurrencia y resolución de problemas a través de revisiones de código, sesiones profundas, discusiones de diseño y orientación técnica, sin generar sobrecarga.
Habilidades esenciales
- 7+ años de experiencia profesional en ingeniería de software, con un sólido desarrollo práctico en C++.
- Residente en Múnich o dispuesto a reubicarse; apoyamos la reubicación y el patrocinio de visados.
- Sólidas habilidades de comunicación escrita y verbal en inglés.
- Sólida experiencia con C++ moderno, idealmente C++17 o C++20, incluyendo plantillas y diseño en tiempo de compilación.
- Ingeniería de rendimiento probada: perfilado antes de optimizar, lectura de gráficos de llama y contadores de hardware, y razonamiento sobre la latencia de cola y el jitter en lugar de promedios.
- Un historial de trabajo de rendimiento entregado: mejoras que llevaste desde la medición hasta el código fusionado y la aplicación sostenida en CI, no benchmarks aislados.
- Sólida experiencia con programación multihilo y concurrente: modelos de memoria, atómicos, patrones sin bloqueos y el criterio para saber cuándo un mutex simple es la respuesta correcta.
- Se prefiere encarecidamente la exposición a sistemas de tiempo real o casi tiempo real en Linux: políticas de programación, preempción, inversión de prioridad, afinidad de CPU y las fuentes habituales de jitter. La experiencia previa profunda en RT es una ventaja, no un requisito excluyente; los fundamentos del rendimiento importan más.
- Sólidas habilidades de depuración utilizando GDB, sanitizers (ASan/TSan/UBSan), Valgrind, perf, strace, ltrace, tcpdump y volcados de memoria (core dumps).
- Sólida comprensión de los aspectos internos de Linux: procesos, hilos, IPC, señales, programación, gestión de memoria, almacenamiento en búfer y enlace dinámico.
- Experiencia con CMake y cadenas de herramientas de compilación (GCC, Clang).
- Experiencia escribiendo pruebas automatizadas, incluyendo pruebas unitarias, pruebas de integración y estrategias de prueba relacionadas con el hardware, así como benchmarks y pruebas de estrés/carga.
- Una mentalidad senior pragmática y orientada al equipo: optimizas las cosas que importan para el producto y te detienes cuando se cumple el presupuesto; compartes revisiones, soporte y tareas de lanzamiento en un equipo senior pequeño; haces de tu especialidad una capacidad de todo el equipo en lugar de un silo, y preferirías entregar una mejora del 30% esta semana que discutir una mejora del 3% durante un mes.
Habilidades beneficiosas
- Aspectos internos de bases de datos: estructuras de almacenamiento e índice, control de concurrencia, MVCC, diseño de transacciones y caché; nuestro Blackboard es esencialmente un almacén tipado en proceso.
- Contribuciones a software de alto rendimiento o de sistemas: asignadores, runtimes, motores, bases de datos, pilas de red, kernels.
- Antecedentes en baja latencia: sistemas de trading, audio o video en tiempo real, telecomunicaciones o control de movimiento embebido.
- Amplia metaprogramación de plantillas y computación en tiempo de compilación.
- Conocimiento de Linux en tiempo real, programación del kernel, manejo de IRQ, límites entre kernel/espacio de usuario y medición de latencia con cyclictest, ftrace o eBPF.
- Diseño de ABI de C++ y API de plugin/biblioteca compartida que se mantenga estable a través de compiladores y versiones de cadenas de herramientas.
- Experiencia práctica con perfiladores de instrumentación como Tracy (lo usamos), así como perf, VTune o similares.
- Aspectos internos de Windows y la cadena de herramientas MSVC; partes de la plataforma también se distribuyen en Windows.
- Fundamentos de redes: TCP/IP, UDP, sockets, latencia, almacenamiento en búfer y flujo de paquetes.
- Experiencia en el diseño de arquitecturas mantenibles (propiedad clara, separación de responsabilidades, capacidad de prueba) en sistemas limitados por el tiempo, no solo por las funciones.
Qué ofrecemos
- Una empresa de alta tecnología dinámica, combinada con solidez financiera e inversores de clase mundial.
- Únete a un equipo interdisciplinario e internacional con más de 60 nacionalidades en un entorno de trabajo colaborativo.
- Muchas oportunidades de desarrollo a medida que seguimos creciendo.
- Tareas desafiantes y proyectos impactantes junto a expertos que permiten el crecimiento profesional y personal.
- Programa de beneficios corporativos que cubre salud, movilidad y aprendizaje por 100€ netos al mes.
- Instalaciones de oficina modernas con una terraza en la azotea con vistas a Múnich, bebidas y frutas gratuitas, y eventos regulares de la empresa que contribuyen a un buen entorno de trabajo.
Sobre nosotros
Agile Robots SE es una empresa internacional de alta tecnología con sede en Múnich, Alemania, con un centro de producción en Kaufbeuren y más de 3500 empleados en todo el mundo. Nuestra misión es cerrar la brecha entre la inteligencia artificial y la robótica mediante el desarrollo de sistemas que combinan tecnología de detección de fuerza-momento de última generación y tecnología de procesamiento de imágenes líder en el mundo. Esta combinación única de tecnologías nos permite ofrecer soluciones robóticas fáciles de usar y asequibles que permiten un ensamblaje de precisión inteligente.
Esto es posible gracias a nuestros empleados, que sacan lo mejor de sí mismos cada día con creatividad y entusiasmo. ¡Forma parte de este equipo y da forma al futuro de la robótica con nosotros!
Estamos orgullosos de nuestra diversidad y agradecemos tu solicitud independientemente de tu género e identidad sexual, nacionalidad, etnia, religión, edad o discapacidad.
