Zcash - Remote
4 months ago
We're on a mission to give everyone on Earth an open, inclusive financial system, and we need your help.
The Zcash Company is at the forefront of the Internet Money revolution. Fueled by scientific discovery and guided by love for humanity, we are aiming to create a global, open economic fabric which will provide financial inclusion to potentially two billion unbanked people. We feel that we are part of something that is much bigger than ourselves.
Our flagship network, Zcash, launched in the fall of 2016 has quickly grown to be one of the most valued and admired cryptocurrencies/blockchains in the world.
We are looking for all-around great developers with a broad set of technical skills. You will have the opportunity to learn and apply zk-SNARKS based cryptography. You will work with both Bitcoin and Ethereum derived blockchains and consensus protocols. You will also work on client side projects supporting both desktop and mobile devices.
Our Ethos, Logos and Pathos
- Table stakes: Design software that is secure, efficient, consistent, clear, reusable, and extensible.
- Every line of code is a business decision. Understand the nature of the business challenge really well.
- Make haste slowly: Iterate quickly and ship code frequently while maintaining the utmost in quality.
- Maintain system quality using automated QA techniques during development. Write tests first. Cover all code paths. Use the test suite as specification of your code functionality.
- We approach software design with “systems thinking” while keeping in mind that some of the worst failures are systems failures.
- We promote seeing things from the perspective of the whole instead of collections of individual components.
- The biggest pattern we follow is to reduce complexity. - A prime objective of systems architecting it to simplify, simplify, simplify. Design for the simple case first.
- Minimize upfront design. Only design what is necessary. Avoid considering future use cases. Write less code.
- When componentizing, choose elements with low external complexity and high internal complexity. Define a clear contract for each component.
- Comment the intent of the code, not what it’s doing. Comment only unobvious, complex code.
- Think long term.
- Write code defensively.
- Siloed knowledge is bad.
- Deal with problems early. Keep technical debt low. Refactor often.
- Don’t optimize too early. Make code correct first, fast second.
- Actively seek criticism.
- A little paranoia goes a long way. As engineers, we have a saying “If engineers feel optimistic, people get hurt.” We temper this caution with self-care and care for each other.
- We also find ourselves saying “if it’s worth doing once, it’s worth automating”. We like to solve problems permanently. We continuously codify the lessons learned and incorporate them into the codebase.
- Build a platform, not a product. Allow others to extend your work.
- The best software engineers are also natural leaders.
Requirements and expectations
- Experience in professional software engineering best practices for the entire SDLC
- Familiarity with common design patterns
- Experience in mainstream programming languages such as Java/C/C++
- Management of your own projects
- Working with cross functional teams
- Being the technical product owner who works with product management
- Being a technical resource for other team members
- Providing code reviews and pull-request reviews
- Help recruit and assess new candidates
- Being a strong advocate of our culture and example of our principles
- Having fun
Benefits we offer
- Fun Fridays: Developers work on self-determined projects that can potentially benefit the company in innovative ways
- Learn from highly seasoned team
- Opportunity to work on projects with potential for global transformation
- Strong compensation: Competitive pay + equity
- Excellent health insurance coverage with company paid monthly premiums
Please send a resume in text or PDF format, and contact info for three professional references, to firstname.lastname@example.org.