Looking for audio only? Listen on and subscribe
Focusing on Developer Happiness with Humane Development
In this interview with Joe Mastey, a Consultant who specializes in building a company culture that attracts and retains engineering talent, we discuss how to build out an internal learning program. He talks about what works and what doesn’t, how to get started with learning in development teams and the common mistakes made by teams who just want to constantly learn and improve.
Content and Timings
- Introduction (0:00)
- Can only Teachers teach? (0:38)
- The problem with on-the-job learning (1:02)
- Benefits of a Learning Culture (1:55)
- Phases in Establishing a Learning Culture (2:56)
- Things to Try (4:33)
- Common Mistakes (9:25)
- Recommended Resources (10:56)
Joe Mastey is a consultant that specializes in building a company culture that attracts and retains engineering talent. Previously led internal learning at Enova, and has held a number of development roles. He blogs and speaks at conferences about software engineering issues, including the talk Building a Culture of Learning. Joe, thank you so much for being here today. Looking forward to what you have to share with us. Do you have anything else to add?
No. Yeah, thanks for having me on the program. For the last couple of years, I’ve been really getting into the topic. I’m excited to get a chance to talk about it.
Can only Teachers teach?
Great. First things first. Do you need to be a teacher to build a learning culture?
Absolutely not. I very much have an engineering background. I have no teaching background whatsoever. One of the things that I always want to tell people is that when you’re trying to build this part of your culture, you don’t need to have a teaching degree. You don’t need that expertise. Really, if you’re interested, you can figure it out.
“Try a thousand things and monitor how they’re working. Don’t be afraid to throw them out.”
The problem with on-the-job learning
In most cases, people just learn on the job. Why is that not enough?
What I’ve seen in training and onboarding a lot of folks is that for the most part, when people try to learn on the job, they really only learn a narrow subset of all the things that they need to about a technology. What that leaves is a big gap in their skills where maybe they know a lot about one particular section of the platform, but then they miss entire other sections. That ends up being a hindrance.
Specifically, one of the big things that I’ve seen is testing. People just really bad at testing. In the code bases that we work on, a lot of times, we’ll say they aren’t virtuous entirely. Some of the code is not very good. People in fact pick up these terrible patterns and so they internalize the wrong thing instead of learning the right thing.
Benefits of a Learning Culture
What could be the benefits of more of a learning culture?
Basically, the thing that I’ve seen, the thing that interested me the most was that by creating a culture of learning, we actually increase retention, not only of the younger people, but also of the more experienced engineers. There’s this thing where when you’re at a technology company for maybe a couple years, right at the beginning you’re learning new things. It’s very exciting. You get a new platform.
A couple of years in, you basically are done learning parts of it. You feel like you slow down in that learning. This is the part where a lot of people end up dropping off. By building a culture that continually moves forward and rewards that kind of learning, we can attract really great engineers. We can also retain really great engineers.
On top of that, it actually reduces waste. One of the things that we’ve seen a lot of is if you aren’t really great with your tools, you’re not leveraging them completely. Because of that, you’re spending more time than you need to. One of the things that’s maybe counter-intuitive is that by spending this extra time, we actually end up saving time in the long run.
Phases in Establishing a Learning Culture
In your talk, you describe a multi phased approach in implementing a learning culture. What are the key phases?
When I originally started out, it was really just a couple of folks who were interested in bringing this to the department. As much as everybody wants to learn on the job, not everybody’s spending the the time doing that.
The first phase is really building up credibility. In that phase, we are trying to just find these quick wins and things to help people prove to themselves that what we were doing is going to be valuable and going to provide value to the business.
The second phase, once we build the credibility, people start to understand that what we are doing is going to have a really positive value. In the second phase we start to expand outside of the couple of people and some of those quick wins. We can start to invest time and things that take a little bit longer. By spreading that, now we’re involving entire other teams of people. We’re trying to build links between teams. We can actually invest a little bit more money because people have started to understand what we’re going to get back for that money.
The third part, which is the really exciting part is essentially making that a permanent part of the culture. Especially when you’re starting out, it can be fragile. It’s one of these things where there are only a couple of people who are actively driving this part of the culture. Like phase three, what you can do is make it a part of people’s job, where they just don’t even remember that it was ever something that they didn’t do. At that part, you have the ability to make really big changes that are incredibly helpful to the company but really need to have everybody on board.
“Focus opportunistically on places where you can have a lot of impact for only a little bit of effort”
Things to Try
You mentioned these key phases, but for those just getting started out with this, are there some practical steps that they can take to help develop a learning culture?
The thing that I tell people, first of all, is just get started. I mean one of the things that I go back to all the time is that of all the things that I’ve tried in the past across various companies, a lot of them don’t work. That’s okay. Like that’s part of the process is that we don’t know up front. It’s like Agile software, right? We don’t know up front what’s going to work.
The first piece of advice is just start doing something. Beyond that, some of the really literal things that you can do, some of the really easy stuff is have a brown bag lunch. Have a book club. Do code review. Literally, you can have two people on different teams, just have those two people do code review between each other. Already, you’re starting to create the links within the organization that are going to support those changes later on.
It’s really simple stuff that you can do. Post in your company’s chat program that you want to go to a meet up and see if some other people will come with you. It’s stuff where to get started, you want things where you only need a couple of people to buy in. It doesn’t really cost you anything, but you can come back and say, “Okay. I know now about this new Java Script framework. I know now about this tweak that I didn’t understand before.”
Beyond the first phase, what else can you try?
You have to try things with a longer term payoff. Things that where you’re doing that investment up front, but that you’re not going to see that payoff for a little while. Cross training is one of the big ones that I love. In a lot of the companies that I’ve worked with, there’s a difference, for instance, between the people who test the software and the people who write it, or maybe you have say database people who are a totally separate role.
One of the contentions that I have made and I think I’ve seen this bear out in the results is that your UI people should understand that database. Your database people should understand how testing works. That’s something that is tough to do until you have that kind of credibility.
There’s other stuff like weekly tech talks is one of my favorite examples. In the first company that I did this at, we had an hour long tech talk program, where it was four slots every single week. Every week, we got four new ideas into the organization. That’s something that does take time, and it does take preparation, but when you can start to do that, the effect on the organization is really obvious and it’s really good.
So, I mean, not everyone’s going to care in an organization, so what should you do if only a few people care about learning?
This is the challenge, right? Is that at the beginning, it’s usually only a few people who are willing to invest that time. We’re all in organizations where shipping software is a thing. You have to ship software. In the beginning, it really is about finding those wins that take very little investment and very little time, but demonstrate a lot of value out of them.
My one is always testing, because we’re all bad at testing. Everyone’s just bad at this. Finding just one or two ways to improve people’s test technique, you can do a brown bag lunch and just show them two techniques. When they take that back, it’s going to be really obvious and really evident when they take that back to their work. You use that and say, “Look. I taught this one thing. It took me an hour. Now we’re better at this one thing.” You have to build that credibility.
The danger here is that if it doesn’t work, you lose credibility, because you didn’t have much to start with. You really want to focus opportunistically on places where you can have a lot of impact for only a little bit of effort. Don’t try upfront to change the world right out of the gate, because you don’t have enough buy in for that yet.
So, I mean, obviously learning seems to be a good thing, right? Why do you think that more people don’t take this approach?
The resistance that I’ve seen, it’s really interesting. A lot of the resistance you’ll get is people say that they’re not really interested, but I think that the real reason that they’re rejecting these ideas and spending is they just don’t see the payoff. It feels like when I jump into the pool, or maybe it’s a senior engineer, the way that I learned was being thrown into the pool. Now what I see is okay, well I did well enough, and so clearly if I think I’m doing a good job, then why should we change this process?
The big thing is really … They just haven’t yet seen the value to doing this in a different way. One of the big things to overcome is how do we demonstrate the results on something that, especially in the later phase kind of stuff, might take six months to payoff. It might be when you teach your database engineers about front end code, how does that payoff? It can take time to build that up, which is where that credibility comes in.
“By creating a culture of learning, we actually increase retention, not only of the younger people but also of the more experienced”
What mistakes have you seen people make in implementing a learning culture?
I make all kinds of mistakes. It’s one of my favorite topics. A really good example is trying to bite off more than you can chew at the start. One of the things that I wanted to do really early on was take a particular group of people who are existing employees and pulling up their skills really substantially, but they had like schedule pressure, and deadline pressure. I had not built up enough of that trust to really get them to invest the time. Lots of things just didn’t work. I basically had to re-approach it from a totally different angle later on.
Other than that, one of the things that was interesting is with really new people, in the company where I was doing this, we had say five new people coming into the organization in a given week. Some of them were really green. Some of them were really, really experienced. I do think there’s a lot of value in pairing them together, but for instance, you have to remember that that’s a lot of stress for the really green people. There’s this process where you monitor what you’re doing. Try a thousand things and monitor how they’re working. Don’t be afraid to throw them out.
What we did is we basically took the greenest of those green people and we just didn’t put them into the same groups anymore. That was effective. That only works because we were willing to not be precious about this original idea that we were positive was going to be a great thing.
What are some resources you can recommend for those wanting to learn more about encouraging internal learning?
Dave Hoover’s Apprenticeship Patterns is a good one for that. Again, what I’d say is don’t get stuck on reading and learning everything beforehand, because everyone else’s organization is really different than yours. Whatever you learn is you’re going to have to take with a grain of salt anyway. The best thing to do is really just get in and start getting feedback from your own organization and from your own stakeholders. Don’t think that you’re going to perfect it by reading.
Joe, thank you so much for joining us today.
Awesome. Thanks for having me.