Research Software Engineer

London (Greater)
£40,386 - £47,414 or Grade 7 £48,737 - £52,841 per annum, including London Weighting Allowance
11 Jan 2023
End of advertisement period
08 Feb 2023
Academic Discipline
Clinical, Pre-clinical & Health
Contract Type
Fixed Term
Full Time

Job description

We are looking for a highly motivated Research Software Engineer to work on the open-source MRtrix software project ( The successful applicant will be supported by and work closely with other members of the project on a variety of tasks, outlined below.


MRtrix is an open-source software project that provides high-quality implementations of novel and important technical innovations in the field of diffusion MRI analysis. Diffusion MRI is increasingly used to identify and study brain white matter fibre tracts and to investigate brain connectivity. MRtrix is a valuable software tool used by researchers in medical image processing and visualisation, neuroscience and neurotechnology and is already in use in at least 60 medical centres worldwide, and several commercial products.


The applicant will be involved in a range of activities to support the project, including:

-          implementing important new features, refactoring code where necessary, and making use of modern GPUs for computation and visualisation; 

-          encouraging researchers and developers to use MRtrix as the basis for the development and/or dissemination of their own methods; 

-          maintaining the software, fixing outstanding issues, and easing the various processes involved as much as possible; 

-          maximising user engagement and participation through workshops, online tutorials, and improved documentation. 


The applicant should have a high level of experience with C++, Python, linear algebra, and software development and maintenance practices, and some experience with modern GPU APIs.


This is a full-time post, offered on an a fixed-term contract for up to 3 years (or to  30 September 2025)


Key responsibilities

•         Implementing high-performance code in C++

•         Maintaining existing codebase (mostly C++ and Python), including fixing outstanding issues, refactoring where necessary, and adding or updating documentation (generated using Doxygen)

•         Streamlining the existing Continuous Integration workflow and related processes

•         Adding GPU compute capabilities

•         Refactoring the current visualization tool to allow its use in a range of different situations.

•         Supporting and encouraging other developers and potential contributors, by improving the documentation, providing short tutorials, etc.

•         Supporting users of the software, by contributing on the community forum, helping to improve the user documentation, and assisting with workshops.



•         Demonstrate collaborative approach to software engineering

•         Liaise directly with internal and external colleagues in an independent manner

•         Use initiative, discretion, knowledge and experience in planning, coordination and problem-solving

•         Demonstrate ownership of tasks and development of solutions to problems

•         Maintain a supportive and respectful manner when interacting with users and other developers



•         To attend regular project meetings and training courses for professional and personal development as required


Communication & Networking

•         Develop and maintain effective working relationships with staff within the School as well as externally

•         Regularly communicate information in a clear and precise way


Decision Making, Planning & Problem Solving

•         Lead in decisions that have a significant impact on their own work, that of others and be party to collaborative decisions

•         Manage own workload, prioritising tasks in order to achieve their objectives

•         Communicate to management any difficulties associated with carrying out work tasks

•         Plan in advance for heavy workload

•         Use own initiative and creativity to solve problems


The above list of responsibilities may not be exhaustive, and the post holder will be required to undertake such tasks and responsibilities as may reasonably be expected within the scope and grading of the post.

Skills, knowledge, and experience 

Essential criteria

1. PhD or Graduate degree (MSc or PhD) in a computing/engineering subject OR equivalent industrial experience in software development.

2. Strong coding ability in C++ and Python

3. Proven ability to convert research papers or maths into code

4. Knowledge of version control systems e.g. git

5. Knowledge of at least one of numerical optimisation, linear algebra or graphics/accelerated programming

6. Ability to work collaboratively with people from a variety of technical and non-technical backgrounds

7. Track record in working proactively and independently (at home and in the office)


Desirable criteria

1. Experience in software engineering of large projects

2. Experience with continuous integration / continuous delivery

3. Experience of managing code releases and providing user support

4. Experience in producing documentation, online tutorial and/or video tutorials


Similar jobs

Similar jobs