Open Position: Cryptography Engineer

Apply here for the Cryptography Engineer! We look forward to your application.

When evaluating candidates, the Foundation will primarily evaluate candidates on the results of their take home project and interviews. More details about the hiring process can be found below.

Role: Cryptography Engineer

The role as a cryptography engineer within the core Zcash Foundation team will be responsible for building cryptographic protocols as well as distributed systems. The ideal candidate embodies the Foundation’s values, while fully aligning with its mission and goals.

Engineers at the Zcash Foundation are responsible for implementing the core Zcash protocol, maintaining deployed software, fixing bugs, and identifying improvements to the protocol for the future. Other duties include writing about our work and interfacing with external stakeholders such as those who use our software and interoperable implementations of the Zcash protocol. The position reports to the Zcash Foundation’s engineering manager.

Zcash Foundation Core Engineering Projects: Currently the engineering team is working on Zebra, an independent implementation of the Zcash protocol written in Rust, and soon we will dedicate resources on building out Zcash wallet functionality.

What We Are Looking For

  • Proven experience in computer science/and cryptographical systems.
  • Experience building and deploying production systems.
  • Knowledge of core cryptographic primitives and protocols as well as common attacks such as side-channel and padding attacks.
  • Strong testing skills, both in writing automated tests and using techniques such as fuzzing to catch bugs.
  • Team player.
  • Rust programming experience (but not required).
  • Experience designing and/or implementing complex distributed systems.
  • Experience designing and/or implementing complex zero-knowledge proof systems.
  • Deep technical understanding of internet privacy tools, with a particular focus on finance/cryptocurrency.
  • Strong written and oral communication skills.

Interview process

When evaluating candidates, the Foundation will primarily evaluate candidates on the results of their take home project and interviews. Additionally, we look at work samples and collaborative interviews for further evaluation.

Please submit the following to this form.

  • Software sample
  • Writing sample
  • Analysis sample
  • Presentation sample
  • Resume (or equivalent)

We will follow up within a week of your submission.

Work Samples

We are asking to see samples of work that you have already done. Feel free to send more than one sample of each if that best reflects your accomplishments relevant to the position. Here’s what we want to see in detail:

Software Sample

We expect this position to contribute to producing engineering artifacts that meet the needs of our projects. We use past work to evaluate how you will likely perform in future work for the foundation. If you don’t have existing public work, that’s OK – just pick something you’ve done and describe it for us in as much detail as necessary to understand it.

Writing Sample

We work remotely on an open source project, so most of our communication with each other, our users, and external contributors happens through text. Send us some writing that you’re proud of. This could be something like:

  • Block comment in source code
  • Blog post or other long-form article
  • Github or forum post (preferably discussing a technical topic)
  • Design document or specification
  • Whitepaper or academic publication

Analysis Sample

Zcash is a Bitcoin fork with added privacy features, so we sometimes debug edge cases in an underlying protocol we didn’t design (though we also subject our new designs to intense review and analysis). The ability to pick up a complex existing system and figure out how it works or what might be causing a bug is a critical skill for us. In the analysis sample, tell us about a time you had to analyze a technical system whose abstractions failed you. This could be anything that required developing a deeper understanding, such as a memorable debugging session or a satisfying performance improvement.

Presentation Sample It’s important to be able to make our work legible both to our collaborators and to the public we serve. Along with writing well, oral presentation skills are an important vehicle for this kind of communication. If you’ve given a technical presentation that is publicly available, please provide a link to the slides and video (if available). If you don’t have a publicly available presentation, please describe a topic you’ve presented in the past.

Interviews

There will be two technical interviews and at least one non-technical interview, all conducted over video chat.

  • A take home coding exercise, in which you will be asked to complete a task in the Zebra codebase, which we estimate to take 4-6 hours. The results of the exercise will be reviewed as part of a ‘code review’ video call / interview.
  • One technical interview will focus on work style and take the form of a pairing interview. You and your interviewer will pick an open issue in one of our projects and work on fixing it together.
  • The other technical interview will be a system design interview. You and your interviewer will talk through a model distributed system that’s representative of the kind of things we work on.
  • The non-technical interview will be a conversation focused on your alignment with the Foundation’s values, while fully aligning with its mission and goals.

All interviews will be conducted over Google Hangouts.