Company description
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.
Job description
Introduction
Are you an experienced and motivated Java developer with a passion for delivering complex and compelling information systems end-to-end? Are you at ease with server-side technologies, and also with writing frontends in JavaScript and not afraid to optimise database queries, to dive into data integration processes or to configure and debug messaging/eventing systems? Then join an agile team of talented software developers and contribute to application software for CERN’s Corporate Information Systems. CERN, take part!
You will join the Business Computing Group (BC), where 70+ talented international colleagues are responsible for delivering information systems for all of CERN’s business functions.
The product management driven group is working for clients across the whole Organisation (HR, Finance, Planning, Safety, Security, Purchasing, Logistics, and Accelerator Operations). The type of products under the group’s responsibility ranges from custom-made solutions for a few users to large and widely integrated systems with 15,000+ users. Hence, working for the BC group provides numerous perspectives for being in touch with different technologies and business areas.
Functions
As a Full Stack Software Engineer, you will join a self-organised agile product team and you will be responsible for maintaining, evolving, and re-engineering CERN’s administrative information systems, aligned with the group’s strategy to modernise, replace, and consolidate legacy architectures and business-critical applications. More specifically, you will take on the following responsibilities:
- Design, develop, and test new features and software components for all layers of modern applications (e.g. frontend, backend, persistence, search, ETL, messaging, reporting etc.).
- Configure third-party provided software systems and integrate them into the group’s application infrastructure.
- Participate in, and lead cross-team technical initiatives and deliver proof of concepts demonstrating product feasibility.
- Maintain and improve group-wide high standards and guidelines of software engineering practices.
- Identify areas of improvement in the technology landscape of the group, and recommend solutions.
- Mentor junior software developers.
- Provide user support including analysing user requirements, synthesizing, specifying and following-up on both software- and non-software related issues.
Qualifications
Master’s degree or equivalent relevant experience in the field of computer science or a related field.
Experience
- Experience in the design and development of Java-based enterprise solutions built on top of industry standards (e.g. Spring Framework, Spring Boot).
- Experience with modern software architectures and API design.
- Experience with object-oriented and functional programming paradigms, design and architectural patterns, and their application in the Java ecosystem.
- Experience with modern software development life cycles and CI/CD processes.
- Experience with SQL, database systems, and their integration with Java applications.
- Experience with frontend technologies, and in particular JavaScript and related key frameworks (e.g. React, Vue etc.).
- At ease with Java build tools, and especially with Gradle.
- Passionate about software craftsmanship, acquiring new skills, and exploring learning opportunities.
Each of the following skills would be a plus:
- Experience with modern CI/CD tools (e.g. GitLab CI/CD, Jenkins, Atlassian Bamboo).
- Familiarity with NodeJS based JavaScript tool chains.
- Familiarity with rule-based systems, particularly Drools.
- Familiarity with Elasticsearch, Docker and Kubernetes.
Technical competencies
- Knowledge of programming techniques and languages: deep understanding of object-oriented and functional programming paradigms, design and architectural patterns used for modern Web application development, and proficiency with Java and JavaScript (ES6+).
- Knowledge of best practices for developing secure software: knowledge of web application vulnerabilities (as defined by OWASP) and how to prevent them.
- Design of databases/repositories: experience with relational databases and database modelling.
- Re-use, refactoring, integration and porting of existing software: working effectively with legacy code through continuous improvement, refactoring, and technology migration. Provide re-usable components that can be shared between multiple repositories.
- Knowledge and application of software life-cycle tools and procedures: working in lean-agile environments with methodologies such as Scrum or Kanban, issue tracking systems, Git, dependencies and build tools (Maven, Gradle).
Behavioural competencies
- Building Relationships: showing appreciation for the ideas and contributions of others and encourages others to express their views, even if controversial. Understanding how individual differences bring added value to the Organization; promoting complementarities. Being able to put self in the shoes of others in order to understand their needs and interests.
- Working in Teams: working well in groups and readily fitting into a team; participating fully and taking an active role in team activities. Cooperating constructively with others in the pursuit of team goals; balancing personal goals with team goals. Sharing and letting others participate in own work/project; encouraging team development.
- Demonstrating Accountability: working conscientiously and reliably; delivering on promises. Taking responsibility for own actions and decisions Readily admitting to mistakes.
- Learning and Sharing Knowledge: taking steps to expand knowledge in other areas of expertise beyond own field. Questioning traditional assumptions and ways of doing things. Learning from own successes and failures.
- Communicating Effectively: expressing opinions, ideas and suggestions with conviction and in a logical/structured manner; keeping to the point. Successfully changing other people’s opinions by persuasive arguments. Delivering presentations in a structured and clear way; adjusting style and content to the audience; responding calmly and confidently to questions.
Language skills
English spoken and written, with the ability to draw-up specifications and/or reports, and/or to make oral presentations. And the ability to understand and speak French or an undertaking to acquire it.
Expired