C/C++ Software Engineer (BE-CO-SRC-2020-60-LD)
- Geneva, Switzerland
Are you a skilled Software Engineer? Do you want to contribute to the unique challenge of making all the CERN particle accelerators function like a gigantic distributed clockwork with nanosecond precision? Then join the timing team in the beam controls group and realize your potential. Take Part!
The CERN accelerator complex is composed of thousands of magnets, accelerating RF cavities, beam measurement instruments and much, much more equipment, which function in a sophisticated, well-coordinated fashion to produce, accelerate and deliver the high energy particle beam to the big physics experiments.
From a computing point of view, this is a huge and complex distributed system with thousands of devices running real-time software, connected by high performance communication networks, and synchronized with nanosecond precision. The so-called Accelerator Timing System coordinates all these devices, just like a conductor coordinates the musicians in a symphonic orchestra.
You will join:
- The BE Department, responsible for the beam generation, acceleration, diagnostics, controls and performance optimization for the LHC and its injector accelerators.
- The CO Group, responsible for providing and supporting the controls hardware, software and infrastructure used to operate and maintain these particle accelerators 24 hours a day.
- The SRC Section: a dynamic and quality-oriented agile team, responsible for the Accelerator Timing System and other mission-critical software for communication and real-time accelerator control.
As a C/C++ Software Engineer in the SRC Section, you will join a passionate team, and take a key role in bringing the Accelerator Timing System to a new technological era. For this, you will use White Rabbit, a novel, IEEE standard, Ethernet based network with sub-nanosecond accuracy, pioneered by your new colleagues in the CO group. You will be involved in all aspects of the software life cycle, including user requirements gathering, design, development, testing and production deployment of the new solution, following our agile development process.
In particular, you will:
- Communicate with the end-users of the Accelerator Timing System to understand their needs and help translate these into appropriate solutions.
- Engage with the world-class electronics engineers who invented the White Rabbit network and take part in defining the functional behaviour of the White Rabbit hardware modules.
- Develop low-level software to integrate White Rabbit into the Timing System.
- Participate in the development of the Accelerator Timing software that uses White Rabbit to coordinate the thousands of accelerator devices.
- Collaborate and share knowledge and solutions with highly skilled and motivated software engineers inside and outside the CO group.
- Investigate, diagnose and resolve operational problems in collaboration with the end-users of the Accelerator Timing System.
- Mentor more junior developers.
Master's degree or equivalent relevant experience in the field of computing, computer science, software engineering or a related field.
The experience required for this post is:
- Proven experience in C/C++ development in a Linux (or Unix-like) environment.
- Proven experience in developing real-time solutions.
- Experience applying software quality assurance techniques and practice with corresponding tools.
The following are considered assets but are not mandatory:
- Experience of White Rabbit.
- Experience in C programming for embedded hard real-time systems (bare-metal and/or RTOS-based).
- Experience in Java and/or Python development.
- Experience in mentoring junior team members.
- Knowledge of programming techniques and languages, including practices for creating reusable software components and libraries.
- Knowledge and application of software life-cycle tools and procedures including DevOps.
- Testing, diagnosing and optimization of software.
- Monitoring and troubleshooting of operational software systems.
- Achieving results: having a structured and organised approach towards work; being able to set priorities and plan tasks with results in mind.
- Learning and sharing knowledge: keeping up-to-date with developments in own field of expertise and readily absorbing new information. Sharing knowledge and expertise freely and willingly with others; coaching others to ensure knowledge transfer. Thinking "out of the box" and proposing fresh ideas, insights and methodologies.
- Working in teams: understanding when teamwork is required to achieve the best results; including others accordingly and sharing information. Working well in groups and readily fitting into a team; participating fully and taking an active role in team activities.
- Demonstrating flexibility: adapting quickly and resourcefully to shifting priorities and requirements. Instigating and promoting change as an opportunity for organisational development.
Eligibility and closing date:
Diversity has been an integral part of CERN's mission since its foundation and is an established value of the Organization. Employing a diverse workforce is central to our success. We welcome applications from all Member States and Associate Member States.
This vacancy will be filled as soon as possible, and applications should normally reach us no later than 12.07.2020
Contract type: Limited duration contract (5 years). Subject to certain conditions, holders of limited-duration contracts may apply for an indefinite position.
These functions require:
- Work during nights, Sundays and official holidays, when required by the needs of the Organization.
- Stand-by duty, when required by the needs of the Organization.
Job grade: 6-7
Job reference: BE-CO-SRC-2020-60-LD
Benchmark Job Title: Computing Engineer