
On Teaching Adults to Code (Kristin Bott, Posit) | posit::conf(2025)
On teaching adults to code Speaker(s): Kristin Bott Abstract: Working with code can be deeply rewarding, but learning to code can be daunting; similarly, changing the code habits of a team may feel monstrous. For the last three years, the Posit Academy team has been working to teach adults to code in a way that sticks with individual learners, scales within organizations, and leaves individuals able to adapt in an evolving technological landscape. In this talk, I will share some lessons we’ve learned, speak to the importance of communities of practice, and provide actionable steps for effectively connecting learners and code. Materials - https://github.com/RhoBott/posit-conf-2025 posit::conf(2025) Subscribe to posit::conf updates: https://posit.co/about/subscription-management/
image: thumbnail.jpg
Transcript#
This transcript was generated automatically and may contain errors.
All right, folks, after all of that, good afternoon. My name is Kristin Bott, and I'm gonna close out this session and echo some of the things that you've already heard. So ears up for a little bit of repetition.
So title of my talk is On Teaching Adults to Code. And I suppose I could have had a little more of a playful title here. So something like, how do you teach adults new tricks except swap out those juggling, or swap out those juggling balls for some relevant packages.
So regardless of your framing, the problem that we're trying to solve here is what is a good path to reach the goal of effective education? And my guess is you could have a couple of different perspectives when you are approaching this problem.
So one, you might have a team that you need to have trained. So I'm not talking about you as the person in front of the room. You're not the educator, but you have a staff that needs to gain some kind of skill, and your job is to figure out, okay, of all the training options, courses, resources, what do I do, what do I pick? How do I get my people from where they are to what they need to know?
Option two, you could be that person in the front of the room. You're in that educator position, and so your job is how do I figure out how to structure and present information in a way that's going to land and stick? And then, of course, you might have something that you yourself need to learn, some skill you need to build.
So all of these different perspectives on the same problem, I'm going to argue that the underlying components are going to be the same.
Background and Posit Academy
To give you all a sense of where I'm coming from, so I've spent a lot of time thinking about how to educate effectively. Before I came to Posit, I was in higher ed for 10 years, basically at the intersection of education and technology.
And for the last three and a half, almost four years, I've been with Posit Academy. For those not familiar, Academy is one of Posit's learning offerings. So we're an educational program that is built around the idea that data science is not a spectator sport. So we believe that learners need to be actively engaged with tools and concepts in order to have this stuff stick.
We teach courses in foundations of data science in R and Python, a sort of intermediate programming in R course, and then an introduction to Shiny for R. We started in early 2022. We've reached more than 1,500 learners across about 100 companies. And those companies span Fortune 500, Fortune 100, top 20 pharma, public sector at the state, local, and federal level. I've got some nonprofits and different corners of the private sector.
And I tell you all of that to get the point across that we've worked with a lot of different people with different backgrounds, different contexts, different skill levels, different needs, different learning styles. And I think we've been pretty effective.
So I'm going to reference Academy throughout this talk, not as a product, but as an example of what a very intentionally designed educational program can look like. So I'll bring you some lessons from what we've been up to for the past more than three years.
Time over time
So this afternoon, I am going to argue that effective education requires three things. So thing the first, you need time over time. And I think that everyone in this room is going to nod and say, yes, yes, learning takes time, I get it. But I think it's a little more nuanced.
So this is a visualization of what a one-day workshop might look like. So this is a large volume of hours over a relatively short number of days.
For most people in this room, you've probably had some experience like this. It was a workshop, it was a short course, some kind of intensive training. So if that's familiar, my question for you is, how much of that did you retain?
And maybe think about when you were leaving the classroom, two weeks later, two months later, four, six months later, how much of that knowledge stuck with you?
For everyone who said not 100%, a couple of things. Congratulations, you are not alone. And also, that is not, you are not alone because most people forget most things that they learn in a really intense period like that. And also, that is not your fault. It is not the fault of your instructors. It's actually how our brains are made.
So this is a representation of a forgetting curve, also known as an Ebbinghaus curve. He's a fellow who did the original research. The idea here is that when you initially learn something, gain a skill, your mastery is really high. And then as time goes on, your proximity to that knowledge drops and your brain simply cannot hold onto that information unless you practice.
You see here that you practice once, mastery rises, and then declines over time. So if you can keep up that practice, you can help combat that forgetting. Increased practice over time, mastery stays high. This is how you have skills stick with you.
So here's my same workshop experience. That is the same volume of hours spread out over a larger number of days. So if you have a choice, I would recommend trying to structure your learning more like this, a little bit bit-by-bit.
Now, for everybody who was in workshops yesterday, don't despair. This is instead your nudge to go home when you're done with conf and practice those things you learned yesterday so they stick with you for six months.
All right, the way that we deal with this in Academy, we teach our courses over time, so four to six weeks, depending on the topic, and we approach that content that we teach in a number of different ways, all of which are on a weekly basis. So one, you have asynchronous tutorials that you work through on your own. Those are released weekly. We center our courses around data science projects. So little bits of that project is made available every week, and we put our learners in small groups. Those groups convene also on a weekly basis so you can learn together.
So time over time, your take-home here is whenever possible, spread out your learning.
Relevant practice within reach
Now, the end of that last section maybe sounds familiar to anyone who has ever learned a musical instrument, that idea that you need to practice a little bit every day. So practice, yes, but I don't think that practice is enough.
So quick audience survey. How many people have worked with the Palmer Penguins package? We've already seen them once today. All right, fantastic, thank you. Now, how many people in this room study penguins? Antarctic biologists? Any ornithologists?
So Palmer Penguins is a fantastic dataset. It's a classic because it is accessible. There are things that you can do in terms of basic exploratory data analysis, graphs. There's some nice diversity of data types in there. So it's really good for beginners. You get to learn things about penguins. Penguins are neat. My background's in ecology.
But my guess is that for most of the people in this room, two exceptions, there's some distance between what you need to do with data when you have those data skills and what you were doing with the penguin data. So whether that's coming from a background of bench science, somewhere in the healthcare industry, maybe you do finance analytics, there's a distance you have to travel from that practice in penguins to whatever you're actually doing. And wouldn't it be neat if we can somehow shrink that?
So the way that we approach this in Academy, those data science projects that are the core of our courses, we offer those in a variety of different topics so that you can have something, hopefully, that's a little bit closer to what you're doing. So you might be in epidemiology. You might work on measles. We don't have a measles project, but we have a COVID project. And so we can keep you sort of in the same neighborhood of what you're used to thinking about what's going to be useful for you eventually, a little bit closer than, say, while delightful, penguins.
All right, so you sort of got a spoiler for this idea from both earlier mentions of scaffolding and Ryan's laddering idea. But here we have a learner in the lower portion of the slide and they would like to practice their purr skills. They just have to get from where they are to purr.
All right, so practice, yes, relevance when you can get it, and that practice needs to be within reach. So what I mean by that, and this calls back to Ryan's concept of laddering, what you need to do is present information in incremental ways, increase challenge slowly over time so that distance is possible for learners to cover so they can get from where they are to where they need to be.
To get a sense of what this looks like in practice, notice penguins, good data set, we use it in our foundational stuff. So this is the first time that people see Summarize in one of our courses. There's a bunch of code, you run it. So introduction, you get to just sort of take that in, that's your cognitive work. Later on in the course, that code becomes more and more skeletal so you need to do more and more work, more thinking, you engage a little bit extra, and then by the end, we turn to you and effectively in a conversational sentence say, hey, do a thing with the data please, thank you, and you respond in code.
In terms of the projects, we might turn to you and say, okay, here is a data set, here is a visual I have made with that data set, your turn, go back and recreate that thing. So there's still structure there, but it is more open-ended than the lessons, but more structured than just saying, oh, go and do something, whatever you want.
Once you've done that recreation portion, you can then build on that and do something with the data that feels more relevant for you and where you need to go.
Okay, so practice relevant within reach or take home here, keep that practice close to the final application and provide small steps to help learners get to their goals.
Community of practice
All right, let's try this out. So here we have a learner and this learner has relevant tasks, relevant data and time set aside. All right, let's do this. So we are coding, we are coding, everything is great, this is a ton of fun. I just got an error and I got another error and now nothing is working and I don't like this and everything is bad.
All right, so what can we do to avoid this kind of explosion, existential crisis or failure to learn? What happens if we give this learner some friends?
So I think the last component of effective education is a community of practice. So again, we've heard about this throughout the talks for the rest of this session. Community is very important for humans. We are social creatures, we do not do well in isolation and I think education is no exception to that guiding principle.
And what I'd like to do in this section is tuck nearly immediately into what we do in Academy because there's lots of different ways to build community and my hope is that if I give you examples from what we've done, you can maybe apply some of that to your different corner and get something really useful out of this talk.
So for starters, we take our learners and put them into small groups, say eight to 10 people. So you get to know each other, you start building a little bit of connection to foster some of that psychological safety. We have those groups facilitated by experienced mentors. So these are people who bring experience in both code but also education and that means that they can come in and yes, they can demonstrate tips and tricks and best practices and how to find information, the kinds of things that are easier to learn in real time from a human as opposed to in a tutorial.
And while all of that is useful and good, I would argue that's not the most important part of having the mentor in the room. The mentor can build the kind of environment where effective learning can really happen. So psychological safety across the learners, sure. But the mentor's in a position to do things like normalize not knowing, normalize asking questions, normalize making mistakes and be able to navigate those moments of struggle. You have someone to turn to who will say, oh, does this feel hard? If this feels hard, that's correct. You are having a normal reaction. You're doing something that is hard. You are learning a new language and also you can do this. We can get through this together. Come on, let's figure this out.
If this feels hard, that's correct. You are having a normal reaction. You're doing something that is hard. You are learning a new language and also you can do this. We can get through this together.
Part of what I do in Academy is I run our mentor program and so I meet with all of our active mentors every week. So they stay super close to those groups and how things are going, which means I get to talk to our great mentors every week. Here's a line from one of those meetings. It often surprises me how much reassurance adults need when they're learning.
And I call out adults as a particular learning population because these folks are different from Kelly's room full of college students. So our learners are working professionals and like probably everyone in this room, they're very used to being very good at what they do. And so it can be incredibly destabilizing to have moments of, I don't know what's going on. I don't know what this code is doing. I don't know why this code doesn't work. I need help.
And with a learner in the room, you have someone who can model the kind of kindness and curiosity that helps build a place where people feel comfortable doing the vulnerable business of learning, where people are excited to solve problems together, to celebrate together.
And if you want to think about this from more of an organizational level, strategic angle, communities of practice also help make your group more resilient. So you can have staff leave, retire, change jobs. You can bring new people in because what you've done is create a matrix of people who are connected to each other. So changes are going to be easier within that group.
And I said that I would make this tangible and actionable. What you're looking at is a mashup of a couple of the bingo cards we put together for our Mentos. So these are meant to be top-of-mind, maybe top-of-desk resources, just little things to keep in mind while you are working with people. So little, small, actionable bits.
Closing thoughts
So community of practice. So your action here is to seek out and foster connection for review. Our big three are time over time, relevant practice that is within reach, and all of this happens within a community of practice.
And in closing, I want to come back to that last point. So learning in community can be really fun and rewarding. Again, we've heard about this throughout the session. You have someone to turn to for that moment of, ha-ha, I did it. And you have someone who can help you in the ugly moments of, ugh, I got stuck. You also get to watch someone else experience the joy of doing something they didn't think was possible for them.
But if you zoom out a little bit, we are much stronger together than we are as individuals. And so when you work in a community like this, you are working to get the meaningful work done together, which is maybe the most important part of all of this.
we are much stronger together than we are as individuals. And so when you work in a community like this, you are working to get the meaningful work done together, which is maybe the most important part of all of this.
So that's what I've got. I'll take any questions if I have time. Thank you.
Okay, let's do one question. What's the balance between teaching the community something useful versus something they're interested in?
Oh, so useful, so something useful versus something they're excited about. I would be curious who's making both of those determinations, but feminism aside. I think what I would do is try to figure out what overlap between those two things could look like. So what, like, where's the excitement and is there a way to sort of dovetail that into whatever application we're driving towards that's required?
