The Vokal Apprenticeship Program Manifesto
Vokal needs great engineers.
We would love to be able to simply go out and hire tons of already-great engineers. However, as we have attempted to do this, we have realized that there is a serious shortage of talent, particularly in the Chicagoland area. We can’t just hire our way out of this problem.
Thus, we must create great engineers.
Our previous Apprenticeship program was lightly structured. Apprentices were encouraged to figure out things on their own, and only given light guidance on how to spend their time. They were not generally working on production code.
While the previous program did occasionally allow the highly motivated to shine, it lacked enough guidance to allow as many engineers to succeed as we need to be able to hire.
Thus, Apprenticeship 2.0 was born in 2014. A more structured experience, with a goal of allowing more Apprentices to successfully move into Engineer 1 positions.
Goals of this program
This program serves two primary audiences: Vokal and the Apprentices themselves. The goals line up differently for each:
- Increase the available pool of talented engineers
- Get entry-level help on projects
- Create a more direct on-ramp to full-time employment for talented Mobile Makers
- Make sure entry-level engineers have the skills they need to succeed independently
- Have a way to give extended tryouts to anyone who is enthusiastic, but may not have the requisite experience to be an Engineer 1.
For the Apprentices:
- Work on real production code
- Learn the day to day business of having a job coding
- Learn to work with a team on a long-term basis
- Work one-to-one with a Mentor
- Have guidance on good areas to focus their learning
- Learn to estimate and deliver on expectations
Apprentices need to have built at least one application (for mobile devs) or site (for backend/frontend devs) on their own.
They may still need help with concepts like scoping of variables, structuring code, working with libraries, and other more advanced technical concepts, but they must have a basic understanding of building working code.
Apprentice candidates must show strong enthusiasm and aptitude for learning - they will be expected to learn a lot very quickly in this program.
Apprentice candidates must also be willing to ask for help when they need it - they must understand that we would much rather they bug us than spin their wheels unnecessarily.
Vokal offers all Apprentices hourly employment for a pre-defined period of 3 months. During this period, each Apprentice will be supervised, assisted, and evaluated by a Mentor.
At the end of that period, Vokal has the option to offer any Apprentice who has completed the skills sheet a full-time position as an Engineer 1.
During the apprenticeship program, Vokal has right of first refusal on an Apprentice participating in the program. This means that Vokal reserves the right to match any competing offer received by the Apprentice during their Apprenticeship.
The hourly-to-salaried structure limits risk on both sides: Vokal limits its risk with a fuller picture of less-experienced candidates’ abilities before offering a full time position. Apprentices limit their risk by being able to take Vokal for a test drive before signing on for a position, and by being able to learn while still getting paid.
Apprentices are expected to divide their time 70/30 between project work and non-project work. Apprentices are paid hourly and are expected to work up to, but no more than, 40 hours a week (including 30 minutes per day of paid breaks, as with all Vokal employees).
Each Apprentice has one Mentor. Ideally, the Apprentice will be seated near their Mentor in order to easily be able to ask questions. Each Mentor and Apprentice will have formal 15 minute “stand up” meeting each day to discuss the Apprentice’s progress, questions, and goals. At the end of each week the Mentor and Apprentice will meet for a 30 – 60 minute retro.
Each Mentor is responsible for all production code written by their Apprentice. Mentors must thoroughly code review all production Apprentice code. Mentors are also responsible for helping Apprentices develop their non-production curriculum (see below).
Since Apprentices may not work more than 40 hours a week, if an Apprentice realizes they are not going to get their project work for the week done within the allotted time, they must speak to their Mentor immediately. Their Mentor can then work with the Product Owner to account for that in the project’s timeline.
Each Apprentice will be added to the primary project of their Mentor. The Apprentice is expected to attend all meetings for that project, in addition to the code work they’re doing, so that they can learn how the day-to-day work of projects gets done at Vokal.
Each Mentor is responsible for slicing off a small piece of work on their primary project for the Apprentice to do each week. This allows Apprentices to work on production code (and truly, there is no substitute from a learning standpoint for this), but allows Mentors to limit risk by keeping the scope of the Apprentices’ work limited.
Since points are equivalent to hours, a higher-level developer is normally be expected to complete 30-35 points a week. Apprentices are expected to start out with a low number of points as estimated by their mentor, and then move to a higher number of points that they begin to estimate themselves as the apprenticeship continues.
In the first 4 weeks of the Apprenticeship, the apprentice should be billing at least 5 hours a week to clients. The apprentice should be working off the mentor's estimates, to see how long it takes them to do something in comparison to the estimate of a more experienced engineer.
By the 4th week of the apprenticeship, the apprentice should be billing at least 10 hours a week to clients. The Apprentice should work with their mentor to start coming up with estimates together.
By the 8th week of the Apprenticeship, the Apprentice should be estimating all their assigned stories rather than relying on their Mentor's estimates and/or help. At this point, apprentices should be billing at least 15 hours a week to clients. This helps Apprentices learn how to both estimate stories accurately and deliver on expectations they've set.
In the event that project work dries up on the Mentor's primary project, it is the responsibility of the Mentor to make sure the apprentice has enough billable work to get them to the billable threshold appropriate for the current phase of the apprenticeship. Mentors without current billable work should reach out to their co-workers to see who is in need of an extra set of hands.
While the scope of each project will limit what each Apprentice is able to work on in production code, we want to make sure that an Apprentice acquires as broad a set of skills as possible during the program.
All Apprentices are expected to understand the fundamentals of other engineering disciplines. To help with this, every Apprentice must take on one project outside of their discipline to help them understand the other side of the equation.
iOS, Web, and Android Apprentices will be required to build a simple server that they are expected to consume with a client app they've written. Systems apprentices are expected to create a website, an iOS app, or an Android app which consumes an API they've written.
Beyond that, Apprentices and Mentors will work together to determine where the Apprentice has areas of interest and/or weakness that they would like to address during their less-structured time, and come up with a strategy for creating projects that address those areas of interest.
We have a checklist of skills we would like to make sure any Engineer 1 can accomplish with minimal supervision in order to help guide the decision-making process for coming up with this curriculum. The general skills checklist, which also contains some useful links to additional reading and/or tutorials for each qualification, may be found here, and contains links to checklists for each discipline.
Apprentices should follow the same guidelines on time entry as all other Vokal employees.
At each weekly retrospective meeting, the Mentor must honestly appraise the Apprentice’s progress thus far and align their expectations.
While there's sometimes a fuzzy line between being frank and being a jerk, if an Apprentice is doing something wrong, it's much easier for them to correct that if the Mentor is honest with them about the problem. No matter what, the mentor must be clear about where the Apprentice is both succeeding and falling short.
Apprentices should bring questions about difficult concepts or code they were not able to get immediate answers about over the course of the week. They should also be ready to give an honest assessment of their performance over the course of the week. We all have great weeks and bad weeks - it's important to be able to identify which is which.
When the Apprentice has 3 weeks remaining in their stint, each Mentor is responsible for making a go/no-go recommendation from a technical standpoint for hiring. The guidelines created for each discipline which outline the qualifications for an Engineer 1 will help guide this decision.
The Apprentice must prepare and deliver a 15 minute presentation to Vokal leadership about their side project. The goal is to both show Vokal leadership what the people we've been training and are now potentially hiring have been working on, and to give the apprentice a chance to practice presenting technical material in front of a non-technical audience.
The Apprentice and Mentor will also complete a formal retrospective (well, not well, needs improvement) of their experience in our program.
Feedback in terms of fit on the team will be solicited from the remainder of the team, but since the Mentor will have the strongest knowledge of the Apprentice’s coding abilities, their recommendation will carry the heaviest weight.
Once this feedback has been collected, the Apprentice will be informed when they have 2 weeks remaining in their Apprenticeship as to whether they will officially be offered an Engineer 1 position at the end of their Apprenticeship.
If you have any questions about this program, please talk to your department head.