Software Engineer, Rust
Posted on Thursday, December 22, 2022
At Spruce, we are reimagining trusted interactions by creating the world’s best software for packaging beliefs digitally. We are a team of programmers working to develop world-class open source products and libraries implementing open global standards in identity.
There are no well-worn paths or theoreticals here. Every Spruce technical staffer gets their hands dirty writing code, learning new technologies, and solving problems at the bleeding edge of our space. We hire results-oriented developers who love technology and are committed to intellectual honesty, user privacy, and innovation.
You will be responsible for developing cross-platform libraries and server software in Rust. Our software is secure by design, professionally audited, and suitable for high stakes applications. You will also have the opportunity to contribute to emerging global technology standards for digital identity. While we don't require you to have Rust experience to apply for this job, you should demonstrate a strong aptitude for statically typed languages, memory management, and secure programming practices.
- Contribute to new and existing Rust codebases, with a focus on high code quality (e.g., tasteful use of traits, code/memory footprint reduction, minimizing dependency trees, refactoring between enums/structs, using macros to reduce copy-paste errors, etc.).
- Utilize best practices for unit tests, integration tests, benchmarking, documentation, version control hygiene, and open source release cycle management.
- Implement low-level systems code that is cross-compiled and performantly ran across platforms, including backend servers, mobile devices, and in the browser through WASM.
- With support and review from cryptographers, use cryptographic APIs to implement digital signatures, message authentication, encryption/decryption, data structures, and zero-knowledge proof protocols for production applications. For this role, you are not expected to know the math, but you will be responsible for correct low-level implementations, "blocking and tackling" such as zeroing memory, preventing timing attacks, writing test vectors, and configuring fuzzers.
- Interface directly with security auditing firms who have experience evaluating implementations that rely on applied cryptography.
- Excellent written communications skills (necessary for remote work).
- Experience writing widely-distributed backend software in statically-typed languages.
- Aptitude for computer security, correct use of cryptography, and user data privacy.
- Proficiency in backend web frameworks, API design, databases, and scalability.
- Experience setting up or configuring CI/CD pipelines based on containers and cloud services.
- Comfortable with rapid directional changes of focus in a startup environment.
- Experience building distributed storage systems at scale.
- Proficiency with functional programming paradigms and use of advanced type systems found in languages such as Rust, C++, OCaml, or Haskell.
- Contributions to open source software projects and technology standards.
- Full-time experience with working remotely.
- Familiarity with operating system internals, compiler internals, memory management, and low level programming.
- Professional experience in a high stakes industry such as cloud infrastructure, finance, healthcare, social media, or online gaming.
We are passionate about cultivating a thriving culture of diverse individuals who bring unique perspectives to our mission. We are committed to equal employment opportunity regardless of race, color, ancestry, religion, sex, national origin, sexual orientation, age, citizenship, marital status, disability, gender identity or Veteran status.