Location: Cambridge, UK
Contract: 12 months
Working Arrangement: On-site, with work across two Cambridge locations
The Opportunity
We’re looking for a hands-on Software Engineer to support the development and reliability of a specialist data collection environment used for advanced technology research and prototyping.
You’ll work at the intersection of software engineering, hardware integration and data processing, developing and maintaining the systems that enable experimental devices to collect accurate, reliable and high-quality data.
This is an opportunity to work on technically challenging projects involving prototype hardware, distributed systems and multimodal data, collaborating with software engineers, technical specialists and researchers in a multidisciplinary environment.
What You’ll Be Doing
- Develop and maintain Python-based software supporting data collection and hardware integration.
- Build controllers and software interfaces for prototype devices, managing the data generated by them.
- Enhance web-based command-and-control tools used to operate and monitor the data collection environment.
- Improve the efficiency, accuracy and reliability of data collection workflows.
- Work with audio, video, motion sensor and other types of measurement data.
- Develop and maintain data validation, processing and post-processing tools.
- Deploy, test and evaluate updates to a distributed data collection platform.
- Build monitoring tools to track system health, identify issues and improve reliability.
- Troubleshoot on-site technical issues, investigate root causes and implement robust solutions.
- Collaborate with engineers and technical researchers to prioritise work, estimate effort and deliver maintainable software.
- Contribute to engineering standards, documentation and best practices across the wider team.
Essential experience
- A degree in Computer Science or a related discipline, or equivalent practical experience.
- At least 3 years of professional software development experience.
- Strong Python programming skills, ideally gained within large or complex software projects.
- Solid experience with Linux and shell scripting.
- Experience maintaining, troubleshooting and improving networked systems.
- Understanding of distributed systems, RESTful APIs and concurrent programming.
- Experience with FastAPI or a comparable Python backend framework.
- Working knowledge of time synchronisation across systems and devices.
- A practical, methodical approach to debugging, testing and resolving technical issues.
- Integrating software with hardware devices, multimedia sensors or experimental equipment.
- Familiarity with audio, image and video formats.
- Experience with relational databases and/or NoSQL or graph databases.
- Knowledge of software and hardware testing frameworks and methodologies.
- Experience with React or similar JavaScript frontend frameworks.
- Windows systems administration experience.
- Exposure to data validation pipelines, scientific data collection or research environments.
- Technically varied work: Combine Python development, backend engineering, hardware integration and data processing.
- Complex engineering challenges: Work with distributed systems and prototype devices in a specialist technical environment.
- Collaborative team: Partner with software engineers, technical specialists and researchers across disciplines.
- Meaningful impact: Help build the reliable systems that enable advanced research and experimentation.
