Become Exercism's new Rails developer! We're looking for some who loves working with Ruby and Rails to continue to develop Exercism's backend. Do you take pride in building well-architected, performant and readable Rails code? Do you enjoy working with Ruby more widly too? Do you have a passion for programming and a growth mindset? If so, this role might be perfect for you.
Exercism is a not-for-profit organisation providing world-class programming education to anyone for free. Our online platform is centred around self-directed learning and volunteer mentoring, and has nearly one million members. Over the next 5 years, we want to become the defacto programming education platform that anyone, anywhere can use for free. Through our work we aim to improve the global standard of programming and increase participation in tech from under-represented groups. You can learn more about Exercism in our "About Exercism" pages.
Exercism is a complex, highly-technical platform, with production code running in over 40 languages. Our backend is centered around a Ruby on Rails backend (API, data and service layers) and a service oriented architecture (SOA) orchestrated using Ruby. We run on AWS and use a variety of their different technologies. We're looking for someone to take the lead in the continued development of Exercism's backend, implementing new features in the main Rails app, and extending our SOA with new functionality.
We are building an exceptional team of ambitious, passionate people who love their work, excel at what they do, and have fun doing it. The values of empathy, integrity and personal-growth are core to everything we do. If that sounds exciting to be part of, and you feel you have the skills to help, we'd love for you to apply.
You'll be our primary backend developer, working with our team to add new features to Exercism's platform, and evolving and improving the ones that are already there. This will involve working within our Rails codebase, our various microservices (and the piping between them) and working with our AWS account.
As Exercism is a large and complex site, there is a huge variety in the things we work on day-to-day. Here is an idea of some of the things you'll work on through the first 12 months:
- Working with the front-end dev to build our new automated mentoring management system.
- Moving from our current mail provider to SES, writing a webhooks API to store underlying deliverability data (and saving us 90% costs on email!)
- Developing out a prototype for our new Exercism Teams platform.
- Adding a variety of action/reaction mechanisms to improve retention.
- Working through many of the open issues that our community have opened.
You'll be working day-to-day with:
- Our Head of Open Source, who manages our wider codebase (written in 30 languages) and its integration points into the primary backend.
- Our front-end developer, whose React code consumes the backend API and presents it to our end-users.
- Our CEO, who has written most of the existing Rails backend, and will continue to contribute features from time-to-time.
We'll also encourage you to get involved in our wider community, to tap into their collective knowledge and experience, but this isn't compulsory.
Is this job right for you technically?
The right person for this role will be someone who loves programming, is passionate about education, and who shares our values. We're not worried about your qualifications - what matters to us is that you'll be able to do a great job of developing our backend.
From a technical perspective, we're looking for someone who has:
- Strong Ruby and Rails skills. You should have worked on Rails codebases and solved meaningful problems in Rails. You should "get" Rails, feel comfortable in it, and enjoy using it. You should understand "why" things work as they do - for example do you "get" how Zeitwerk works?
- A fundamental belief in the importance of writing good tests. We generally encourage using TDD, where sensible. At Exercism we use minitest, not spec-based tests.
- An interest in performant SQL (we use MySQL). We can help get you up to speed if you've not got much experience in this area, but we'd like you to care about it.
- Ideally some experience with AWS. We use Terraform to build our infrastructure (code here). Experience here isn't essential, but it would be good to have someone who has an interest in learning this, even if they haven't done much before.
One important consideration is that our codebase has several strong conventions and patterns that we use consistently in both our Rails and Ruby apps. At a fundamental level, they revolve around us taking a more functional approach to Ruby and making use of the command pattern. In Rails we have small controllers, small models, and functionality encapsulated into specifically callable function-style classes. We prefer this approach as it allows developers to clearly see the side-effects of code, but it is in stark-contrast with the more Object Oriented approach that many organisations take with Ruby. For example, this controller action calls this command to generate the data that is passed to these two serializers to present the data to the user. This results in the Track model being pretty slimline. We love working with these patterns, and it's important that you're going to enjoy working with them too!
Before applying, please take time to look through the website's codebase to see if it looks like something you want to work within. We will discuss your thoughts on the codebase further if you make it to the interview stage.
Is this job right for you personally?
Even more than the technical considerations, it matters that you'll enjoy working in our team. There are a few principles that underpin how we work. If these sound exciting to you, then you'll probably enjoy working with us:
- We take on high levels of personal responsibility and work autonomously. We discuss problems and ideas with other if we get stuck, but don't pair-program.
- We have a strong tendency towards pragmatism, and tend to make decisions that optimise for the bigger picture over situational-perfection.
- We write code that makes it easy for others in the team to work with. We choose standards and stick to them. We generally prioritise developer-happiness over technical optimisation.
- We are dedicated to continous personal development. We each have intrinsic drives to learn, grow and elevate our standards.
- We believe and trust in each other, support each other, and make time for each other.
In additon to these things, our whole team have a shared commitment to kindness, honesty, and curiosity, and strive to build a working environment where everyone can learn, improve and do their best work. We believe that everyone has the right to feel happy, safe and supported at work, and strive to ensure that is the case at Exercism. We celebrate diversity, and do better work because of the different perspectives and insights that different experiences bring. It's important to us that you share these values and want to be part of a team living them out.
Finally, we want to hire someone who can get passionate about Exercism. We care deeply about what we're building - about creating a world-class educational resource that everyone can use for free, and it matters to us that everyone in the team shares that passion.
We are a fully remote team who communicate in English. We aim to mix effective work with a sense of connectedness, so spend some time during the week on video calls sharing ideas and updates, some time doing simpler work while being on Slack, and some time offline focusing on deeper work.
These lead to the following extra requirements:
- Able to work at least 4 hours per day during 9am - 6pm UTC, to enable you to interact with the rest of the team.
- You are willing to travel once per year for an in-person meetup.
- You are comfortable speaking English, and could write English to a level similar to this.
- You are excited to work in a diverse, inclusive team that cares about culture and where honest, empathic communication is the norm, and self-improvement is a lived value.
Research has shown that people from under-represented groups are less likely to apply for jobs if they don't feel they fit all of the criteria. If you think you'd enjoy the role and could do a good job, but are not sure if you're fully qualified, please apply anyway!
Treating each other fairly is at the core of our individual and company values, and we want the pay and benefits of Exercism to reflect that. We offer the same benefits to all Exercism employees.
- A truly flexible, remote-first, working culture.
- A collaborative, creative and inspiring working environment. No shouty bosses, presenteeism or unexpected deadlines.
- £50k starting salary, which increases each year (inflation + 2%).
- Matched pension contributions up to 3%.
- 35 days holiday.
- We will pay for access to a local co-working space (if desired).
The role is full time, but you may choose to work either 5 days (~40 hours) per week or 4 days (~32 hours) per week. If you opt for the shorter working week, salary and holiday will be prorated accordingly.
How to apply
Firstly, if you're about to apply, thank you! We're grateful and excited that you're taking the time to do so 🙂
We're expecting a high number of applicants for this role, and so expect there to be a few stages of the application process. We've listed out the process below so you have a clear expectation of how the process will work.
To apply send an email to email@example.com with:
- Subject of "Rails developer"
- A couple of paragraphs introducing yourself and providing some brief background on yourself.
- A couple of paragraphs listing relevant experience and if possible links to code you've written.
- A link to a short video introducing yourself in more detail, telling us why you're interested joining Exercism, and giving us some more information on your experience and why you're right for the role. Don't worry about the quality of the video itself! Try and keep it around 5-10 minutes long. We use Loom for easy recording and sharing.
The application process will run as follows:
- You send in your application.
- We'll get in touch to acknowledge receipt of your application (generally within 2 working days)
- We'll review your application and let you know whether we wish to continue the process with you (generally within 7 working days).
- We will send you a questionnaire to try and understand more about your experience.
- Based on initial applications and questionnaires, we'll invite some people to complete an asynchronous, untimed coding task to complete.
- Based on that coding task, we'll invite a set of applicants to have a video interview with the Head of Open Source.
- Based on that interview, we'll invite a final set of applicants to have a video interview with the CEO.
- We hope to make a final decision on who we offer the role during April or May.