Originally posted to Case Studies in Apprenticeship
This is part of an ongoing series highlighting successful apprenticeship programs in the tech community. This time I’m talking to Matt Polito, a developer at Hashrocket who also runs their apprenticeship program. I met Matt via the Apprenticeship Community, which you should also check out.
Joe: Thanks again for coming and talking to me about apprenticeship programs. Why don’t you start off by telling us about yourself and how you got involved with the Hashrocket apprenticeship program.
Matt: Sure. I was a developer in Chicago doing long term work at Obtiva, which had created a culture of apprenticeship and learning. And it worked its way into my persona, I guess.
When I started at Hashrocket we had an apprenticeship program, but it was a little bit different. It was started by another gentleman who took multiple apprentices at once — four at a time — and put them on client projects at a different rate. Nothing was hidden from the clients, they knew what they were getting. They knew their developer was learning, with the expectations around that.
These were projects that we might not normally have been able to take, due to financial restrictions. That gentleman left and those apprentices graduated from the program, and I believe all of them became Rocketeers. Then that program died down.
After a while, I felt that it was something that we needed to continue doing for a number of reasons. I really enjoy the idea of growing the community and helping other people. The feeling of possibly giving someone a career in freelancing is quite good. I wasn’t given that, and I would have loved to have been given that opportunity, so I want to help as many people as I can.
So that’s what I brought to our CEO, and said “I really think we need to do this, and I’m happy to take on the responsibility”. We’re luckily in a company that really values our opinions and wants us to try out our most hare-brained ideas. Thankfully this one has really stuck.
Joe: And so, when you took over, you mentioned you wanted to structure it a little bit differently than the last person running it. Can you tell me a little bit about the structure of the current program and what the differences are?
Matt: Yes. The program I developed is centered around a single applicant. I feel that taking more than one apprentice at a time is a setup for failure. I haven’t had much luck, and I haven’t seen much luck with multiples.
The program we takes developers and turns them into consultants. Not so much taking someone with some programming knowledge and turning them into a developer. So, we’re a development shop that has an apprenticeship, but it’s not the same as some other companies.
Joe: How do you structure the program?
Matt: All the apprentices have some experience already. The whole program is roughly six months, depending on the person’s experience. Roughly the first three months is my finding out where their skills lie and where we need to work on things. Developing new skills. Mostly on the programming side. And then the second portion — roughly the next three months — is actively pairing on projects, working on consulting skills, seeing how we interact with clients in different scenarios. As well as continuing to learn how to develop.
The first portion has three milestones. The first milestone is basically a baseline experiment that I give everyone. It’s very interesting because nobody ever solves the same problem the same way. So it allows us to tailor their learning directly to whatever they need.
Joe: What is that assignment?
Matt: That first experiment is creating a blog platform. Which may sound trivial, but we keep layering on other features that deal with, say, timezones or background jobs or external services. Every time it’s been solved differently, and we’ve had people not solve it in the time given. And it seems like if someone’s been given two days to knock out a blog, they’d get it, but that’s not always the case.
The solutions are always different, and everyone gets stumped on something different. Which is cool. Because we do the same thing every time, it allows me to say “here’s what we normally do, but we also need to focus on these areas.”
Joe: Makes sense. So they finish the blog application, and what happens after that?
Matt: The second milestone is basically a larger-scale application that looks similar. The third milestone is a full mock storycarding session and project.
So what I usually do is to find someone in the office with ideas that they don’t have the time to build. And we will take the apprentice as the developer on the project, and we take a designer and a product manager, and actually storycard that idea.
The person who comes up with the idea is the stakeholder, and we have an afternoon storycarding to knock out a week or two of stories. And then we take the apprentice through the full process. We actually design the app. It is managed by a project manager. Developers will run through the stories and check in with the stakeholder every day, like we normally would on a project.
And at the end, we hopefully have a new internal tool, or a little app. And just like real life, some of them are successful, and some of them just fall to the side.
Joe: Great. While they’re building this toy application, what kind of day-to-day resources do they have?
Matt: Our apprenticeship is a salaried position. We don’t necessarily consider you a Rocketeer yet, but you are a full time employee. With benefits and everything. So you are in our studio in a large room, but we are essentially paying you to learn. You’re not actively making the company money. And that does take more of a self motivated person. I check in with them every day to see how they’re doing, and make adjustments. But that person is for the most part doing things by themselves for the first portion.
That’s also a way for us to tell what kind of person we’re dealing with. Can I leave you alone and have you accomplish tasks?
You have full access to anyone in the room, though. We do have an open floor plan, so if I have a question, I’m just going to turn around and shout out and ask people what they think about that particular problem. The apprentices get to do the same thing. Also, just hearing conversations going on in the background is valuable.
Joe: So they really have access to the whole team, as a sort of informal resource. You had mentioned before that you also give them some books and reading materials?
Matt: Yep. We’re primarily a Ruby shop, so I at least like to have the apprentices know that. Most of them do know it coming in. But when they first come in and they’re doing their first project, and they’re not actively working on something, I do want them to be reading the Pragmatic Programmer and Eloquent Ruby. I think those are two really good starter books. One being more about development and software in general, and one being a really good overview of Ruby. If they’ve read those, I swap in and out other books. Sandi Metz’ book is a really good one.
Like I said, you have to be actively learning yourself. I expect you to be reading and gaining as much knowledge as you possibly can.
Joe: Makes sense. You’d also mentioned before that you do some pairing. How do you get apprentices to a place where they can ramp up and gain those skills. Is that something that they’re learning as part of the apprenticeship as well?
Matt: Yeah, pairing is a learned skill. It’s not something to just jump into. It’s not just sitting next to someone else, and it’s exhausting.
Joe: Heh, that’s true!
Matt: So I encourage them to jump in if someone doesn’t have a pair, to be a little bit more outgoing. Sometimes someone is working without a pair. If you see that as an apprentice, you need to take that opportunity to jump in.
The worst thing that they can say is “no”, and I don’t think that’s terrible. Once in a while you will be in the middle of something and have to say “you know, I can’t really stop right now.” The majority of the time that person says yes, and it allows the apprentice to start pairing before the second portion of the program.
Joe: Makes a lot of sense. One other big question. I know Hashrocket focuses on having a sustainable pace, and specifically you get to do open source work in the afternoons. How do you monitor that pace with someone who feels maybe behind the eightball. How do you keep it sustainable for them?
Matt: Friday afternoons, we get to work on internal tools, and open source projects. Occasionally bugs or projects come up, but for the most part we’re pretty strict in making sure that people get to do the things they want to do. And for the apprentices as well. I don’t expect them to be constantly working on things. I expect them to be doing the work I assign them, and to have a toy project that they’re able to try new things on themselves inside of work, and when they don’t have anything assigned, outside of work.
Joe: Personally speaking, when I ran a program, one of the problems was that folks were so eager to get up to speed, that they would work themselves until they were too tired to do it anymore. Do you have any problems with people working a normal pace, or does being exposed to an office where people are working a sustainable pace seem to solve that problem?
Matt: It does. It presents its own challenges, but moving too fast isn’t one of them.
Joe: Oh good!
Matt: Heh, occasionally we have someone who’s super eager, and tries to knock everything out right away. And that’s just a challenge for me to assign more appropriate tasks. That’s another thing that I can get data out of and tailor the program to them.
But we do live in Florida, the beach is right across the street. So it’s a bit laid back. If anything, it’s getting people into a mode that they need to be professional all the time. We’re very laid back, and we’re very family oriented. You spend more time at work than at home, so you have to enjoy the people you work with. And that can get people into a routine of being laid back, which sometimes we have to guard against a little, especially when you’re newer. We have some people come in and put their feet up on the desk, and I have to adjust that expectation.
Joe: Just one more question for you: Do you have any suggestions for other companies that are looking to start an apprenticeship program, and maybe hints for them to be successful?
Matt: I think Dave Hoover’s book on apprenticeship is really good. I’ve read it now, though I hadn’t at the beginning. So much so that because I had a relationship with Dave, I was able to just call him up when I started the program, to throw some ideas against him and see what stuck. And the actual question I had asked was “how do you feel about the newly graduated apprentices being responsible for the next apprentices?” Because I felt like there was less of a knowledge gap between the two, and I felt like there could be a better connection in learning.
And his response was “did you read my white-paper?” and feeling like I didn’t want to be dumb, I said “Yes!” even though I hadn’t read it. And it wasn’t until two years later that I had found the white paper describing what an apprentice program could look like in his eyes. And it turned out that without much guidance I came up with a very similar program to what’s in that white-paper. And I assume that’s due to having been around that Obtiva culture.
Joe: So go read the white-paper is the takeaway. That’s not the same as the book.
Matt: Yeah! What that has described I have found really successful. And eventually when I finally found it, I wrote him a letter saying “thank you so much for just taking a chance on me to put me in that surrounding that I could come up with this crazy idea by myself and be close to what you envisioned.”
Joe: Great! Thanks again, I appreciate it.
Matt: Thank you!
Matt Polito is a veteran software developer with Hashrocket, as well as a contributor to many open source projects. You can find him on Twitter and Github. Joe Mastey helps companies build fantastic technical teams. He also does public speaking, which you can see at Confreaks. He’s also on Twitter more often than he should be.