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 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 first few months 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.
These days, community development of the platform is organized by Axim Collaborative. OpenCraft is frequently contracted by Axim 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 should be familiar with CSS and JavaScript. You don’t have to be an expert in these, but you should not be afraid to get your hands dirty with them. Open edX uses React on the frontend, and it's important to know it or a similar framework. Bonus points for TypeScript skills, although you can learn that as you go, too.
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. The majority 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 DigitalOcean environments, most typically via Kubernetes. Any knowledge you have here will be helpful, though if you know Linux basics, you can lean on the Open edX-specific orchestration tools we use (Tutor and Grove) to start. Our development and production environments heavily leverage Docker containers.
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 permanent contract position on an hourly basis. 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
To make this easier, we came up with this spreadsheet that helps you figure out a rate which works for you. 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.
Read more about the full job description here.