Siemens
QuEra Computing, Inc.
Ingeniero de Software Científico – Programación de Máquinas
Resumen
Este puesto ayuda a los científicos que construyen y operan los ordenadores cuánticos de átomos neutros de QuEra a programar dichas máquinas de forma eficaz. Te encargarás del mantenimiento del lenguaje específico del dominio y de la pila de compilación, construidos sobre la cadena de herramientas de código abierto Kirin, que los físicos experimentales utilizan a diario para ejecutar sus experimentos.
Trabajarás en estrecha colaboración con físicos e ingenieros de la pila de control. Ayudarás a los equipos de máquinas a convertir nuevos experimentos en programas funcionales, mantendrás la fiabilidad de la cadena de herramientas a medida que evoluciona nuestro hardware e impulsarás su integración con nuestro sistema de control. El puesto es ideal para un ingeniero al que le guste crear herramientas y, al mismo tiempo, ayudar a otros a tener éxito con ellas.
QuEra se compromete a cultivar un entorno de trabajo diverso y se enorgullece de ser un empleador que ofrece igualdad de oportunidades. Valoramos enormemente la diversidad en nuestros empleados actuales y futuros y no discriminamos (incluso en nuestras prácticas de contratación y promoción) por motivos de raza, religión, color, origen nacional, género, expresión de género, orientación sexual, edad, estado civil, estatus de veterano, estado de discapacidad o cualquier otra característica protegida por la ley.
Responsabilidades
- Mantener el lenguaje específico del dominio y su pila de compilación: clasificar problemas, corregir errores, revisar pull requests, gestionar versiones y mantener en buen estado el CI, las pruebas y las dependencias.
- Actuar como punto de contacto para los equipos de máquinas y bancos de pruebas que programan sus experimentos. Ayudarles a crear nuevos experimentos, portar programas heredados y diagnosticar problemas de compilación o tiempo de ejecución.
- Trabajar con los ingenieros de la pila de control en la integración de los programas compilados con nuestro sistema de control. Esto incluye definir y hacer evolucionar la representación del programa que se transmite entre el compilador y el sistema de control, mantener ambos sincronizados entre versiones y depurar problemas que afecten a ambos.
- Convertir los problemas de los usuarios en informes mínimos reproducibles, pruebas de regresión y correcciones específicas, y trabajar con el equipo del compilador en cambios más amplios del lenguaje o de la IR.
- Detectar y solucionar problemas de rendimiento en la compilación y ejecución de programas, como el tiempo de compilación, el tamaño del programa y la precisión de la temporización.
- Escribir y mantener documentación orientada al usuario, tutoriales, programas de ejemplo y habilidades de agentes que faciliten a los físicos la escritura de programas correctos.
- Trabajar con el equipo de control de hardware para dar soporte a nuevos tipos de canales, hardware de control y configuraciones de máquinas.
- Recopilar comentarios de los usuarios de las máquinas y convertirlos en una hoja de ruta priorizada para mejoras de usabilidad.
Cualificaciones
- Grado o Máster en Informática, Física, Ingeniería Eléctrica o un campo relacionado, o experiencia profesional equivalente.
- Sólidas habilidades en Python, incluyendo sugerencias de tipo (type hints), empaquetado y pruebas (pytest).
- Disfrutar creando herramientas para científicos que no son desarrolladores de software profesionales y trabajando en estrecha colaboración con ellos. Comunicación clara, tanto escrita como verbal.
- Experiencia trabajando entre equipos: acordar interfaces, coordinar cambios entre componentes y depurar problemas que abarcan varios sistemas.
- Experiencia en la depuración de código desconocido y en la reducción de fallos complejos a reproducciones mínimas.
- Familiaridad con el ciclo de vida completo del software: control de versiones, revisión de código, pruebas, CI/CD, registro, perfilado, depuración y documentación.
Cualificaciones preferentes
- Experiencia con compiladores, lenguajes específicos del dominio o representaciones intermedias basadas en SSA (la experiencia con Kirin, MLIR o LLVM es una ventaja).
- Antecedentes en física experimental, especialmente en control de laboratorio de física atómica, molecular y óptica (AMO) (AWGs, AOMs/AODs, DDS, sistemas de temporización, cámaras).
- Experiencia con sistemas de control en tiempo real o integrados, FPGAs o marcos de control de experimentos como ARTIQ o Labscript.
- Experiencia con sistemas de programación o ejecución en tiempo real, como planificadores de tiempo de ejecución, sistemas de streaming o de despacho de instrucciones.
- Experiencia con C++ o Rust.
- Contribuciones a bibliotecas de código abierto.
- Experiencia en el uso de agentes de codificación de IA en un flujo de trabajo de desarrollo.
El rango salarial base aproximado para este puesto es $102,400 - $166,400.
Supervisamos constantemente los datos del mercado externo y actualizamos los rangos salariales base en consecuencia. Determinamos las decisiones de compensación base en función de varios factores, incluyendo la ubicación geográfica, los conocimientos específicos del puesto, las habilidades y/o la experiencia. Además de nuestras ofertas de salario base, también proporcionamos subvenciones de capital (equity) para todas las nuevas contrataciones.
#LI-NB1
