The Apprenticeship Program



Introduction

Welcome to the Nebulab Apprenticeship Program!
The program will set you up for success as a junior software engineer at Nebulab.
We want to foster a safe and welcoming environment for all of our new hires, in order to give them time to make themselves comfortable with our technical stack and company culture.

Target audience

At this time, the Apprenticeship Program is only available for Ruby on Rails/Solidus engineers. We do not offer apprenticeships for frontend engineers yet.
The Apprenticeship Program is targeted at Entry Software Engineers, or Associate Software Engineers who are completely new to the Ruby/Ruby on Rails ecosystem.
If you have already worked with Ruby/Ruby on Rails, or have extensive experience as a software engineer with other technologies, the program will most likely be too easy for you. In that case, we recommend working with your manager on building an ad-hoc learning path.

Program structure

When you join Nebulab as an apprentice, you will get assigned to one of our projects, just like everyone else. However, unlike everyone else, you will not jump straight into the project from day 1: instead, your Engineering Manager will first take you through the Apprenticeship Program.
The Apprenticeship Program is split into three modules. At the end of the module, you will be evaluated through a standardized exercise: if you pass the exercise, you will be promoted to the next module; if you fail the exercise, you will re-take the module and then re-do the exercise.
Each module is designed to be approximately four weeks long. If you finish the module in less than four weeks, you can take the exercise to be promoted earlier. If you need additional time, you can ask your manager for an extension—note that each request will be evaluated by your manager on a case-by-case basis.

Program curriculum

If you already have experience with Web development or Solidus, you might find some parts of the curriculum a bit dull. We are aware of this, and we still ask you to go through the all the study material: that ensures all our apprentices have the same learning opportunities and are set up for success.
The apprenticeship’s curriculum is a mix of theory and practice that mostly relies on trusted existing resources such as courses, guides, articles and conference talks. In fact, much of the curriculum is a selection of content from our  The Learning Library .
In addition to the standard curriculum, which is mandatory for all apprentices, your EM may also add extra material for you during the course of the apprenticeship. This will be available in your page and will be targeted at improving specific aspects of your technical and soft skills, as deemed necessary by your EM.

Technical evaluation criteria

Certain modules will have technical exercises attached to them which you will be required to complete in order to graduate to the next module. This will typically require you to solve a technical problem and submit a PR on GitHub.
Your submissions will be evaluated against the following criteria:
Correctness: is the exercise correct (i.e., does the output match the expected one)?
Developer friendliness: did you write documentation for your work (e.g., setting up dependencies, running the project, running tests, etc.)?
Git & GitHub: have you used the PR description and Git history in a consistent and valuable way that makes life easier for other developers?
Code structure: does the code respect good architecture and design standards?
Testing: are the tests thorough, readable and maintainable? Is there a testing strategy in place (e.g., correct splitting of unit and integration tests, naming conventions, etc.)?
Framework conventions: does the project follow best practices for Ruby, Ruby on Rails and Solidus projects (e.g., linters, folder structure, RESTful routing, monkey-patching etc.)?
You will get a score from 0 to 6 for each criterion:
1: Really Bad
2: Bad
3: Average
4: Good
5: Excellent
6: Perfect
You need to score a total of at least 21 points in order to graduate to the next module.

Asking for help

Your  Apprentice Progress  page will be your go-to resource for tracking your progress and finding any additional study material your Engineering Manager is recommending.
If you manage to go through everything and run out of learning material, reach out to your Engineering Manager to figure out the next step together!

What if I get stuck?

If you get stuck or want to ask a question, you are strongly encouraged to do it in the   #team-apprentices   channel in Slack. This will allow other apprentices to chime in.
At the same time, you should take some time to help your fellow apprentices, should they get stuck! Remember: you’re all here to learn, it’s not a competition.
If no apprentice is able to answer your question (or if you’re the only apprentice!), your Engineering Manager will jump in to help you.