About the Role
We are looking for a Senior Software Engineer to join our Data Science team in Lausanne and take ownership of the engineering foundations on which our data science work is built. Across a portfolio of projects running in parallel, the same software needs recur: data access, ML training workflows, quantitative finance data manipulation, pricing and visualisation utilities. This role exists to consolidate those recurring needs into shared, well-designed internal libraries, deduplicating code across projects.
In this role, you will work at the intersection of software design, engineering, and developer enablement. You sit within the Data Science team and work closely with Data Engineering, who own the data platform, the pipelines and deployment. You will build the shared libraries, act as engineering design partner as prototypes become products, and put in place the tooling and standards that make good engineering the default rather than an individual effort.
Your Mission
Shared libraries and internal tooling
- Audit existing projects to map the software needs and patterns that recur across repositories.
- Consolidate the best implementations into versioned, documented, owned internal packages with clear interface contracts and module boundaries.
- Define the software strategy: prioritise which libraries deliver the most value first.
- Design or select internal tooling with stable, well-documented APIs, building only where no adequate existing tool fits.
Engineering design partnership
- Support the proof-of-concept to production transition, acting as the engineering bridge between Data Science and Data Engineering: architecture review when a prototype is green-lit, refactoring guidance, and modularisation.
- Review designs at project inception so that shared components are used by default and duplication is avoided before it is written.
- Migrate existing projects onto shared components incrementally, without disrupting delivery.
- Mentor the team on software design principles: SOLID, modular design, information hiding, abstraction layering, API design, and managing change over time.
Standards
- Maintain the project template with CI/CD, linting, type checking and test scaffolding.
- Own the shared AI-assisted development configuration so that code quality depends on team standards rather than individual setup.
What You Bring
Essential skills and education
- Master's degree in Computer Science, Software Engineering or a related field.
- At least 5 years of experience in software engineering, including work on large codebases; ideally shared libraries or internal frameworks used by several teams.
- Expert-level Python, with demonstrated library and API design experience: you have built and maintained internal packages that other teams depended on.
- Strong software design fundamentals: design patterns, modularity, information hiding, abstraction layering, API design, and managing change over time.
- Solid engineering practice:
◦ Git / version control and code review discipline
◦ Unit and integration testing
◦ CI/CD, linting, type checking, environment promotion
◦ Logging, error handling, debugging
- Working understanding of machine learning principles
- Fluency with modern AI-assisted development, and clear opinions on the guardrails it requires
- Comfortable in Linux and containerised environments
- Excellent communication skills: you can sell a design to a technical audience and write documentation that people actually use.
Nice to have
- Experience with web UI development in Javascript and React.
- Experience with distributed data processing (Spark).
- Exposure to quantitative finance data and workflows.
- High-level understanding of Kubernetes.
Benefits:
- Company events
- Company pension
- Employee discount
- Parental leave
- Work from home
Work Location: In person