Research Software Engineer - Scientific Data Encoding and Decoding
Role details
Job location
Tech stack
Job description
ECMWF is recruiting a motivated Research Software Engineer (A2) to contribute to the development, maintenance and evolution of our core data encoding and decoding capabilities. You will be part of a dynamic team of scientific software engineers who contribute to key activities at ECMWF.
At ECMWF, you will join a passionate community working to bring novel technology and science to the cutting edge of numerical weather prediction. In this role, you will focus on software, algorithms and workflows for handling meteorological, climate and geoscientific data formats. There will be a strong emphasis on the WMO formats GRIB and BUFR, as well as other widely used scientific formats such as NetCDF. This work will include leading the development of key ECMWF libraries and tools, notably the open-source package ecCodes, and contributing to software packages that handle meteorological data. You will help ensure that ECMWF and its Member and Co-operating States continue to benefit from robust, efficient and sustainable software for handling operational and research data across a range of meteorological and environmental workflows.
You will contribute to both the reliability of production-quality software and the longer-term evolution of ECMWF's data-handling capabilities, helping to meet the needs of internal users, external partners, and the wider meteorological community. You will work closely with colleagues across software engineering, data governance and scientific development teams, and also with technical representatives of other organisations such as our Member States' meteorological services.
The role sits in the Foundational Software Services team in the Development Section in the Forecasts and Services Department. The team is responsible for fundamental software packages developed at ECMWF that handle data encoding, decoding, processing, and visualisation. These open-source packages are available both within and outside ECMWF and provide the foundation for numerous research and production pipelines. They also provide core functionality for the new 'earthkit' software stack, much of which is also developed within this team. Earthkit modernises and harmonises data handling, enabling efficient data access, analysis, and visualisation, and directly supporting many workflows, including ECMWF's machine learning developments. The team is additionally responsible for workflow software and the CI/CD systems used throughout ECMWF's software development lifecycle., * Develop, maintain and enhance ECMWF software libraries and tools for encoding and decoding meteorological and environmental data.
- Support and improve workflows involving relevant data formats with attention to correctness, performance and usability.
- Work with scientists, analysts and software developers from ECMWF and its Member States to understand requirements and translate them into robust technical solutions.
- Use and contribute to software engineering best practices, including version control, code review, automated testing, continuous integration and release processes.
- Prepare technical documentation and guidance for users and developers.
- Investigate and resolve relevant issues reported by users and collaborators.
- Where relevant, contribute to community engagement, user support and collaboration with external partners and standards bodies.
Requirements
Excellent analytical and problem-solving skills with a proactive, continuous improvement approach. Ability to analyse complex technical problems and deliver reliable, maintainable solutions. Ability to work effectively both independently and as part of an international, multidisciplinary team. Ability to explain complex technical concepts to users and collaborators. Passion for delivering technical solutions that have a real-world impact Dedication, passion, and enthusiasm to succeed both individually and across teams of developers. Highly organised with the capacity to work on a diverse range of tasks to tight deadlines.
Your profile
- Candidates should have an advanced university degree (EQ7 level or above) or equivalent experience in computer science or engineering, computational science, physics or natural sciences, mathematics, or a related discipline.
Required or highly desirable experience and skills
- Proven experience in developing and maintaining scientific or technical software in a collaborative environment.
- Strong programming skills in one or more relevant languages such as C, C++, Python or Rust.
- Experience with software engineering practices such as testing, debugging, version control and continuous integration.
- Knowledge of data encoding/decoding concepts, metadata models, schemas, validation and data conversion workflows.
- Experience working with structured scientific or technical data formats and metadata, especially WMO formats such as GRIB and BUFR. Knowledge of NetCDF would be an advantage.
- Experience of working with developers and users to gather feedback and plan developments.
- Experience of working and scripting in UNIX environments.
- Candidates must be able to work effectively in English. Knowledge of one of the Centre's other working languages (French or German) would be an advantage.
Desirable experience and skills
- Knowledge of software lifecycle maintenance.
- Familiarity with performance, memory and scalability considerations in data-processing software.
- Experience in developing cross-platform libraries, command-line tools or APIs for technical users.
- Experience in contributing to large-scale software projects, preferably open-source and/or involving multiple software components.
- Experience with ECMWF or comparable software libraries and tools for working with scientific or meteorological data, such as ecCodes.
- Familiarity with data compression algorithms.
- Experience supporting users through documentation, issue triage, training or technical guidance.
- Ability to work effectively with legacy code while contributing to modernisation and long-term maintainability.