At Synth, we're developing a data generation engine to enable developers to easily create an unbounded amount of realistic relational data with complex business logic.
Synth is an open source declarative data generator. We are building Synth with the intention of solving, once and for all, the problem of generating realistic data for testing - helping big companies and small developers avoid the use of production data in testing.
Our mission is to build amazing developer tools that solve data privacy without forcing users to compromise on productivity. We have a few exciting products in our pipeline and we're backed by YCombinator and other great investors. We're based in London and building a remote-friendly culture.
We work exclusively on open source software. This is great because our community is not confined to just our core team and the users, but also includes our contributors - we believe it is way more fun this way.
We're an early stage startup, so joining us you will find yourself at the epicenter of intense ideation and building - you will be working hand in hand with the founding team, involved in the decision making and given many opportunities to drive things yourself, having a real impact on the product and the company.
If you are an ambitious and energetic team-player who always finds a way to get things done we want to talk to you.
Being passionate about data privacy is a big plus, but not a requirement - appetite comes with eating.
What you can expect from this role
- We work on a two week sprint basis. Everybody is involved in deciding what to build in order to make the product better for users. Everyone chooses what they want to focus on and takes responsibility for tests, feedback and tracking.
- We build open-source tools and we do everything in the open. We get a lot of bug reports and pull requests from users and contributors. You will be working directly with users and contributors, mentoring PRs, reviewing and triaging issues, fitting them in the long term plan for the product.
- We work primarily in Rust but we are open to a diverse set of modern technologies. You will be writing a lot of Rust code as well as learning a lot of technologies you may not be familiar with.
What we value
- We are open source. We believe in building in the open, alongside a strong community with which we interact constantly.
- We have a strong bias for action. We value solving real problems in the real world over dogma.
- We work autonomously. We don't tell anyone what to do. Whatever makes the product better for our users is a go.
- We are constantly learning. We do not let unfamiliarity with a technology get in the way of finding a solution to a problem. Rather, we take it as a learning opportunity.
What makes you an ideal match for this role
Since every role is unique, your experience may not entirely match every point in this list. So even if you are missing one or two of them, we want to hear from you!
- You have some experience with Rust that has connected you with at least one of: asynchronous I/O, meta-programming or common patterns for concurrency. Having been involved in an open-source Rust project is a bonus!
- You have experience with composition over inheritance, common data structures and algorithms.
- You are passionate about productivity in software engineering. For you, making life easier for software developers is a true motivator to get to work.
- You can zoom in on the specific details of a problem as well as drawing the big picture.
- You have strong communication skills. We communicate primarily via Slack and Discord and document everything in writing. So you'll have to have strong communication skills.
- You are comfortable in a lively, open environment. We build open-source software alongside a community of users and contributors. We love spending a lot of time talking to them, interacting with them, and getting their feedback and ideas. If you enjoy that kind of interaction, you will like this role!
Since we are building a remote company, written communication skills are critical to us being a productive team. We communicate primarily via Slack and Discord and frequently hop on quick calls for more involved or technical topics that require more interaction. Our interview process revolves around the way we work as a team, challenging each other's ideas and frequently bouncing off one another.
- 30 minutes call with someone from the team. We'd love to hear a bit about you and your experience. Then we move on to asking two or three more technical questions.
- Take-home problem that should not take more than 3 to 4 hours to complete. That being said, you can take as much time as you need though most people send us their answers within a few days.
- 1.5 to 3 hours call. We get everybody from the team on that call at some point. The aim is to find out if we're a good match to work together. We do this by digging into more advanced technical topics that relate to implementation or design problems we're facing at the moment. Usually this takes the form of at least a round of few questions and a pair programming session which you drive.
We've written our own synthetic data engine from scratch in pure idiomatic Rust. This includes:
- A framework of generators to generate arbitrary amounts of data with user-defined constraints and correlations
- A meta-framework for inferring and then weaking arbitrary data models as a schema (basically a a glorified DAG with some bells and whistles)
- Built in privacy formalisms in our synthetic data generation process like differential privacy.
We also dabble in Python for user-facing clients and integrations with fake data libraries (i.e. faker).