One of our core values is lifelong learning. Growing ones skillset and capabilities is at the heart of the Cantilever identity. That’s why we place such importance on growing junior talent, and why we have the Apprentice program.
The Cantilever Apprentice Program allows talented newer developers become junior developers at Cantilever. This involves both general skill-sharpening and a familiarization process with Cantilever methodologies. Apprentices are not newbies. It takes a talented individual with sharp skills and a good amount of real-world experience to begin as an Apprentice, and Apprentices are expected to contribute to production projects shortly after joining.
The program is ideal for developers who:
- Have built lots of projects on their own, but don’t quite have a methodology in place
- Don’t have a depth of knowledge to lean on, but learn new concepts quickly
- Would like to find a practical, time-saving way to work and build real stuff
Apprentices are paid team members and work full-time, though we can make arrangements for apprentices who wish to work less often. A full-time apprenticeship should last around six months, which can be accelerated or lengthened on a case-by-case basis.
Cantilever will most likely extend a Developer offer to apprentices who meet all the Apprenticeship goals (barring unforeseen financial barriers), but Apprentices are free to leave the program at any time and are not under any obligation to join Cantilever long-term when finished with their apprenticeship.
All Apprentices will enter the program with a varied range of experience and expertise, and the program should be flexible toward what they are particularly interested in learning. As baseline standards, an Apprentice should demonstrate:
- Mastery of HTML/CSS syntax
- Strong understanding of common approaches to typical HTML/CSS/JS features (Slideshows, menus, responsive heroes, filtering systems, etc)
- Strong understanding of a CMS and how to build sites on it in a Cantilever-aligned way (ExpressionEngine, Wordpress, Craft)
- Strong understanding of the Cantilever CSS methodology and current conventions
- Strong understanding of the Cantilever JS methodology (Pub-sub) and current conventions (Backbone + Underscore)
- Comfort with Cantilever build processes and local environment setup
- Comfort working within a team and adhering to a project management methodology
- Ability to set and meet deadlines, respect for project schedules and the team’s obligations to the client
Outside of those guidelines, an individual Apprentice will have their own goals according to the specialties they wish to focus on in their career. Cantilever’s development team will tailor the program to these specific interests.
How it Works
An Apprentice should spend about half their time learning/growing, and half their time contributing to Cantilever projects. The first few months should feature more learning time, and the last few months more contributing time.
Non-project time might include:
- Digging in to existing Cantilever projects and experimenting with the code
- Shadowing Cantilever developers, especially during planning meetings
- Researching common questions on StackOverflow
- Answering questions on StackOverflow
- Reading books and articles, watching screen casts, listening to lectures
- Researching and writing blog posts for Cantilever blog
- Writing and delivering lunch-and-learns for Cantilever team on a topic of interest
Project time should include any work a typical junior developer might do:
- Building HTML/CSS frontends and connecting them with CMS systems
- Working with a CMS to add new channels, fields, etc
- Creating JS-powered views and integrating them with CMS data
- Refactoring existing HTML/CSS to match Cantilever methodologies
- Writing automated tests
- Writing documentation
Due to the nature of our client agreements, Cantilever requires time tracking for all working hours. Apprentices should be able to log their time to non-billable “Training“ tasks, to avoid their hours being billed directly to clients. Instead, project managers will determine how many hours to bill for an apprentice’s tasks, and will shift the timesheets and invoices appropriately.
Especially since our Apprentices are talented, and one of our core values is Self-Reliance, it will be tempting to ask them to do too much too quickly. This slows down learning, which means the Apprentice needs longer to be truly productive, and places unreasonable expectations on Apprentices from clients and teammates. Apprentices must be allowed to grow and learn independent of internal deadlines or schedule crunches. It is useful to have an Apprentice on a team which is pushing for a deadline, so they have a sense of what it takes to deliver real projects on time. But their deliverables must not be mission-critical, and we must have a backup plan for them if it takes longer than expected.
- Apprentices do not make final architectural or strategic decisions
- Apprentices work with a team lead who can help them and check their work. Apprentices do not lead projects.
- Apprentices should not be accountable for fixing emergency issues. Their work should be understood enough by their Advisor that the advisor can be accountable.
As with any team member, in keeping with our value of Transparency, Apprentices should have a clear sense of their goals and responsibilities at any given time. Advisors are responsible for ensuring that is the case.
Apprentices can and should:
- Speak with clients and present work when appropriate. CMS trainings are a great way to do this.
- Produce client video walkthroughs of features they have built
- Help make key strategic and architectural decisions for projects
- Work on teams with important deadlines
- Build and ship important work
- Work, hard, full time. Most Apprentices will do a standard Cantilever week of 35 timer-hours. Much of that is concerted learning time, but it’s still work.
All apprentices should have a single advisor (in lieu of a manager). The advisor is responsible for setting up an apprenticeship kickoff, biweekly 1-1s and monthly Apprenticeship Reviews. The advisor is responsible for approving graduation from the program and coordinating a possible job offer for graduates.
During the kickoff, the Apprentice and Advisor should:
- Meet with the rest of the team to make proper introductions and ensure the Apprentice knows who does what
- Establish a set of goals for the apprenticeship building from the common core list
- Perform typical employee onboarding, communicate how we do things
- Set up the first month’s worth of project and learning time
- Establish an anticipated graduation date
During a review, the Apprentice and Advisor should assess:
- What learning & growing has the apprentice done since last month?
- What project contributions have they made in the last month?
- Candidly, where does the Apprentice stand along the overall goals (graduation requirements) for their time with Cantilever? Provide grades for each item on the following scale:
- Exceedingly Ready
- Where does the Apprentice stand with regard to developer-level efficiency on projects?
- When should the Apprentice expect to graduate the program?
- How will the Apprentice spend their learning/growing time next month?
- How will the Apprentice spend their project time next month (barring unforeseen events)?
As the Apprentice completes their goals, graduation and a job offer should become possible. For an Apprentice to graduate, the Advisor must:
- Work with HR (Chris) to construct an employment offer for the Apprentice
- Conduct an Apprenticeship debrief with the Apprentice. What did they learn? How did they feel about the program? What could we be doing better?
Apprentices should be given the time and help to produce production-level work, and consequently will be expected to deliver just that. The difference in being an apprentice is that a 1-hour task might take four of their own hours, plus two hours of pair-programming to complete, and that’s totally OK and expected.
At the outset, we expect the rate of true billable hours produced by an Apprentice to me minimal. But as the apprenticeship progresses, Apprentices should increase their ratio of project to non-project time, and should begin producing more efficiently during their project time.Individual apprentices will have varied benchmarks for production depending on their situation and goals.
Why Does This Matter?
The development industry does not have the patience to cultivate junior talent, nor a culture and methodology to train that client in. Agencies want “mid-senior” developers who can hit the ground running with no time for mentoring. But how are juniors meant to reach that point?
Our goal is to be an ideal landing place for elite junior talent. We win by ending up with exceptional developers; they win by having a place to learn and grow while getting paid and working on real projects. Building an incredible Apprentice program is pivotal in our vision of making the web industry better.