Last week we had the opportunity to join our friends at Dev Bootcamp to discuss software apprenticeship alongside Trunk Club, Pritzker Group, 8th Light, and Jellyvision. Chicago is such an open, helpful community and that spirit was alive and well on the panel. Leaders and creators of 5 very different programs shared their experiences running sustainable software apprentice programs. The conversation was wide ranging, with plenty for both apprentice applicants and those looking to start a program. This was likely due to our excellent moderator and apprentice GURU, Joe Mastey. Watch the whole panel, or read on for a synopsis of ideas that were confirmed, challenged, or totally new and we’re now thinking about.
1. Beliefs confirmed
Software apprenticeships provide significant intangible benefits
“Mentorship opportunities for our team to grow while also forcing them to question engineering assumptions that have built up over years.” Brent Williams
“It was far easier to hire someone and that didn’t have all that baggage, way of doing things and then train them the right way to do it.” Mike Jansen
“Apprentices and new people bring this spark of excitement, reminds me what I love this space, the ability to build stuff and get paid for it”. Mike Cruz
“A diversity of people and backgrounds, that brings a new level of creativity and problem solving and a bring in people who wouldn’t usually have an opportunity to be a software engineer.” Lisa O’Keefe
“For us it allows us to make riskier hires.” Dan Rumney
5 programs, 5 approaches
Software apprenticeships are dynamic, living breathing representations of the companies and cultures that create them. That said we’re all trying to replicate the challenges that will be faced in our unique environments by practicing doing the thing you’ll need to do at your future job. This is intuitive, but is easier said than done and approached in various ways.
Many product companies including Signal and Trunk Club put apprentices on production work as quickly as possible. Conversely, services businesses like 8th Light and Clique use past projects to mimic the work apprentices will do in the future.
Software Apprenticeship at Clique is carefully scaffolded, cohort based, front-end heavy and project focused. This is in-line with the skills juniors need to build to do the work of an engineer on our agency team.
Experience functioning on the team
It’s almost impossible to teach someone the mix of prioritization, communication, and social skills gained working in a high performing team without experiencing it. The mix of demands, tackled as a group with limited resources and different skills is rarely re-created in simulated training.
College groups and school projects tend to be shorter, and have less real world feedback and little to no impact for mistakes. Software Apprenticeship is in many ways an attempt to balance these forces of necessity, learning and safety.
At Clique we set hard deadlines for our apprentice projects. This helps set expectations around prioritization, flexibility and ultimate accountability to getting the task done on time. As they progress, apprentices begin to estimate workload and set their own deadlines which is an art and skill unto itself.
Apprentices are each other’s best resource
All five panelists commented that apprentices play a central role in supporting one another. Even programs that only hire one apprentice at a time have set up apprentice lunches where former apprentices can connect with the current one. Apprentices when not in direct competition are incredible support due to the common challenge, and often skill level. Moreover, our apprentices work on their own version of the same project so they are always in a position to help each other.
Meta learning, understanding their own learning style essential
Successful learners may learn differently but they all know how they learn and organize their behaviors to support that. For us, apprentice learn via pairing, direct mentorship, solo-projects, team projects, team teaching, and independent self-inquiry. We commit to provide diverse learning opportunities and now know to hire apprentices with self-awareness of their own learning style.
2. Beliefs challenged
Software apprentice to junior engineer
We were lucky to have very open communication with our apprentices which allowed them to give feedback on our plan to make decisions around hiring the last week of the program. That timeline didn’t give them much time to pursue other options in the event we didn’t hire.
After getting their feedback, we set a firm end date in our first program that we felt provided some finality and opportunity for apprentices who didn’t join the team to look for jobs. This advance notice, their new portfolios, recommendations and some job search support allowed all apprentices who didn’t join the team to find new roles within 8 days of the program ending.
To further improve, we could take some lead from Trunk Club and Signal who both highlighted the benefits of extending programs rather than having a hard stop for apprentices who aren’t quite there but are on a trajectory to be successful juniors.
Cultural fit & potential > technical skill in apprentice hiring
The whole panel emphasized the importance of culture fit in the apprentice hiring process. A big takeaway for Clique was the minimal importance other companies place on the technical skills of apprentices. Lisa O’Keefe noted that she views software apprenticeship as an opportunity to develop high potential people whose path would not likely cross into software engineering without apprenticeship.
In the past we’ve placed considerable weight on incoming technical ability, as potential is hard to measure accurately and fairly. Increasing our ability to measure culture fit, and potential has been a priority for our team and we believe will allow us to place more emphasis on non-technical skills.
3. New ideas we’re considering
Mentorship is important but doesn’t solve everything
All 5 programs offer considerable mentorship either with one engineer throughout the experience or via a project mentor who guides apprentices through a project they are intimately familiar with. Many challenges are best addressed with a hefty dose of experienced mentorship and guidance.
However, applying additional mentorship to apprentices who aren’t clear on the expectations, aren’t a good fit for the culture or are in a program that doesn’t know what it needs apprentices to learn is a recipe for wasted time and money.
Feedback in software engineering a mix of subjective and objective critique
Dan Rumney from Jellyvision had some interesting insights, noting an important skill in engineering is to delineate between subjective “I wouldn’t do it this way” and objective “you shouldn’t do it this way” feedback.
Apprentices are often at the mercy of these two types of feedback, and asking questions is the only way to understand which type of feedback a mentor is offering.
We learned early that mentors need to be trained to be mentors. It is foolhardy, and sloppy, to assume that one of your rock-star engineers who is interested in supporting the apprentices will be prepared to offer good feedback.
Critical thinking is essential
Cliché city, population 5 panelists!
The WHOLE panel jumped on this comment from an audience member. We all want humans who can think critically. After we finished high-fiving one another we settled on common goal to have team members who develop informed opinions.
For example, in a post project review to determine if an apprentice makes a decision to use a for loop to iterate through an array, they should be able to explain why they made that choice at the time, and whether or not they’d make it again after having completed the project.
This panel, and conversations like it are so important in spreading knowledge about apprentices, debunking myths and generally de-risking the process for companies to start similar programs.
Together, our panel highlighted common themes of successful software apprenticeship like mentoring, challenge, and evaluation. At the same time, we operate unique programs that are reflections of each of our awesome cultures. Moving forward, we at Clique are excited to keep thinking about this issue and to help others do that same.
Food for thought:
Our panel discussion highlighted the importance of critical thinking for software apprentices. That word can mean many things, perhaps it is a measure of someone’s future potential, integrity of thought or just a catchall for anything that we can’t explain?
- What’s your definition of critical thinking?
- Is there any reason critical thinking would be more important for an apprentice than for more senior software engineers?