Senior Software Engineer (Non-Realtime Controllers)
Posted
- Quantum is now, and it’s built here
- Oxford Ionics, now part of IonQ, is pioneering the next generation of quantum computing
- Using our world-leading trapped-ion technology, we’re building the most powerful, accurate and reliable quantum systems to tackle problems that today’s supercomputers cannot solve
- We’re looking for an enthusiastic and highly technical Senior Software Engineer for our non-realtime controllers team who will thrive in our dynamic cross-disciplinary environment
- You will be working closely with our skilled software engineers, our systems teams who operate the physical quantum computers, and our world-leading quantum scientists to build and operate the software that controls the hardware surrounding our quantum computers
- Previous exposure to quantum systems is not required
- You will own areas of the hardware control surface end to end, from the device protocol up to a service running reliably across our fleet
- This is a hands-on engineering role and stays that way as you grow
- A working quantum computer is far more than the ion trap and its real-time control electronics
- It depends on a fleet of supporting hardware, including cryogenic compressors, vacuum pumps, power supplies, lasers, temperature controllers, wavemeters and cameras, that has to be kept observable, controllable and reliable
- The timing-critical operations such as gate waveforms and ion transport run on dedicated real-time FPGA systems, while this team owns everything that does not need hard timing guarantees
- These services run on general-purpose Linux hardware and must be rock-solid, because a failed compressor or an un-noticed pressure drift takes a whole machine offline
- This is a hands-on engineering role, balancing delivery of your own areas with support for the teams and scientists who depend on them
- Own a group of device controllers end to end, covering API design, implementation, rollout and ongoing operational health
- Make services robust against the ways real instruments fail
- Bring devices onto our current framework, and roll the result out across the fleet without disrupting running experiments
- Improve the shared framework where a problem turns out to be common to many controllers rather than specific to one
- Work closely with the systems teams and scientists who depend on these services, and strengthen observability, health checking and alerting
- Raise the standard of the code around you through review, and bring less experienced engineers on by working alongside them
- To be successful, you will need experience working with Linux based systems and interfacing with hardware, and a track record of making software behave well against unreliable external dependencies. We’re looking for someone who can own a problem area with little supervision and judge where robustness is worth the effort
- Experience of hardware and instrument protocols and interfaces such as SCPI, Modbus, serial and Ethernet
- Excellent communication skills both within software and across disciplines, and an interest in helping other engineers get better at the craft without wanting to stop building yourself
- Experience designing and operating networked services such as gRPC or REST, with a real grasp of error handling, observability and failure modes
- Comfortable owning the production behaviour of what you build, not just its correctness in test
- Strong systems engineering skills. Our controllers are written in Rust, so either solid Rust experience or deep proficiency in another systems language and the appetite to work in a Rust codebase, including async programming
