Research Software Engineer

Cambridge /
Research /
Please apply if you love doing research, but love writing software more, and want to help build an organisation that makes a positive global impact on society and the environment.

The Research Team at Invenia Labs investigate novel machine learning models and algorithms to optimise electricity grids, with a view to combating climate change. Research Software Engineers (RSEs) are members of the Research Team who specialise in software engineering, to make these advances possible.

RSEs build and maintain scientific software to enable high quality research. They design and build tools with a focus on code quality and efficiency. They have a good understanding of software engineering and design, while also understanding numerical methods, scientific computing, and experimental best practices. They may also work directly on research projects, and are encouraged to participate in the wider research and development communities. As well as enhancing our internal tools, the RSE team makes extensive open source contributions to make life better for researchers everywhere. 

The RSE team is uniquely placed to bridge the world of software engineering and research, and is typically involved in many diverse projects. The team enhances communication between our Research and Development teams.

Role Description

    • Design, implement, test, review, debug, and optimise software for conducting research.
    • Assist in the development of algorithms and models in pursuit of Research goals.
    • Spend a majority of time building tools to help others do research.
    • Contribute to the development of high quality investigative code being used to research new algorithms or to analyse data
    • Collaborate with researchers and developers asynchronously across multiple time zones to meet research goals.
    • Engage with the wider JuliaLang and ML community through attending conferences and seminars.

Required Qualifications

    • STEM postgraduate degree (MSc/MEng or PhD).
    • Must have 3+ years experience working in a similar role in the industry setting.
    • Experience with numerical programming in Julia, Python, MATLAB, or R.
    • Knowledge of machine learning, statistics, probability theory, or optimisation. 
    • Experience conducting research, either individually or as part of a team.
    • Excellent interpersonal, verbal, written, and presentation skills.

Additional Experience (Optional)

    • Industry experience as a software engineer.
    • Remote, asynchronous communication across multiple time zones.
    • Familiarity with project management frameworks. (PMBoK, PRINCE2, XP, Scrum, other Agile Methodologies, etc.).
    • Open source contributions.