👩‍💻Founding Engineer (London)
Recurse ML
London, UK
Posted on Jul 5, 2024
Founding Engineer (London)
Our Mission ​
We want to enable software engineers to spend more time solving hard problems and less time performing mundane codebase maintenance tasks. That’s why we are building ML tools that automate mundane software engineering tasks, starting with dependency upgrades, in large codebases. Think, turning a story into a submitted PR.
Our product is an on-prem K8s service that interacts with client’s Git repo. It consists of a mix of ML and old-school algorithmic components for analyzing build logs, navigating large (100K+ files) codebases, and editing source code. This will save thousands of engineering hours spent on dependency upgrades, enabling engineers to build new features and solve hard problems during that time instead.
We’re looking for an Founding Engineer to join us on our journey! You’ll primarily work directly with the CTO, and as we grow, you’ll have the opportunity to choose between building and technical leadership.
About you ​
You’ll have technical freedom to choose the highest impact tasks based on business context; that’s the “founding” part in Founding Engineer. That being said here are some projects you might choose to work on:
Constrain code generation using BNF grammars​
Create an LSP based feedback mechansim for code-generation​
Fine-tune LLMs on Java code​
Design and build CLI interface for manipulating large codebases with speed and grace⚡️
Build and lead a world-class team of software engineers​
What we are looking for ​
Note: we hire for strengths rather than weaknesses. We’re happy to consider outstanding candidates in one area, who have skill-gaps in others.
We are looking for a Senior Python programmer to join as a Founding Engineer. By “Senior”, we mean someone with an exceptional track record of projects and shipped products.
Nice-to-haves (we expect a successful candidate to have 1-2 of these):
ML/NLP Engineering: you’ve previously worked on machine learning products or research. Some relevant example include (but are not limited to): familiarity with PyTorch, fine-tunning language models, implementing custom LLM decoding logic.
DevTools: you’ve previously built products targeted at developers. We’re value both the technical and soft skills of working with developers as end-users.
Static analysis: you’ve previously worked on static code analysis projects. For example, using ASTs in order to find code-style violations.
Parsers: you’re familiar with classic methods used in compilers. For example, you know how a symbol table is created and variable scope is managed. Maybe you’ve written your own programming language or contributed to an existing one.
Hiring Process​
If this resonates with your interests and experience, please shoot me an email (jack@recurse.ml) describing what aspect of Recurse excites you and include your CV or a url to your LinkedIn/Github.
Bonus points if you mention your favourite paper/blogpost.
Our hiring process consists of 4 steps:
Initial conversation (30mins). Conversation for us to share more context on Recurse ML and for you to share what drives you, we might go into some technical details on your past projects but don't expect to write any code
Algorithms interview (1h). A python algorithms problem at the difficulty of LeetCode easy/mid problem.
System design/code review interview (1h). Here we're evaluating your taste for good code. You'll review PR and provide your thoughts on variety of implementation and high-level design details.
Lunch with the team (1h+). This is our main "cultural interview", as we'll be working together we'll invite you over to have lunch with the rest of the team.