Open Source Developer &DevOps (Python, Django, AWS, OpenStack) - remote

OpenCraft
Posted 4 years ago

Do you care about contributing to open-source, and appreciate a good challenge? We do too! :)

Open-source

We are a team of veteran open-source developers, working on educational and community-based projects in an open-first environment –and we are looking for new members. By joining us, you will work full-time on open-source, pushing your changes to free software projects upstream through pull requests, contributing features, documentation, or help on public forums.

We care deeply about contributing our work upstream. You will see the results of your work reused and recognized across the educational community, increasing access to quality education for everyone, everywhere.

Remote-first

Unlike companies that reluctantly started to accept remote workers recently, we have embraced it from day 1. For the past 7 years, we have based and refined our way of working around remote-friendly workflows, from the ground up. No day-long video meetings, mandatory work hours, or risk of being forced back into an office one day -- as long as you have a good internet connection, it’s none of our business when or where you work from. :)

We are all working remotely, from all continents (except Antarctica, at least so far - applicants welcome!). We use remote-friendly and timezone-agnostic workflows based on asynchronous principles and good documentation practices.

Online education

We are one of the main contributors to the Open edX project, the main open-source MOOC platform created by MIT, Harvard and many other top universities. It powers sites like edX.org, the MIT Open Learning Library, and the national online learning platform for France. We provide development and hosting for institutions like Harvard Medical School, Harvard LabXchange, Cloudera, Autodesk, and several governments. We are not affiliated with edX.org, but we contribute and work with them on various projects.

Technical stack

The Open edX project is a large Python/Django codebase, with good code standards and architecture. Tasks are varied, from developing core platform features, custom exercises and tools for specific courses (XBlocks), customizing and deploying instances, working full-stack, operating our service infrastructure, improving our hosting platform, etc. You won't get bored here.

Contracting terms

This is a full-time, permanent contract position. We aim for long-term relationships -- once in, almost all team members stay for many years.

We care about paying fairly:

  • Team members set their own compensation level, which is paid based on hours worked (no unpaid overtime!).
  • When determining your rate, we will expect you to factor in benefits (vacation, healthcare, purchase budgets, etc.) - the idea is to let you pick the benefits that are useful to you, rather than offer one-size-fits-all packages that aren’t always very valuable.
  • We also proactively apply generous raises team-wide, based on the company results at the end of each year. See the details about how we approach compensation in our handbook.

We also firmly believe in work-life balance: as long as you deliver what you commit to, there is a lot of latitude in how much work you can choose to accept. We are open to time commitments anywhere in the 30h to 40h/week range, and highly discourage working more than that. It’s important to have time to ourselves, as well as having some slack, and there are diminishing returns in working more anyway. We are currently recruiting precisely to preserve that balance, and ensure we have plenty of capacity to handle our projects.

We welcome applicants of all genders and ethnicities.

Basic Requirements:

  • Experience with contributing to free software projects - small contributions are completely fine, but you must have at least one patch or pull request merged in a third-party project, or been a maintainer of an open source project with significant adoption. (Note that you can contribute now to satisfy this requirement - see for example the Open edX release issues, fixing one of these issues guarantees an interview.)
  • Senior developer with 3+ years working with Python
  • Experience with Python web frameworks, specifically Django
  • 3+ years of HTML, Javascript, and CSS (experience with React and/or Typescript is a big plus!)
  • Experience with unit testing
  • Comfortable working in a Linux environment, specifically Debian or Ubuntu
  • Experience with databases: MySQL, MongoDB, PostgreSQL

Additional Skills:

You will work on tasks from the following categories, but you can pick up the skills on the job if you haven't mastered these yet:

  • DevOps experience, especially on Debian/Ubuntu servers, Terraform, Vault, Packer, Prometheus, ELK, Docker. We are building a modern infrastructure and having a strong DevOps presence on top of core software engineering skills is a big plus with us.
  • Cloud computing, like AWS or OpenStack
  • Configuration management tools such as Ansible, Consul
  • RabbitMQ, Redis &Elasticsearch
  • Mobile development (iOS and/or Android)
  • Managing clients &projects from beginning to completion (senior developer)
  • Public speaking at conferences (you would present a talk every year at the Open edX Con)

Apply for this Position

Our recruitment process differs from most other companies - we don’t believe resumes and the traditional interviews to be particularly effective. Often, they tell more about how good someone is at interviewing, rather than at the actual work. So, our initial interview is lighter and easier to pass than in other companies - but we then provide you with real (and paid!) work to see how it works out in reality.

  • Step 1: You apply by filling out this form: https://opencraft.com/jobs/open-source-developer/
  • Step 2: We do two interviews with candidates matching the requirements listed above. The first interview includes a (simple) coding exercise.
  • Step 3: If this works out, we hire you! We start with a 2 months trial period, which allows both you and the rest of the team to fully evaluate how we work together, and is followed by a final review and confirmation.