What makes our work special at OpenCraft is the knowledge that it makes a difference. We focus on open source projects, especially the Open edX platform. Because our work becomes part of the open source project, we never just work for one client – it helps all learners and teachers using the project worldwide, and makes learning more accessible and open.
Our open-first philosophy keeps us honest and pushes us to bettering ourselves and our community. We believe in contributing back, and finding better ways to collaborate and work. We share the knowledge that we’ve gained instead of hoarding it.
We don’t have office space, and we don’t have prescribed shifts. Our sprints are planned asynchronously. As long as you have a solid Internet connection and get your work done, you can choose whatever schedule you like.
Some of us are true digital nomads, moving locations every few months or years to explore the world as we work. Others settle down and get into a routine that works best for us.
We believe in following (and establishing) software best practices. We insist that our code has tests, that it be readable, and that it does not leave a mess for the next developer. Team members have experience in software architecture, and will advise one another on how to make succinct, expressive code with documentation.
We create work we’re proud of. We budget the time so that team members aren’t pressured to write horrible hacks, because we know that bad code is more expensive than good.
OpenCraft is mostly flat, preferring the creation of lateral roles over the entrenchment of managerial layers. Team members may take roles that handle responsibilities sometimes associated with traditional middle managers, such as an Epic Owner, or a Sprint Planning Manager, but these people are not anyone’s boss. While a small core management team does exist, it has a policy of letting team members make their own decisions wherever possible while providing organizational support.
OpenCraft fosters a highly collaborative environment. We have a process for setting rates, and raises are applied company-wide. This reduces competition between members. Everyone on the team is rock solid and dependable. We hold each other to high expectations and know that we can depend on one another to get the job done.
As developers at OpenCraft, we all work on a variety of projects. Almost all the work we do is related to the Open edX platform and its ecosystem. Some of the common tasks are as follows:
Developers at OpenCraft are often generalists with a specialization in full stack software development. At times, you will be the leader on a project, meeting with the client to create a roadmap, budget, and tasks. At other times, you will be a contributing developer, completing those tasks and performing code reviews.
You will not be stuck on one project for too long. In fact, we encourage you to try a large variety of tasks on different projects during your trial period to best demonstrate your abilities, and you’ll have the ability to take on tasks from different projects during most sprints.
OpenCraft and edX are different companies, but we work closely together on the Open edX platform. The Open edX platform is the software platform which runs edx.org. edX open sourced the project in 2013, and OpenCraft’s founder, Xavier, was the first outside contributor to the project. To understand more about the relationship between edX and the Open edX platform, as well as get an overview of the platform, watch this video.
OpenCraft is an Open edX Partner, and we are the largest outside contributor to the Open edX platform. We specialize in custom solutions for various clients— especially those who require carefully planned architecture or scaling— while edX focuses on improving Open edX for the edX.org website. We also offer a SaaS platform that lets customers try their own copy of the Open edX platform.
OpenCraft is frequently contracted by edX to add major features to the platform. We also coordinate the creation of new features between our clients, edX, and the Open edX community at large. We are confident in saying that outside of edX themselves, we are the foremost experts in the Open edX platform.
The Open edX platform and most software projects that interact with it are built using Python and Django. A solid understanding of the Python language is important to your day-to-day work at OpenCraft.The rest of the stack described in the job description can often be picked up on the job, but note that the Open edX platform and OpenCraft will already require significant effort to learn. So the more you are missing, the steeper the learning curve—if you are missing a significant proportion, expect a very intense first few months. If you don’t have Django experience in particular, you will have to be able to pick it up very quickly. You’ll have a better chance if you have experience with at least one similar framework.
You should also be familiar with the basics of the Linux command line and system administration. You don’t have to be able to configure a webserver from scratch when you join, but you will need to know how to perform basic shell commands and know how to ssh into machines to run those commands. You will need a POSIX-compatible environment. Most of our developers run Linux or Mac OS X as their main operating system, though Docker and Vagrant are used to ensure compatibility during development for most projects. You will need to learn the basics of them quickly if you don’t already know them.
You don’t need to be an expert in SQL, but you should know how to run a simple select statement and have some familiarity with database concepts such as rows, tables, columns, and indexes. Most of the SQL we do is written for us via Django’s ORM. Most of us Google the rest as we go.
You should know how to write unit tests. We are serious about testing.
We frequently deploy on AWS and OpenStack environments. You don’t need to be familiar with these, since knowing Linux basics is enough to pick them up. There are a few other technologies we use during devops, like Terraform, Ansible, Consul, and more.
While you don’t have to know it already, you must be willing to learn public speaking. Developers sometimes present during community events or to clients, and each developer is expected to submit a plan for a talk at the yearly Open edX conference and to present if selected. Project management skills also help, as you will be leading some projects during your tenure.
We use an agile workflow (scrum) based on two-week sprints, but these are coordinated and planned asynchronously. Getting a solid sense of how our asynchronous process works requires running through it a few times. It’s a different way of working compared to the synchronous one most companies use. However, here’s a basic overview:
You can get a more detailed explanation of the process in our handbook.
We do include benefits and time off, although in a different manner than in most places. We let each team member decide on their own compensation level, which is meant to include the benefits each of us chooses, rather than the ones a company decides on behalf of everyone.
Everyone at OpenCraft is hired for a full-time, permanent contract position. This simplifies hiring across borders tremendously, but comes with some differences compared to traditional employment.
The unit used to determine the compensation is the time spent working, and only the time spent working (excluding vacations, breaks, etc.). Team members set an hourly rate that allows them to live the quality of life they seek. During the hiring process, you will have the opportunity to set your rate. Your rate should include things like
It is not uncommon for team members to set aside cash and take month-long vacations. The vacations are not paid, but your rate can include a good bit of overhead, and so how you plan and save for vacations is up to you. Team members have a great deal of flexibility in the time they take off. You will need to give sufficient warning, and follow the vacation checklist, but otherwise you can take what you need.
We encourage team members to frequently take time off, whether it's vacation time or just a few days to recharge their batteries or take care of personal business. Team members can also request a temporary reduction of their work hours, or even a temporary reduction of their availability to/from specific projects, clients or roles.
You can read more about how rates and compensation work in our handbook.
Almost! You can work from anywhere as long as you can get your work done— that is, anywhere you have a stable internet connection and have circumstances that allow you to get your hours/tasks in.
You can also move between locations as you wish, as long as it doesn’t affect your work results and communication—some of us, including our CEO, are digital nomads.
Examples of places you can work:
Example of places you cannot work:
Yes! OpenCraft’s processes are quite unique, and there’s a great deal to learn. You will be assigned a mentor to help you through the process and answer questions you cannot find the answers to. They will also help you in planning your initial sprints and making sure you have work suitable for a newcomer.
Better yet, to make sure you have everything you need to get onboarded, including dedicated time to learn the ropes, you are immediately presented with your first project: Your Onboarding Epic.
Your Onboarding Epic is a project where you will create and manage tasks and budget for your training, similar to how projects are run by core team members. Your onboarding budget is shared between you and the team members that will be mentoring and evaluating you. It gives you a chance to learn the team’s tools, processes, and technologies by using them.
Much of your onboarding time will be spent reading through documentation, setting up your development environment, and learning how the tech stack works together. If you pass the initial 2-month trial, you’ll be able to spend the rest of the hours of your onboarding epic learning the additional responsibility that comes with becoming a fully-fledged core member of OpenCraft!
The entire company is currently around 35-40 people. It is divided into ‘cells’ which work as mostly-autonomous teams that plan their sprints independently, and each have their own set of dedicated clients and assigned projects. The number of team members in each cell varies, but when a cell gets large enough, it performs a cell split to create two teams from the original one. At the time of writing, there are two cells with 9 people and one with 13. You will be assigned a cell once you join, and this team will be the one you work with day-to-day.
Most of us are developers, but there are also a few members who are not in the main cells and do administration work like billing and sales. We also have the CEO and CTO, who are the only two managers of the otherwise flat structure. Some members are not core team members, but provide part-time support as outside consultants.