Python Software Engineer
Would you like to help physicists, operators and engineers to use Python effectively for the LHC and other accelerators? Are you a quality-oriented software engineer and Python expert, who loves the language and its ecosystem but also sees its limitations? CERN, take part!
Python is gaining importance at CERN, and the areas of application are expanding from mere scripting to developing user interfaces and server-side code, and from numerical analysis to big data analysis and machine learning.
You will join:
- The Beams Department (BE), responsible for the beam generation, acceleration, diagnostics, controls and performance optimization for the LHC and its injector accelerators.
- The Controls Group (CO), responsible for developing the controls infrastructure used to operate these particle accelerators 24 hours a day.
- The Applications Section (APS), a dynamic and quality-oriented agile team of engineers, responsible for the mission-critical user interfaces and server-side applications used by the accelerator physicists and operators. (https://be-dep-co.web.cern.ch/content/aps-applications).
As a Software Engineer in the APS Section, you will promote Python in the accelerator community, providing excellent tools and encouraging best practices. In particular, you will:
- Specify the Python distribution and recommended third party libraries that the system administrators shall install on all supported Linux platforms.
- Select and customize a coherent suite of DevOps tools for Python (e.g. dependency management, building/packaging, a package repository, testing and CI/CD, deployment, monitoring, etc.).
- Design and develop first-class Python bindings to the Accelerator Controls system, using REST or gRPC, or native bindings to existing C/C++ libraries.
- Collaborate with the different user communities and elaborate best practices on how to use Python to develop controls applications for the CERN Control Centre, and how to use Python for scientific computing, big data analysis and machine learning.
- Develop common components and libraries in support of the above use cases.
- Help new users to become productive by recommending suitable online training material, and complementing it with CERN-specific guidelines and documentation.
- Contribute your developments back to the open source community.
- Mentor more junior software engineers who will help you tackle the above tasks