What's the real difference between a junior developer, an intern and an apprentice?
Case Studies in Apprenticeship Vol. 1 — Coraline Ada Ehmke
Time to Read: 19 minutes
Joe: Hey Coraline, thanks for taking the time to talk. Can you tell us a little bit about yourself and what you’ve been up to lately?
Coraline: Hi! My name is Coraline Ada Ehmke, and I’ve been developing apps for the web for about 20 years now. I spend a lot of time working with new developers: through apprenticeships at my job at Instructure, on behalf an organization called Chicago Women Developers, and also through one-on-one mentoring. Most of my effort is directed at helping and supporting women in tech and people on the LGBTQ spectrum. I’m passionate about making sure that people who are new to the field have the resources they need to be successful.
Joe: Awesome. We’ve talked a bit in the past about how you’ve done apprenticeship programs both at Instructure and at previous jobs. Why do you find yourself choosing the path of investing so much time and effort into apprenticeships?
Coraline: I’m interested in the role that apprenticeships play in shaping the culture of software development. It’s hard to influence the overall direction that the community is taking, for better or for worse, but I realized that one way to effect change is by working with people who are new to the field. Helping them find what is important to them as developers and as individuals, and encouraging them to stay true to these values, changes the overall mix in the larger community. Knowing that, based on demand for people like us, we are in a privileged position of leverage means that we can exercise our values in a way that is meaningful. We can choose to support or not support a company with our work based on their overall character and culture. In this way we can shape the greater industry and bend it toward values we hold dear, like diversity of all kinds, empathy, and mutual support.
There is also the undeniable joy of seeing someone move from just being interested to realizing their capabilities as developers. It’s an amazing transformation that takes place starting with an apprenticeship or internship and moving through to their first dev job and beyond. It’s an amazing process and I feel blessed to play a part in it.
Overall, I think that investing in people who are new pays tremendous dividends in the long run. It’s good for them, it’s good for me, and it’s good for our community.
Joe: I can agree from firsthand experience, it’s a fantastic thing to see and be a part of. For their investment, companies get a big benefit beyond another developer too, don’t they? How can apprenticeships help companies become more effective and diverse?
Coraline: Having an apprenticeship offering can definitely help companies. For one thing, it brings to light the things that make developers at these companies successful. In thinking about what knowledge and skills are important for an apprentice to have, senior developers need to evaluate the knowledge and skills that they have and their peers have. Talking about processes can also bring interesting things to light. It’s really a matter of taking a look at the company’s values and standards through new eyes. This can be an opportunity to make organizational changes based on a more clear assessment of how things are vs. how they could be better.
In terms of diversity, I think we see a lot of people entering the field as a second career. They bring skills to bear that they developed in this previous life — organizational skills, strong communication, workflow experience — that may be lacking in a more traditional developer role. This diversity of experience can be incredibly valuable to the company. I’ve heard apprentices talk about “starting over,” but their new careers are really part of a continuum of personal and professional development, and can really offer something unique to their new employers.
With respect other kinds of diversity, particularly finding apprentices from underrepresented groups, the choice of candidates is subject to the same limitations that exist for filling a role from a more traditional pool of job-seekers. It’s important to work around the network effect: don’t just consider people from your personal and professional circles, who will tend to look, act, and think like you. Outreach goes a long way here. It’s critical that organizations look to expand the search for apprentices in new ways. Working with user groups serving women of color getting into tech, for example, can be a great way to find candidates that might be otherwise overlooked. If you look in the old familiar places you’re going to end up with the same demographic that you already have at your company, and you’ll miss out on opportunities to bring fresh perspectives and diverse experiences to your workforce.
Joe: You mentioned that looking in the same places, we don’t really find a diverse, representative population. I wanted to dig a little bit deeper into what some of those differences are. How we can look at candidates who are very very junior by definition, and find these high quality folks without the crutches we’re used to.
Coraline: I think part of it is, there’s a lot of talk about finding people who are a good fit culturally. Which, in a lot of cases ends up being shorthand for “looks just like me and thinks just like me.”
So, one of the ways I’ve seen to get around that is being really up front about what your values are as a development organization. And then finding out what the values are that a potential candidate holds dear to their hearts, and seeing if there’s an alignment there. So, you can kind of see past some of the differences that are on the surface in terms of different life experiences, or different backgrounds of various kinds. And see is this person someone who feels as passionate about this particular thing as we do. Then you can use that to align your matches a little bit better, instead of being put off or intimidated by the differences.
Joe: Do you find that folks with that kind of match end up working well, in your experience? The fear is that you find someone who loves what they’re doing, but do they cut it at the end of the day?
Coraline: It’s beyond just being passionate about technology when I talk about values. Like, for me my personal values are finding learning moments, finding teaching moments, and giving back to the community. So ideally I’d work for an organization that is about learning and teaching. And if there’s an alignment there, I’m probably going to be happier there. If I’m happier there, I’m going to be more productive there.
Joe: That makes sense. You spoke really early on about the types of skills that people need to learn coming in. And again we have folks who have a nontraditional background, who probably have a significant amount of life experience. My intuition, based partially on my own experience, is that technology is important but that it’s not really a huge part of the point. Can you speak to what kinds of skills that apprentices end up learning as part of the process?
Coraline: A big part of it I think is learning how to learn effectively. One of the things we did at a previous employer where we had a full-on apprenticeship program, was to create a reading list for people to work through. We then asked them to write blog posts about what they were picking up. I think that a lot of people have different learning styles and adapting to a situation where you have to learn at a given pace in order to keep up is something that an apprentice would have to pick up, to change or mould themselves into that position a little bit. So that’s pretty important.
I think most software problems come down to people problems, though. So we should be looking for someone with good communication skills, someone with good interpersonal skills, someone with a broader mind who can know how to work with people with different viewpoints. Those are really key factors in being successful no matter where you are in your career, and I think being an apprentice is no different in that regard.
Joe: So that was a full-on formal program there. We chatted a little bit about formal or informal programs. How does that change the experience of teaching people these things. How would you describe that difference, and how that affects being able to deal with those interpersonal problems or differences in learning style?
Coraline: I think it’s a matter of where you put your focus, or where the apprentice is asked to put most of their focus. In a situation where they really need to get up to speed quickly in a technology that is maybe less familiar to them, having that formalized process, where there is a prescribed area of learning that they need to dive into very deeply, would be a better approach. Whereas if there’s some technology alignment already, and they just need to level up some, then a one-on-one, more informal way of doing things is probably a better approach.
Joe: So potentially people coming from, say, a dev bootcamp might end up in an informal situation, where somebody who’s all the way outside of the field would be a better candidate for a formal situation?
Joe: Okay. You talked about reading lists, blogging, those kind of things. Can you me about some stuff that sounded like a good idea at first, that ended up not working. And how did you adjust around that?
Coraline: Sure, let me think about that for just a second.
Joe: Sure. So to give you an example, when I was doing my last apprenticeship program we had cohorts of maybe six or seven people coming in for full time positions. And we had an apprentice who happened to come in at the same time, and we put her into that cohort. It was a terrible idea. Having people who were that far separated from her experience was just really hard on her confidence in that situation. So we had to go back and correct and work her into a group of people much closer to her own development.
Coraline: Right, and that sort of ties into that boxcar theory that Dave Hoover from Dev Bootcamp was talking about, in terms of pairing people up who are closer to their level of experience. Because they remember what it’s like to be at that stage. So I think one of the big mistakes is saying we’re going to take someone really senior, and pair the apprentice up with them, because they have the broadest area of knowledge to share. Your most senior people are not necessarily the best teachers.
I think that’s an easy mistake to make.
Joe: Thank you! Any other things that you found sounded like a good idea but ended up being not so much?
Coraline: Blogging could go either way. I think blogging in general is a good idea for learners, because it creates a written record or a sort of map of where they’ve been and what they’ve learned. What they’ve picked up along the way.
But that can also be a burden, because writing is very difficult for some people. And so it comes down to, how much time are you asking them to put in outside of work? Are you making time for them to take a day out of the week to do all of their writing assignments?
Depending on how the program is structured, that can be a good thing or a bad thing. Being respectful of their time is pretty important. You’re already expecting them to do reading outside of work, but having them do writing outside of work can really add to the burden. Especially if you’re talking about women, who traditionally have a lot more work outside of the workplace that they have to do. And not just women, but anyone with a lot of family or other responsibilities. Putting a burden on them to use more of their outside of work time can be really challenging and problematic.
Joe: Yeah, I can see them getting anxious, at least from my experience, about doing anything that doesn’t feel like it’s the “real deal” part of the job, too. They’re already feeling like “I need to get up to speed, and ship. Why am I doing all these other things on the side?”
Coraline: Right. It’s a lot of pressure.
Joe: So you’ve talked before, and I think this is a really interesting idea, that we have no clear milestones in terms of how you become a mid-level from a junior. Or even a junior from an apprentice. And I want to talk about that.
So maybe by way of example, I’ve been aware of a program where the belief was that by the end of the apprenticeship, you should be a mid-ish junior. Whereas the people who were running the program thought that at the end of that program, you’d be essentially equivalent to a new grad just coming out of college. Can you talk about that issue?
Coraline: I think it’s problematic as an industry that we don’t have a good definition of terms, and really the only time you get that boost is through a rare promotion. Or more likely, moving to a different job, applying for a job that’s outside of your current pay grade, if you will. So not having an industry standard way of assessing where someone is in their career is, I think, a real problem industry-wide. But I don’t see an industry-wide solution to it necessarily coming about.
I would love for major tech companies to come together and decide, “at this level you should understand architecture patterns, and at this level you should understand how to build an architecture.” Things along those lines. But I think it’s so slippery right now that it’s probably insolvable at this point in time.
Which I think is a real disservice to people, because we don’t have any idea until you’ve reached a senior status, and maybe not even then, how you measure up to your colleagues. And if you’re in fact aligned with other people who have the same job title that you do. And I think that’s a big part of maybe feeding into Impostor Syndrome, for example. Because you’re like “this person is smarter than I am, but we’re both seniors. Does that mean I’m not really a senior developer?”
Joe: Yeah. And people come from so many different directions. If you learned, y’know, informally, or you’re better at modeling, or algorithms, versus architecture. It’s such a wide field.
Coraline: Exactly. So I wish we had some clearer delineations, but I don’t think they’re going to come about.
Joe: Yeah. Can I get a cool iron ring after I take a certification?
Coraline: Oh definitely. And that’s what the old guild systems did so much better than we’re doing today. So we’ve adopted this idea of apprenticeship, but we haven’t adopted the full-on guild model. So with a medieval guild, you had a paid apprenticeship. I would liken that to being at a bootcamp, for example, or being an apprentice at a company. Once you had fulfilled the terms of your apprenticeship, which were laid out very clearly in advance, you became a journeyman. And you became a journeyman until you completed a master work or masterpiece. That masterpiece was judged by other masters of your craft and members of your guild.
Some people would never achieve that level, and that was okay. But as a journeyman you were free to move around and work for different masters, and learn and perfect your craft. So if you did happen to achieve your master work, you became a master. And that was something that could never be taken away, something that you had achieved through some sort of identifiable achievement. Some sort of well defined, identifiable achievement.
And there were only three levels.
Joe: Heh, that’s interesting.
Coraline: Yeah. You knew where you were, you knew exactly where you stood, and you knew what you had to do to get to the next level.
Joe: Yeah. It’s interesting in that sense. And I know that in those novice levels, if you were say a novice painter, during your apprenticeship phase you would be doing very rote mixing of paints. Or things that were well laid out, and you did them according to the rules. Whereas you think of a master painter coming up with new styles and variations on things.
It’s interesting how much less regimented we are than painters. As an industry, we’re agile, or we do waterfall, or we do TDD. You’re pairing or not pairing, and there are no real bases beyond maybe… typing? Maybe source control? But probably not even that.
Coraline: Well then I’m in trouble because I’m a horrible typist.
Joe: Ha! Okay, so maybe source control. We all agree that source control is a thing. We need to mature enough to understand what those bases are as a profession.
Coraline: Right. And the other problem with that is that it varies so much from company to company.
Joe: Or team to team.
Coraline: Team to team, yeah. A junior engineer at Google will mean something different from a junior engineer at a startup with a hundred people in it.
Joe: Which is not to say that you can’t… I mean, we’re faking it, but we’re not faking it 100%. So there’s a seed of something where we could start to codify this. It’s a really interesting, really big space.
Coraline: I think it’s a matter of the will to do it. Because the people who are looking for that sort of delineation are not the sort of people who are also the ones in power. Or empowered to decide what those delineations are.
Joe: In my management experience, there’s definitely also the situation where the closer you get to having a list, the more people try to game the list and move themselves up. Which is interesting going back to the guild system, where you have a single master with apprentices checking the work. You have to have a really robust way to do that. It’s not a checklist of, say writing ten tests.
Joe: Hopefully we’ll move… no, I think we’re moving further away from it. I was going to say maybe we’re getting better, but I think maybe we’re getting worse.
One last question. I’m doing these interviews as a way to try to help companies get a little bit less afraid about having apprenticeships, and making that part of their team. Is there anything you’d want companies who are on that cusp to understand?
Coraline: I think one of the problems that companies face is loyalty. Sometime in the 90s, tech companies stopped being loyal to employees. And therefore employees stopped being loyal to companies. I think one of the advantages you get with an apprenticeship is you have someone who has a sense of– I don’t want to say obligation– but a sense of gratitude, to the company that took them and helped to shape them and put them on a path.
And those are going to be employees who have demonstrated that they are aligned with your company values. That they are good learners, and hard workers. And they’re people who I imagine would be more likely to stay if they’re being treated well. So that can decrease the frequency of job hopping.
It’s a matter of investing in your people. It also demonstrates to other employees who are already there, other engineers, that you are working to make people better. And demonstrating some attachment to your development team, some investment.
Joe: Yeah. I’ve seen lower attrition of senior employees once junior employees got more education. It makes sense once you think about it.
Coraline: Yeah, I think that’s a pretty important benefit.
Joe: Definitely the case. Well, thank you for talking to me about apprenticeship.
Coraline is a Lead Engineer of Developer Happiness at Instructure. You can learn more about her by watching her talk from RailsConf, finding her on Twitter, and then supporting her work via Patreon. She has a website.