We are looking for a Software Engineer, Algorithm Platform (All Levels), to join our algorithm platform team. We’re looking for exceptional people. If you lack “senior-level” experience but are otherwise highly capable please do apply. Staff+ engineers will also be considered.
About the Algorithm Platform team:
Team size: 4-6
Oura runs algorithms on the ring, app and cloud, both in real time and as batch models. The Algorithm Platform team is focused on the systems that run algorithms in the app and cloud. Platform systems for training ML models are outside of the scope of the team.
This team is a platform team - most of the work is internal-facing. This work from this team influences how most teams at Oura implement and execute algorithms and ML models.
This role is hybrid, as you'll work a day or so a week at the Helsinki Office at Pohjoisesplanadi 37. We don't have any strict policy on this as a company, but as a team we appreciate spending some time face to face.
Scope:
- Reduce the effort required to implement, test, validate and release algorithm-heavy features that power the Oura app, including those reliant on ML models.
- The focus is on the inference side of algorithm development - not on the training side.
- Ensure algorithm execution is reliable and efficient.
- Development and optimization of platform components to minimize compute resources.
- Working with data scientists to improve model performance.
- Support data scientists and feature teams to implement algorithms.
We’re looking for multiple distinct profiles. A successful candidate will be highly motivated to tackle some subset of the domain described below:
- The domain involves components for iOS (Swift), Android (Kotlin), shared libraries (C++), cloud systems (typically Python) and ML models (Pytorch and others).
- Component: Cloud ML inference (Batch and real-time inference)
- Example tasks: support a team in implementing a batch ml model developed by a data scientist. Improve the capabilities of the system that runs batch models. Implement systems to support model lifetime governance (versioning, etc)
- Component: ML libraries available in the Oura app
- Example tasks: introduce a library that supports new models. Update the pytorch library version ensuring all models still work correctly.
- Component: Algorithm platform library code in the Oura App
- Example tasks: Work with data scientists to improve model cpu performance. Refactor app architecture to make testing easier. Implement systems to support test data management. Implement automatic code generation. Improve reliability to crashes, offline execution, etc.
- Internal Tools to support algo development:
- Example tasks: Implement a Data Visualization tool. Implement dashboards / plots. Improve our testing libraries / processes.
- Other core system tasks
- Example tasks: Improve how ring data is processed in the app and made available to algorithms. Improve ring data compression (lossy / lossless) , …
Note: this is not a data science role or pure algorithm development work. While the team might work on some algorithms and ML models, the core of the work will require solid software engineering and programming skills.
We believe great engineers have a solid understanding of the fundamentals and learn quickly. Hence it’s more important that you can showcase excellence than having experience with specific tech.
What we’re looking for:
- Previous experience solving challenging technical problems.
- Broad knowledge of software fundamentals, testing, concurrency, databases, system and API design.
- Ability to take ownership of projects, design technical solutions, drive implementation, and deliver results with limited guidance.
- Ability to produce high quality code quickly (with and without AI) - you’re a prolific programmer.
- Driven by value creation and overall impact.
- Team player with great spoken and written communication skills.
- Motivated to learn and further develop your skills
Relevant skills:
Disclaimer: These are not all required. Your actual work is likely to only touch some of them. It’s a long list because all of these skills can potentially be valuable to this team.
- Experience with mobile app development (iOS/Android)
- iOS experience is the most pressing right now, though Android is valuable too.
- Knowledge of distributed system design and its challenges: data consistency, etc.
- Experience working with databases (sqlite, realmdb, postgres/mysql, etc). Schema design, query optimization.
- Experience writing highly performant code at lower and higher level, including application profiling.
- Experience with C/C++ code (or other systems programming languages)
- Experience building backend systems in the cloud: APIs, databases, containerized services, event processing systems, public cloud. Our cloud systems run on AWS.
- General ML and Data Science knowledge:
- Understanding of the different stages of ML Development lifecycle.
- Data analysis, data visualization, model development, model validation, experimentation, etc.
- Knowledge of Python
- Understanding of Pytorch (bonus points if you have specialist-level knowledge)
- Understanding of Data Engineering and MLOps:
- Examples: Datalake, SQL, Data pipelines, Data orchestration, ML Feature stores, Workflow Engines, dagster, dbt
Benefits:
- Competitive Salary
- Lunch benefit
- Wellness benefit
- Flexible working hours + work-life balance
- Collaborative, smart teammates
- An Oura ring of your own
- Easy-to-reach offices in Oulu Teknologiakylä and in Helsinki city center
- Latest equipment of choice