Learning Experience Lead
Fastly
DevRelCon London 2023
In this talk from DevRelCon London 2023, Sue Smith, Learning Experience Lead at Fastly, provides practical insights into why developer education matters and how we as DevRel professionals can deliver more effective education outcomes.
Sue discusses the impact of technology on her own life and introduces a framework for delivering developer learning, emphasizing the value of autonomy and collaboration.
Rebecca Marshburn:
This speaker has been working in DevRel for more than 15 years. I did the math and I was like 16, 17. I didn’t have enough hands, but they’ve been in the business for a long time. So if you’re interested in learning about closing knowledge gaps and teaching people how to succeed with your products, I’d tune in Double extra for this one. Your next speaker has done everything from art to designing education strategy at Postman to co-founding a nonprofit that partnered with Mozilla on open education events to where they are now. So I’m so glad to welcome to the Stage Learning Experience Lead at Fast Lead Sue Smith. Thank you. Cheers.
Sue Smith:
Thanks so much. Hi ya. Humans in a place. It’s kind of weird. I’m looking for the share screen button, but I don’t need it. Yeah, work at Fastly. I joined a year and a half ago with the rest of the Glitch team. Up until last week I worked in developer experience. Now I’m in product experience where I work on the learning experience. There’s just so many things to experience, but it wouldn’t be DevRelCon if literally everyone’s job title had not changed between pitching the talk and delivering the talk. It’s like part of the gig. I’m at the same company, so I’ll happily take that. I am going to talk to you about developer learning. I’m going to run down some principles that you can use and I’m going to introduce something that I’m calling a framework, which is a hypothesis about a standard way to deliver developer learning. But what I would really love to do is co-create that with people who are working in or around developer learning, which means most, if not all of you, I am going to show you a demo of what it could look like in Glitch, but you’re absolutely not restricted to using Glitch. You can use everything that I talked to you about in any environment you like.
So we’re getting right in about it here. There has been so much talk recently about AI assisted coding and this has been frustrating to me for reasons. One of them being that it kind of reveals how badly we’ve done at articulating what software development is at, describing what a software developer does. That’s not subject of this talk, but what I will say is that at its core, it’s a learning activity. Software developers are always learning new frameworks. They’re always solving new problems, even if they’re implementing something they’ve done before, they’re doing it in a new context each time. So even if you have the most intuitive, fantastic developer experience in the world, the task that the developer is engaged in is a learning one. So you’re probably going to want to support that. So what I’m going to talk to you about today, it applies to explicit education experiences where the developer has chosen to pursue a course or whatever, but it also applies to developer onboarding.
So anywhere that you’re trying to enable people to adopt a developer product learning is happening there, but it’s cool because we know how to do this. Now, when I transitioned to tech, which I think actually might have been 17 years ago, I’ve to stop counting, there was a kind of acceptance of this incredibly high dropout rate on computer science courses. There was a sort of complacency about it as if it was just this unavoidable reality. There was probably a bit of gatekeeping in that it benefited the students who are coming from privilege and who’ve maybe had access to a computer at home have had access to tuition. But to me that’s not acceptable because tech affects everyone at this point. So we really need as strong a representation of people as possible building it if we want it to be empowering more than it is exploitative.
But there’s no excuse for that complacency because we actually know a lot now about teaching people to code between learning science and research, a lot of which has been conducted by the Raspberry Pi Foundation. We actually have a lot of tried and tested techniques that we can use. There was a fantastic DevRelCon talk a few years ago from Joe Nash that I have to mention. It introduces a lot of this and Joe has done so much to promote awareness of this research. So I couldn’t do this talk without mentioning that. So I’m going to break down the principles I’m going to talk about into four, and the first one is centering the learner. Hopefully in this space in the year of 2023, the idea that you would prioritize the learner is not a controversial one, but in most of the world in our education institutions in schools, that is absolutely not what we do.
We have this notion that the teacher bestows learning on the student that the students are these empty vessels just waiting to be filled. That’s not how it works. It doesn’t work like that at all. But unfortunately, most of our schools were not designed for learning. They were designed to output obedient, productive workers. Again, that’s not the subject of this talk. I’m not going to go down that rabbit hole. I would refer you to the work of Ken Robinson and Paolo Frere on that. I thoroughly recommend both of them, but I’m going to focus on the value of actually prioritizing the learner.
So this is why I tend to talk about learning more than I talk about education. You may have heard of learner centered Design in schools. It’s especially valuable in developer enablement because if you’re trying to teach people how to use your tech, the reality is that your tech is just one piece of the puzzle. They’re probably integrating it with loads and loads of other pieces of technology. So we can’t really have a myopic focus on our own products. In fact, that might be one of the reasons DevRel exists. So the best we can do is create the conditions for learning. And one of the most effective ways to do that is to be respectful of the learners’ agency. So something that I like to do is encourage learners to think about how the tech that they’re using relates to the world around them. It’s not separate from that, it’s not objective.
And if you can do that in a way that actually creates a dialogue, then you’ve created the opportunity for shared learning, which is even more effective. And the learner context is always going to have a huge bearing on success. That includes their background, it includes the situation they’re in. Are they learning for a personal project? Are they working at a company? Are they freelance? Is it a startup? Do they have the resources to invest in learning upfront or are they on a tight timeline and they have to learn in the process of building a solution.
Psychological safety is a huge component in learning to learn a code. You have to get comfortable making mistakes, don’t you? But that requires psychological safety and there’s a limit to what you can know about the situation that people who are learning your tech are in. It could quite literally not be safe for someone to make a mistake. Maybe they’re the only underrepresented person on their team. Making a mistake could have serious consequences. So there’s a limit to what we can assume about the learner context, but we have to know that it’s going to have a huge bearing on success.
To me, this is true of developer enablement. Generally, success is the achievement of something that is valuable and meaningful to the learner. Alright, I’m going to jump into the next set of principles and I’ve called this paths, but what I’m mostly referring to here is the prim model, which was developed by the Raspberry Pi researchers and they have used this with kids in classrooms, but it’s really useful for developer enablement in industry too. So the idea is that you share a piece of code, you get the learners to guess what it’s going to do, you run it, find out what it did, you investigate how it did, what it did. You get the learners to make a small modification and then to make something new with it.
So the concept of remixing is part of this. You might be familiar with that from scratch or from Glitch if you use it. And the basic idea is that you give learner something that is already a complete running project. It’s essentially like a get clone, but it’s inside a running developer environment. It means that you can get the learner to make a change and it has an immediate visible impact rather than having to do a lot of upfront scaffolding. So it’s less intimidating than a blank slate, it’s a bit more stimulating than a blank slate.
Historically, we had this assumption that coding was what was called a numeric discipline. So we thought it was like maths and science and it is in some ways, but what we’ve found over the years is that it has a lot of similarity with natural language acquisition. So we can draw on that. We read before writing, so why wouldn’t we do the same with code? And code comprehension is an important skill that we want to cultivate. When you look at the skillset that an experienced software engineer has, code comprehension is a huge part of that. There’s a lot of evidence that guessing improves subsequent learning even when the guess is wrong. So in school settings, teachers who are using this will use testing for learning rather than assessment. When you use testing for grading, it’s kind of problematic. It basically tells you who’s good at taking tests doesn’t really tell you what people have learned, but if we have little kind of low stakes pop quizzes, find that that’s actually really helpful for learning and the modify and make steps in the Primm model.
These are creating a path for the learner to take ownership of the code. So we start with a easy low barrier change that’s not scary and then we move on to making something more comprehensive from there. And if we can normalize making mistakes as part of that, that helps hugely. One of the things I love about Glitch is the emoji that we have in user interface. It kind of incentivizes you to break your project because if you break it, you get to see the little sweary face. So I’ll deliberately break my project for that reason. And similarly with the rewind function, which is like a graphical get revert and it just reduces the fear that you’re going to make some terrible mistake that you can’t recover from patterns. These are drawn on the same research, but what I’m talking about here is some more granular tactics that you can employ spacing and interleaving.
This is the idea that you mix the topics up and you insert spaces and your coverage of them retrieval. That’s similar to what I was talking about with using testing. If we can get learners to retrieve what they’ve learned, it improves retention of the skill and the semantic wave is a practice where we vary the abstraction level. I’m going to talk a bit more about that in a sec. So with the spacing and interleaving, you would maybe start with one topic, you move on to another one, you go back to the first one. So you’re in certain spaces in your coverage of a topic and you’re mixing it up and part of the benefit of that is getting the learner to retrieve what they’ve learned and reapply it in a different context. That’s when you’re helping people to acquire skills that they can go on and reuse out in the world.
The semantic Wave, the idea with that is that you start with an abstract conceptual introduction to a topic and then you come down into the practical implementation of it. Maybe you get hands-on some code that implements it and then we build that back up into another abstraction. And part of why we do this, it’s part of how we build mental models. So mental models are core to writing code. Again, if you look at an experienced software engineer, the skillset, it’s not specific to a language or a technology, it’s a more abstract set of skills that you can deploy in different settings. This might seem obvious, but coding is a practical skill. We don’t learn it by listening to someone talk. We learn by doing and in dev a lot of developer products, we’ll use success metrics like time a first call because we know that having a fast, easy first interaction is a predictor of subsequent engagement. And the same goes for learning. And if you’re able to slot in a learning experience there, you can help developers to understand the purpose and value of your tech to understand why they would want to use it.
This one’s my favorite, but it’s the hardest one to articulate because it’s all human and messy. But what we have found is that having learners reflect on what they’ve learned and share it connected to the world around them, that it improves their ability to retain the learning for quite a long time. My specialty was I would learn how to code something and then I would write tutorials to help other people learn it. And it took me years to realize that the writing was part of the learning, that that was part of how I was retaining these skills and how I was able to reapply them. But we know that reflection is part of what makes Learning Stick and your learners exist in communities, maybe your own community around your tech, maybe other developer communities. If you can encourage them to share, say on a community forum or whatever and to collaborate with others, it helps them to make sense of what they’ve learned within a social context.
And your tech exists within a context as well. It exists within an ecosystem. So if you’re able to connect your learning experiences out into the world, technically it sort of places your product within its technical context. I briefly worked on the open badges program when it was at Mozilla and one of the plans that we had that unfortunately never came to life, but that I always thought was such a great idea, was this idea of a badge pathway where the learner would create their own path rather than following a prescribed linear path like you would with a traditional qualification. And the idea behind that was that it lets the learner create a more authentic picture of their skills and accomplishments. The best motivator to learn is having a goal that is much bigger than the tech, and so the learner decides what that learning achievement means within their own journey.
Alright, that’s enough philosophical stuff. I’m going to talk about this thing. I’m calling a framework and I’m focusing it at the level of a lesson which is kind of granular. I’m not going to talk about discovery, which is important but is beyond the scope of what I’m going to talk about. So we start with an upfront indicator of what we’re working towards so that the learner can self-select based on whether it meets their goals. And when we indicate prerequisites link out to them because it keeps the door open to people who are not ready to engage with the learning experience at hand. Then we have a series of steps and each step has a topic and some code that implements it. We get the learners to guess what it’s going to do. We run it, we explore how it did what it did, we get them to make a change and then we pack that back up into conceptual recap.
And then once we’ve worked through the steps, we move over into a project and the project has some of what we covered in the steps, but we get the learner to extend it and this is us getting them to reapply what they learned in a new context. So you can see that we’ve got a bit of the prim model in here. We’ve got a semantic wave ideally, and then we encourage them to reflect what did you find hard? What was interesting? What would you use this for? You get if you can get ’em a share within a community setting that’s ideal and then connect to further learning that they might want to explore.
This is an example of what such an experience might look like in Glitch. If you’re not familiar with Glitch, you can access it in the browser. We’ve got the file tree on the left, the file being edited in the middle and then the preview and the preview auto updates as you code. I’m going to show you a very small video of this running. So we’ve got our preview, we’ve got an intro to the lesson, we’ve got some prerequisites, and then we’ve got a series of steps and each step has got some code in it. We ask the learner to guess what it’s going to do. We get them to run it and glitch running. It just literally means copying it into the file because it will auto run and the preview is going to auto update based on progress. We recap how the code did what it did, we get ’em to make another change and then we move on to the next step.
So what I’ve got going on here is a lot of stuff running in the background that is checking each step for completion. It’s mega basic. This is not a full coding learning platform. It’s all written in vanilla JavaScript because I wanted it to be as accessible as possible. A lot of school teachers use Glitch. I don’t want to expect people to know React or whatever. So I’ve tried to keep it all as vanilla as possible, and in this case, the change that the learner’s making is having a visible effect on the page, which is ideal because it gives that sense of momentum and fact with our refer back to that Joe Nash talk, I remember him talking about the thrill of I made a computer do a thing that you’re giving them that it makes sense in this one because I’m teaching them how to use JavaScript to manipulate the page.
But if you’re able to have some sort of visible output of what the edit that they’ve made does, that’s really ideal. So once we’ve worked through all the steps, then we move on to the project, which I’m not going to show you in the video, but it’s all going to be linked from the URL that I shared with you at the end. Alright, why am I talking about this? Why am I going on about this framework thing? I’ll tell you because it scales. If you can use automation in your learning experiences, you can scale them without having to keep throwing people at them. And it lets you optimize the learning experience for autonomous engagement, which a developer audience overwhelmingly prefers. They want to be independent, they want to advance at their own pace, they want to get instant feedback. They don’t have to wait for someone to help them. Having said that, you can also use these resources in live learning if you do events, if you do workshops, webinars, people like to have something to take away with them. They can go back over what you covered in the session and they can continue developing it after if they want.
This one may be slightly controversial, but something that I have personally found very valuable is collaborating with people who work in sales and solutions engineering in customer success and support. And what you’ll find is that the same learning experiences are useful in both. I’m a strong advocate for doing this because you can actually use that to benefit community. I’ll tell you why in a minute. When we have an automated framework, we can build progress tracking into it. So when I was at Postman, I used to use Glitch to teach people about APIs and I had progress tracking built into it. I wasn’t tracking any creepy personal data, just like how far people are getting through the learning experience places. They’re getting stuck. It’s a source of product feedback. But to go back to the previous point, one thing that’s very challenging when you roll an experience out to community is getting qualitative feedback. You can get your quantitative metrics, how many people are engaging, but it’s very, very difficult to get that higher fidelity feedback. But by collaborating with people who are working with customers, those are more closely managed relationships. So they’re a great source of high quality feedback that you can then use to benefit the experience that you’re giving community. If you have a partner program or if you have tech that your tech integrates with co-author a learning experience with them, it’s a partner development opportunity.
Alright, this link is going to take you to the template version of what I showed you in Glitch. If you remix it, you will get a link to the one I showed you in the video. It’s all totally rough and untested and it also has a link to a GitHub repo. If you use any of this or if you want to collaborate with me on it, please do, please talk to me. Even if you use it and it’s a disaster, especially if it’s a disaster, you can get ahold of me on Mastodon Sue at Glasgow Social or on the Glitch [email protected]. I would love to collaborate with all of you on this and I think that’s me. Thanks for listening. I hope I’ve left time. Have I?
Rebecca Marshburn:
You certainly did Sue. Thank you so much. Does anyone have a question? We’ve got a couple minutes.
Audience member 1:
Hi Sue. Thank you for amazing work we are doing. My question is why, what is your why to doing all this developed education? Why does it matter to you?
Sue Smith:
Personally?
Audience member 1:
Yeah.
Sue Smith:
Do you know why? I come from a very poor background and I was fortunate enough to live in a country where I had access to free tuition, and so I got to learn tech, which completely changed my life. Beyond recognition, I was able to access economic and other opportunity that I couldn’t have imagined. Standing here right now is not something that I would’ve imagined as a kid standing here at Tall at 45 maybe. I didn’t imagine that as a kid, and I think more people should have that experience. It really is not right how biased or education experiences are in favor of privilege. So that’s why. Thank you.
Audience member 2:
I just want to say I’m a huge fan of Glitch. I think it’s really cool. One of the things I’ve noticed, especially younger developers when they’re getting into things that they really get out of it, is that remix functionality. You want to take something, you want to tweak it, fork it, whatever the terminology is, but lowering the barrier to just playing around with things seems like a really big part of the educational process for people. So I’m just curious, do you think that’s part of the reason why Glitch has been super successful? What do you attribute as the most successful part of the learning experience? To
Sue Smith:
To be honest with you, although Glitch is really heavily used in education, one of the biggest use cases of it is teachers and classes. But we, to be honest, have never really doubled down on that usage of it. We haven’t really built the product for that. Some might argue it’s better for that to happen organically rather than it to be tied to all your OKRs and stuff like that. But something that I personally really wanted to advocate when I joined Glitch was actually talking more to people who are using it in education and doubling down on that usage. So I hope that we will do that. I don’t want to promise that we’ll do that, but I hope that we will. So, I’m sorry, did that answer the question? Thank you.
Rebecca Marshburn:
I think we had time for one more. If there’s one more. Ah. I felt you.
Audience member 2:
Thank you Sue. That was wonderful. It’s not so much a question, but more of a, I’m grateful for this. You’re talking to an ex teacher, an ex-teacher of computing to very little children. And I want to say well done for showing and being really aware of the vulnerability of a learning experience. I used to tell my students that I didn’t want to see ticks on the page. I wanted to see mistakes. And actually learning is a journey into the unknown. It’s all about that space. It’s really uncomfortable about what you don’t know. So thank you for that. Lots of empathy. Love it.
Sue Smith:
Thank you.