Ever since I joined 8th Light 4 years ago as an apprentice, our apprenticeship has been changing. Sometimes it had to adapt to the needs of the mentor being on client site most of the week. Or it had to adjust to the skills and talents the apprentices brought with them. I have a few ideas to highlight learning outcomes, provide more structure, yet keep the apprenticeship individual. And yes, this will be yet-another-app.

Perceived changes and new challenges

Before we go into what I feel we could do better, it is important to understand some of the shortcomings that I’ve observed.

For apprentices, a big issue is the anxiety due to the uncertainty they perceive around the apprenticeship. This revolves around questions like “Am I learning fast enough?” or “What are the milestones I need to complete before my graduation?” and “What will I be doing next week?” There is also uncertainty in the individual tasks and exercises they are asked to do. I have often heard apprentices wondering what they should really be getting from an exercise, or complaining that they don’t really know what they are supposed to do. My hunch is that a degree of cargo culting from us mentors and a broader range of experiences (from career changers without programming background to professional engineers with 10 years experience) is reinforcing this feeling of anxiety.

For mentors, life isn’t any easier. They need to balance the everyday client struggles with finding time and space to mentor the apprentice(s). More and more of our mentors are now on site at a client engagement and as such, weekly check-ins are done either remotely, later in the day, or crammed into a busy Friday afternoon. This leaves very little leeway to find the right exercise that will push and challenge the apprentices to gain new insights. Unless there is some strong will, there is a good chance mentors will fall back to exercises and reading material from their own apprenticeship. There is a current trend to try more “application centric” exercises rather than varying constraints on the same problem, and we should capitalize on these ideas.

Explicit is the new implicit!

During the apprenticeship, there are a few things we need to keep in balance:

  • Everybody should have the same introduction to the company and apprenticeship. This includes things like getting an email address, signing into Slack, being introduced to everybody, and signing our employee handbook and code of conduct.

  • Every apprentice is different, comes from a different background, and has a different trajectory. Realizing this means that we need to be able to tailor each apprenticeship to the apprentice and their learning style.

  • We have a common set of values that we want all our graduating crafters to live up to. Throughout their apprenticeship, we need to instill these shared values, no matter what path they take.

A lot of this is implicit today. For example, it takes apprentices weeks to appear on our website, because it’s considered more of a side-task of… the mentors? the apprentice? Or the purpose of having apprentices write blog posts is mostly implied. Sometimes it’s to improve the writing skills, sometimes it’s to emulate client communication, and often it’s to allow the mentor gain insight into the apprentice’s thinking.

The best way I can see this working is in making more and more of the apprenticeship explicit, somehow codified. The trick will be to make it codified, but flexible. Broadly applicable, but custom for each apprentice.

The rough outline

The general idea is to codify the exercises we currently do ad-hoc into modules. These modules will provide a fairly rigid structure in how they represented to the apprentices. The rigid structure is intended to both make each module more predictable (repetition helps!) and to force us mentors to think about certain teaching aspects (mentioned later) and make them explicit.

At the beginning of the apprenticeship, there would be a set of modules that are predefined and are the same for all apprentices. These form a kind of tutorial, gradually introducing our values, tools, and processes. And critically, ensuring all our bases are covered. This would be the place where we ensure the apprentice has all the tools, is aware of the critical processes, and knows about the shared goal and values of the apprenticeship.

Crafting a path with an initial tutorial

Crafting a path with an initial tutorial

Following on from the initial tutorial, the mentor and apprentice will be presented with a buffet-like set of modules they can choose from to tackle. This is where the individual apprenticeship emerges. The apprentice can look around and spot things they’d be keen on trying, while the mentor can fall back on a large pool of exercises.

For the mentors

With the growth of our office, more and more crafters are stepping up to be mentors. That is awesome! The drawback: we don’t always have experienced co-mentors to support the first-time mentors. This has a couple of consequences. As mentioned above, the beginning of the apprenticeship has too much variance, while it should probably have the least variance of the entire apprenticeship. But it is hard to keep up with how the apprenticeship has evolved since we all started our apprenticeships. The tutorial should streamline this without coming across as a tedious checklist that needs to be run down.

Another big advantage of collecting and codifying our shared experiences is that we can build upon each other. London at some point started a trend of small “manager” apps, like PokéMan or WeatherMan. These were built with specific learnings in mind, like getting exposure to database or file storage or asynchronous programming in JavaScript with React. I am sure there are a lot more interesting exercises in the other offices that we haven’t heard of. Mentors looking for creative ways to reinforce a lesson could search through the modules to find just the right exercise.

For apprentices

I think the biggest gain for apprentices from creating this path is less anxiety. It’s hard to know where you stand when there is no real finish line, other than a magical date with “challenges” attached to it. A path that you can come back to, to see what you have accomplished and relate back to is just as valuable as a broad overview of what is coming ahead.

Your path, where you came from and what is ahead

Your path, where you came from and what is ahead

The structure of each module should also help apprentices better understand what is expected of them, without giving away solutions. The expectation is set by very explicitly stating two things on each module:

  • the output: what tangible things the apprentice is expected to deliver. Maybe some features, or some specific code, or a blog post, or a talk etc…
  • the learning outcome: What is the apprentice expected to learn from this module. These should be expressed in high-level verbs and relate to our values and principles.

These outputs and outcomes are where most of our effort as mentors should be.

Outputs and outcomes as part of learning modules

Outputs and outcomes as part of learning modules

It’s perfectly fine (and expected!) for multiple exercises to have the same outcome, to allow for many different learning styles.

Outputs, Outcomes, and Learning Styles

Having multiple different modules cover the same output at different levels will allow mentors to select the right tasks (and their order) to give an apprentice the highest chance of success. This is particularly important when we consider that we have apprentices with varying degrees of prior experience. There is a very interesting SOLO Taxonomy from John B. Biggs and Kevin F. Collings book that describes different levels of learning outcomes. Attached to each of the 5 levels are a series of verbs such as “identify”, “enumerate”, “describe”, “compare”, “relate”, “generalize”, or “hypothesize”. Each of the levels represents an increasing form of learning, from “Unistructural” all the way up to “Extended abstract”.

Having defined outputs on tasks will make it easier for apprentices with a tendency for a surface-learning style to understand what they need to deliver. Making the module outcomes explicit will encourage apprentices with a deep-learning tendency to connect the current module other modules and existing knowledge. Explicit outcomes will also allow apprentice with less experience to latch onto a common thread (e.g. refactorable code, or expressive tests) across multiple modules.

SOLO hierarchy showing different levels of learning

SOLO hierarchy showing different levels of learning

The challenge for mentors will be in connecting our exercises with clear outcomes that are expressed as some of our high-level principles and values.

Embedding it in our culture

A tool that does not find its niche in our existing culture will not last more than a few days. So it’s worth me theorizing how Path to Mastery would fit into our current landscape. I don’t think it should replace Artisan, writing and estimating stories, or Zagakus. All three of these play a key role in instilling our values and keeping our apprenticeship closely resembling client work (stories + estimating). The way I imagine the workflow would be to break a module into multiple stories in Artisan during the apprenticeship and marking a module as done when both mentor and apprentice agree that the outputs have been delivered and the outcomes are shown. There is enough wiggle-room there to allow the pair to individualize as needed.

Overall, I believe an app like Path To Mastery would help in making the apprenticeship less stressful for apprentices and mentors alike, by making expectations more explicit. Mentors will gain access to a larger set of experiences and be guided in the initial phase of the apprenticeship.