Python Software Engineer
At CERN, the European Organization for Nuclear Research, physicists and engineers are probing the fundamental structure of the universe. Using the world's largest and most complex scientific instruments, they study the basic constituents of matter - fundamental particles that are made to collide together at close to the speed of light. The process gives physicists clues about how particles interact, and provides insights into the fundamental laws of nature. Find out more on http://home.cern.
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 will 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.
Master's degree or PhD, or equivalent relevant experience, in the field of computer science or a related field.
- Proven experience working in a software engineering position and mentoring a small team.
- Proven experience with modern software engineering, applying quality assurance techniques and DevOps practices.
- Extensive professional development experience using Python 3 and its ecosystem.
- Good professional development experience with C and C++ on Linux, using GCC or Clang/LLVM.
The following are considered an asset but not mandatory:
- Experience with Java, the Gradle build system and Maven repositories.
- Experience of UNIX systems programming and operating systems concepts.
- Experience with statistical data analysis, big data analytics and machine learning and related frameworks, e.g. scikit-learn, TensorFlow and Spark.
- Active participation in open source projects, with accepted contributions.
- Development of application software in Python and C++.
- Knowledge of programming techniques and languages both for application software and scientific/big data computing.
- Knowledge and application of software life-cycle tools and procedures including DevOps.
- Testing, diagnosing and optimization of software.
- Communicating effectively: expressing opinions, ideas and suggestions with conviction and in a logical/structured manner; keeping to the point; delivering presentations in a structured and clear way; adjusting style and content to the audience; responding calmly and confidently to questions.
- Building relationships: relating well to all people regardless of category/level within the Organization; showing a sincere interest in the concerns and perspectives of others.
- Achieving results: driving work / projects along and seeing them through to their conclusion; delivering prompt and efficient service taking into account customer needs.
- Demonstrating flexibility: readily absorbing new techniques and working practices; proposing new or improved ways of working Instigating and promoting change as an opportunity for organisational development.
- Spoken and written English with the ability to draw-up technical documentation and to make oral presentations.
- Knowledge of French or the willingness to acquire it rapidly would be an advantage.
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. (https://home.cern/about/member-states)
This vacancy will be filled as soon as possible, and applications should normally reach us no later than 27.01.2019.
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-APS-2018-98-LD
Benchmark Job Title: Computing Engineer
Please make sure you have all the documents needed to hand as you start your application, as once it is submitted, you will not be able to upload any documents or edit your application further