About Protocol Labs
Protocol Labs drives breakthroughs in computing to push humanity forward. Protocol Labs is a product-development lab, but behind the protocols and tools we build, behind the research and implementations, are passionate people, teammates, and community members. Most teams in the Protocol Labs Network are fully distributed and work remotely around the world. Engineers, researchers, and operators work in the open to improve the internet — humanity's most important technology — as we explore new advances at the intersection of many exciting fields (crypto, networks, distributed systems) and cultures (startups, research, open-source, distributed work).
The IPLD team seeks driven engineers to help build out reusable libraries and algorithms for decentralized data wrangling. The position involves software development, understanding interoperability, and deep technical specification work to make sure everything we do can also be done by others in their programming languages of choice.
Software Engineering at Protocol Labs
Software engineering and distributed systems thinking lies at the center of many projects at Protocol Labs. With IPLD, IPFS, libp2p, Filecoin, and other related projects, we are laying the foundation for a more resilient, more secure, distributed version of the web. This requires rigorous engineering from protocol design through all the phases of implementation. We strike a balance between pragmatism (put it on a ship ⛴), deeply informed protocol design, and strict application of strong engineering principles. All of this happens in an environment defined by curiosity, passion, and a love for open source.
As Software Engineer in the IPLD team at Protocol Labs you will…
- Join us in maintaining and growing open source projects with hundreds of downstream consumers.
- Build the decentralization revolution! Work on foundational algorithms for data structures, serialization, sharding, content-addressing — all the things needed to build robust and scalable decentralized protocols.
- Develop and ship algorithms for handling data at all sizes.
- Focus on supporting other developers — we aim to make development in the decentralized universe easier and more high-leverage; that means lots of listening and planning.
- Think deeply about how software shapes thought processes. We're not just slinging code here; we're trying to build a vision, and communicate it through code and through doing.
- Write design documents to “think out loud” about features we might build. Then write specs, for the features we do build!
- Implement performance critical code (stuff that goes inside other people’s hot loops), such as codecs, and other data transformation tools.
- Communicate! We serve not just Protocol Labs, but aim to build and to serve a wider community of developers who have aligned goals and should benefit from using our software.
- Want examples? Look at what we do by checking out the repos in github.com/ipld/ , and the ipld.io website.
You may be a fit for this role if you have...
- Deep familiarity with merkle data structures. (E.g., You should consider git to be a “duh”.)
- Familiarity and experience with working in the open. (We do all our work on GitHub, and open is the default here!)
- Excitement to ship under Apache2+MIT dual license by default! (Okay, you don't need to be a license nerd, but if you are, we hope you find this pretty dang good.)
- Mature understanding of how design choice consequences shape and continue to affect a software library in the long run — especially when it's at the bottom of a deep dependency stack, and thus changes need planning. (We live this every day.)
- Strong written communication skills. We’re async by default, so writing matters. Documentation for code, design docs for proposed work, specifications for finished systems, and just plain daily communication — we do a lot of writing.
- A strong priority for testing. We develop complicated stuff, and we want it to work — and we want other people to implement things in their own languages of choice, too. That means being incredibly spec-driven and constantly investing in serialized, language-agnostic test fixtures.
- Remote work experience. We're a full remote company and always have been. You'll immediately have direct colleagues from all around the world. (Timezones are fun!)
- At least a little sense of whimsy! We're creating new things; we do spikes all the time. Creativeness is necessary, and also sometimes the ability to let things go just as quickly as they came if they don’t work out.
- If you have a polyglot background, it’s a huge plus. (We spend a lot of time thinking about how various systems should be implemented in other languages, so it helps!)
- If you have prior experience with performance profiling, e.g. pprof and tracking down memory allocations, it’s handy. (If not, you can gain that skill while working with us.)
- If you have experience in type theory, it’s a plus. (We think regularly about how to make programming better. Type systems often don't apply in a typical way for us, because we build systems to support decentralized and data-first systems development; but the background is still often transferrable.)
- If you've worked on codecs before, you’ll definitely find transferable experiences here. (It's a good practical experience to have; even when not working on codecs, having an intuition for their natural performance envelopes is dang handy.)
If you’re passionate about the future of computing and a more democratized internet, we want to talk to you.
GDPR for Job Applicants and Candidates
When you apply to a job on this site, the personal data contained in your application will be collected by Protocol Labs, Inc. (“Protocol Labs”), which is located at 427 N Tatnall St #51207, Wilmington, Delaware 19801 and can be contacted by emailing legalrequests[at]protocol.ai. Protocol Labs’ data protection team can be contacted via legalrequests[at]protocol.ai. Your personal data will be processed for the purposes of managing Protocol Labs’ recruitment related activities, which include setting up and conducting interviews and tests for applicants, evaluating and assessing the results thereto, and as is otherwise needed in the recruitment and hiring processes. Such processing is legally permissible under Art. 6(1)(f) of Regulation (EU) 2016/679 (General Data Protection Regulation) as necessary for the purposes of the legitimate interests pursued by Protocol Labs, which are the solicitation, evaluation, and selection of applicants for employment.
Your personal data will be shared with Greenhouse Software, Inc., a cloud services provider located in the United States of America and engaged by Protocol Labs to help manage its recruitment and hiring process on Protocol Labs’ behalf. Accordingly, if you are located outside of the United States, your personal data will be transferred to the United States once you submit it through this site. Because the European Union Commission has determined that United States data privacy laws do not ensure an adequate level of protection for personal data collected from EU data subjects, the transfer will be subject to appropriate additional safeguards.
Your personal data will be retained by Protocol Labs as long as Protocol Labs determines it is necessary to evaluate your application for employment or to assist in the hiring process. Under the GDPR, you have the right to request access to your personal data, to request that your personal data be rectified or erased, and to request that processing of your personal data be restricted. You also have the right to data portability. In addition, you may lodge a complaint with an EU supervisory authority.