Backend Software Engineering
- Role
- Backend
- Employment
- Full-time
Open to UTC+1…UTC+2. Set where you work from to check your eligibility.
No BS summary
We are looking for strong software engineers to build our production system. This opening is focused on building a robust and scalable backend hosting our reasoning engine. It is ideal for an engineer with a deep interest in systems architecture, reliability and scalability.
Required skills
Optional skills
We're building a system that represents domain knowledge as modular probabilistic models — making analysis rigorous and transparent. Users can connect these models flexibly into larger structures. The system enforces consistency across them, and propagates uncertainty through each step. Our first applications are in finance and scientific research, with use cases ranging from equity valuation and distress monitoring, to particle physics.
We are looking for strong software engineers to build our production system. This opening is focused on building a robust and scalable backend hosting our reasoning engine. It is ideal for an engineer with a deep interest in systems architecture, reliability and scalability. You will be able to choose how close to the reasoning engine or the infrastructure you want to work, and be exposed to a novel class of reasoning models.
Essential experience
- Software engineering in a collaborative, commercial environment, working on large codebases and using practices like CI/CD, testing, and code reviews.
- Functional/typed languages, e.g. Rust, OCaml, Clojure, C++, or Haskell, and a willingness to learn and work with Julia, TypeScript and Rust.
- Scalable services development including databases, networking and computing across architectures.
- Implementation of observability across the stack.
- CI/CD pipelines with complex trade-offs between correctness and development experience.
Useful experience
- Hosting of machine learning models, or other computationally heavy services.
- Development of infrastructure with Terraform and Kubernetes.
Responsibilities
- Define new features or fixes, based on awareness of overall objectives and challenges
- Commit to delivering defined features or fixes end-to-end
- Define implementation strategies
- Leverage the expertise of other team members effectively
- Write design documents for more complex problems
- Write clean and performant code
- Help other team members to deliver on their goals
How we work
- Hierarchical goals, not personal hierarchies: We organise around a transparent tree of goals and tasks. Every quarter we plan milestone goals, which branch down into smaller and smaller tasks. This tree is the foundation of how we organise, not a side tool.
- Transparency: Everyone should have access to every opportunity in the team that they can realistically handle. All goals, tasks, and the reasoning behind them are visible to everyone.
- Decisions become tasks: When something is discussed and decided, it gets captured as a task in the right place in the tree, so that nothing dissipates as hot air.
- Written and asynchronous by default: We are fully remote and document our learnings in writing. Communication happens transparently in shared channels, not in private threads and one-on-ones.
- Growing from leaf to tree: New joiners start from smaller leaves of the tree and work themselves up to ownership of larger branches as trust and understanding build. Teams form around topics and dissolve when the work is done; people move to where they are most useful.
Want to know more?
On our website you can find more about our team and work culture, as well as example tasks that share some insight into the type of things team members are working on.
For this job opening, we are looking for someone who can work within the CET timezone.
What you'll do
- Define new features or fixes, based on awareness of overall objectives and challenges
- Commit to delivering defined features or fixes end-to-end
- Define implementation strategies
- Leverage the expertise of other team members effectively
- Write design documents for more complex problems
What they require
- Software engineering in a collaborative, commercial environment, working on large codebases and using practices like CI/CD, testing, and code reviews.
- Functional/typed languages, e.g. Rust, OCaml, Clojure, C++, or Haskell, and a willingness to learn and work with Julia, TypeScript and Rust.
- Scalable services development including databases, networking and computing across architectures.
- Implementation of observability across the stack.
- CI/CD pipelines with complex trade-offs between correctness and development experience.
We're building a system that represents domain knowledge as modular probabilistic models — making analysis rigorous and transparent. Users can connect these models flexibly into larger structures. The system enforces consistency across them, and propagates uncertainty through each step. Our first applications are in finance and scientific research, with use cases ranging from equity valuation and distress monitoring, to particle physics.