The journey
Thoughts and process of becoming a journeyperson
This is a recap of my talk from February 2015 Engineering All-Hands
Guilds at Medium are teams organized around specific domains — they foster collaboration and craftmanship and spread knowledge about these areas. There are currently five engineering guilds at Medium: Web Client, iOS, Node Services, Data, and Server Performance.
In the Web Client Guild, members hold one of three roles: Master craftsperson, journeyperson, or apprentice. Journeypeople are effective, contributing members in the domain, while those looking to grow their skills are apprentices. Mastercraftspeople mentor apprentices.
Given that I was the first apprentice to graduate in the guild system, I wanted to share my thoughts on the process and make the path of growth transparent and obvious.
(start of original presentation)
“Sometimes it’s the journey that teaches you a lot about your destination.” — Drake (*source unverified)
The journey for me could be defined by four stages:
I. “Let me just double check everything I’m doing…”
In this stage, I could be building something and have a general idea of how most things seem to work, but zero confidence in any of it. Every other line, I’d be doubting: Should I use a deferred here? Am I handling the event properly? What should I name this variable? I asked a bunch of questions in this stage, which was actually great because then I started to feel like…
II. “OK, I think I can build that.”
Here, I’m chugging along, feeling a bit more confident about process, and my decisions around things like whether I should make something a component or service, how to organize code, etc.
I think this would be a good stage for the casual web client coder to be in, where they’re able to build features relatively autonomously. But guild membership fosters more than just personal productivity, it also involves spreading knowledge and cultivating craftsmanship in our whole eng org. This, naturally, involves code reviews, wherein I initially felt…
III. “I can review that?”
When the web client code review policy was first enforced, it gave me this whole new set of anxieties — people trust me to review their code? What if I tell someone something and I’m wrong and it’s merged and the site blows up? But then I figured I really shouldn’t worry about any of that because everyone here is (a) a good engineer, and (b) a reasonable person ☺.
Code reviews actually turned out to be one of the most valuable ways to grow, which is also why I wanted to call out this stage specifically. They provided new opportunities to learn, whether it was related to our style guidelines, or tactical bits like remembering to clean up references. For unfamiliar code, it allowed me the chance to ask clarifying questions in order to understand it more. Broadly, it allowed me to view processes from different perspectives and to understand others’ thought processes.
And then this funny thing started happening where I’d be reviewing something or asking some questions, and then I’d realize…
IV. “OMG, I have opinions!!!”
There are definitely mini-stages of this as well (e.g. from “I’m commenting on something you said” → “I have thought deeply about something and am going to take X action to address it”), and I’m probably somewhere in the beginning-middle. As it is now, I’ve just been happy to find myself participating in more discussions in my initiative and in the guild.
This stage is a culmination of all the previous stages, where I’m still double checking things and bouncing ideas around, building small and larger features, and reviewing more code — but it now all works together.
The process
So, what was the process behind all of this?
Though guilds vary across the different domains, each one applies a mentor/mentee model between a Master craftsperson and their apprentice.


Along with his accoutabilities as a journeyperson, Anton also had the added responsibility of teaching young, grasshopper me, comprehensive web client skills. (And I had the accountability of learning and gaining aforementioned, comprehensive web client skills and knowledge.) These skills are codified in a document by Koop (Lead Link) on Hatch, aptly titled, The Journey, which covers concepts from vanilla JavaScript, to styles and templates, to Closure, to Medium specific knowledge, etc.
I found this list quite helpful just in terms of providing a well defined and scoped curriculum. Otherwise, I feel like you could say, “okay, learn everything there is to know about the front-end,” but there’s just so much to learn in general that it could never end. We should also keep in mind though that the list of concepts isn’t exhaustive nor strict.
Some of the topics translated really well into initiative work, while others were harder to reconcile. Being in the guild was really opportune in terms of then setting myself up to be a front end resource for my initiative, taking on larger projects that could further my craft. But then, of course, there were concepts that were not applicable to goals of the initiative, where I couldn’t just say, “why don’t I write X feature this way so I can learn about event propagation,” as they didn’t further the initiative’s objectives.
In Discovery & Delivery, while working on the homepage redesign, I was able to think about how to build reusable components like a new sidebar, how to render things efficiently and responsively like the promos on various screen sizes, and how to consider performance when manipulating elements on the screen while we’re scrolling.
For anything not covered by initiative work, having Anton as my Master Craftsperson was invaluable. We’d meet once a week to check in and just go over how things were going, if I had any questions or problems that had arisen over the week. We dedicated our last couple of meetings though just to go over the preset curriculum and cover all our bases — I didn’t really get into any details about the event loop or things like profiling memory usage during my work on the homepage, so we spent a meeting just on those.


After all of that, over the course of four & a half months, I scheduled a meeting with Koop. We first established whether I felt ready to become a Journeyperson, making sure Anton just wasn’t trying to get rid of me ☺. Then, we just walked through the list of skills in his document, spending longer on some (“so, talk to me about callbacks”), chatting briefly over others (“yeah, you’ve used our LESS style guidelines”). AND THEN…


I found the entire process very rewarding, and the guild system a very practical example of ways we foster personal and engineering development at this company. Looking forward to the rest of this journey!