REUVEN Done Sean Tibor: [00:00:00] hello and welcome to teaching iPhone. My name's Sean Tiber. I'm a coder who teaches Kelly Paredes: [00:00:19] and my name is Kelly. She used to print as an, I'm a teacher who codes, Sean Tibor: [00:00:22] and this is episode 30 where we're talking about teaching adult learners, and we have a special guest with us today. Kelly. Kelly Paredes: [00:00:28] Yes. You met a ribbon in Python. Sean Tibor: [00:00:30] That's right. We have Ruben Lerner joining us from halfway around the world to talk about teaching adult learners Python. Welcome, Ruben. Reuven Lerner: [00:00:38] Thanks so much guys. It is fantastic to be here. Sean Tibor: [00:00:41] We're excited to chat. It was, it feels like icon was a long time ago, but it was really only like six months ago. And you and I sat down and talked a little bit about teaching and training and the differences between what you see in corporate environments and teaching adult learners, people who are either switching over to Python or maybe learning Python for part of their job and are setting, which is in the classroom with middle school students. So we're excited to have a, a conversation with you today. Reuven Lerner: [00:01:08] Excellent. Excellent. Yeah, me too. Sean Tibor: [00:01:10] Alright. So we started the same way we do every week, and we'll learn a little bit more about Reuben in a moment. But before we do that, we're going to start with the win of the week. So something good that's happened inside or outside of the classroom, or I guess this week, inside or outside of the training room. Ruben, we're going to make you go first because you're our guest. What's something that you'd like to share that's a win this week? Reuven Lerner: [00:01:29] Ooh, what is a win this week? Oh, so I'll tell you. So I got a ride to the train station from my client's office. And one of the reasons the guy gave me a ride to the train station was the, he wanted to tell me that the class that I'd given him a few months ago at his company, I talked about generators and Python. And you know, generators are one of these things that are kind of high level and hard to understand. And sometimes I described them as, uh, a solution looking for a problem. If you're not quite sure how to use them. And he said, I want you to know that thanks to learning about generators. We reduced our code base by like 80% and it is now easier to understand. And I told him, this is for me the reason I love doing trainings because I feel like I'm helping people do their job better. They're able to do more in less time, and it was just like I was floating around for a few good hours just from that high from knowing that I really helped him and them to do a better job and understand things better. That's Kelly Paredes: [00:02:30] such a great thing as a teacher, knowing that you've done something and it's effective and it's working, and having a student or learner come back and tell you that, yeah, that's just a great win. Sean Tibor: [00:02:39] That's really cool. I, and for me, like I've used generators or, and it's helped me a lot, but I wouldn't say that I'm at the point yet where I'm like, I could reduce a code base by 80% by using them. So that's pretty amazing. Kelly Paredes: [00:02:51] And I just went and Googled generators. Reuven Lerner: [00:02:54] Well, to be honest, like most of the code, the 80% that he's said they removed. With all this crazy threaded stuff written in C plus. Plus I was talking to Python. But as soon as he could do, he was like, Oh, we can eliminate all that, make our code shorter, easier to understand, easier to maintain. And he went and did it. So yeah, it was a great feeling. Sean Tibor: [00:03:13] That is really cool. Yeah. I mean I think the memory management savings alone would make it worthwhile. So that's pretty cool. So I have one, I have one I want to share. It's actually sort of the same way. This was kind of cool cause we've been, this is episode 30 now. By our account. Hopefully we can count Reuven Lerner: [00:03:29] properly by this point, but Sean Tibor: [00:03:31] it's episode 30 and we just crossed 81,000 downloads of our podcast since we launched last December. But what's really cool that the actual win is that we got an email from a listener, Alexandra Andorra, or Alexandra, sorry. And Alex wrote in and told us that they have been, he's been listening. He or she, I hope I understand this correctly, but she's been working on a. Listening to our podcast, really enjoyed it, got inspired by it, and has now launched their own podcast called learn beige. And stats is all about Bayesian methods and how to use them in Python and R. and they've already recorded several episodes. So I'm going to put a link to the show notes in here. So if you got, just got excited because you heard that there's a podcast all about Bayesian methods. It's going to be in our show notes and you should check it out. But I thought that was such a cool thing that someone else has taken the leap to start their own podcast and get their voice out there, because we definitely need more voices in the Python programming space around, especially as podcasts. Kelly Paredes: [00:04:34] Yeah. That's pretty cool. We'll definitely have to see what that's all about. And I'll check that. I haven't had time this week. It's been crazy. We started the new quarter, Sean Tibor: [00:04:43] so it's been a Kelly Paredes: [00:04:44] no, that's not my win. Sorry. Um, my widow, I mean, you know, I have to, I have to do bragging rights cause I'm kind of like Ruben, I get to watch that first day with the eighth graders. And I was sitting in the second day, technically, but the age Sean Tibor: [00:05:01] I taught, Kelly Paredes: [00:05:03] I taught the kids that Sean's currently teaching, and so I get to watch them. They haven't had Python in almost a year, depending on what time they had it in the quarter. And they're coming in after summertime, that summertime side, they've had a first quarter of school and they're coming into Sean's class and he's starting to do a review and making them shut their computer. No opportunity to Google anything or look at former code and he is having them recite or tell him how to code. Certain small programs and the amount of memory recall that the kids are having from just nine weeks of learning Python. It's so great. And the kids are like seamless. We learned so much. You taught us so well yesterday or last year and it was good. Yeah, they probably just said it to be nice to me, but. So it's a good one. Sean Tibor: [00:05:55] Well, what was great about it also was that they were working together, right? So one person might have one piece of the code, you know, like, Oh yeah, here's how we use the input function to get user input. And then another person will say, but then we need to put that in a variable and here's how we do that. So they were all working together to kind of combine their knowledge and make it work. It was pretty cool. It's Kelly Paredes: [00:06:12] interesting cause they all had different times of the year last year, the ones that are in a class. So. Sometimes I taught differently in each quarter, so we'll see which one's better. Excellent. Sean Tibor: [00:06:21] Yes. Excellent. So Ruben, we are so thrilled to have you on the podcast this week. I mean, going around and all the different people that you get to interact with and meet on a weekly basis, teaching courses and then through your online course offerings and everything that you have as well. We're just really excited to hear your perspective on how people learn and how they learn Python and computer science. But if you'd start, just to give everyone a background, how did you get started in programming and then how did that turn into becoming a trainer and Reuven Lerner: [00:06:53] teaching. So I started programming at a young age back before PCs, you know, back in the, like the Mesozoic era. We're basically, basically, we had an Atari video game system at home. For those of you who remember what that was, and there was this cartridge you could get that you could plug in and program in basic and you could really do basic things, you know, so to speak. And that led to, when we finally got a home computer, I did some programming. And looking back, it was like a joke. Even kids nowadays to do programming or doing these way, way more sophisticated than I did, but I just sort of fell in love with computers and programming and thought it was really cool and fun. And so I ended up going to MIT and studying computer science there, which basically changed my perspective on everything. Like, Oh, that's what programming is. That's what computer science is. And so I figured, okay, I'll go get a job like everyone else in the computer industry. And so I worked for HP for about two years, and then I worked for time Warner on their website. I should mention that while I was at MIT, I edited the student newspaper and we set up one of the first websites in the world. So like we were always using computers and doing technical stuff, and I just sort of fell into this web thing. And while I was there also, while we had to use some high level languages, so we did some Perot, we did some Python because like no one was going to really write web program, dare I say, even applications in C or C plus lots. People did that. But the moment you discovered Pearl or Python, you were like, why? Why would I ever do that? And so then in 1995 I moved to Israel and I decided to take the opportunity of changing countries to also try a new sort of a new direction in my career. And so I started consulting. And my consulting work started off being doing basically web application work, some system ministration work on Linux. And I continued working for time Warner remotely for about four years. But that was part time. And so I started building up my consulting practice and what I discovered was that, yeah, many companies wanted me to come in and help them with programming. A little by little people were learning at the time about open source and Pearl and Python and so forth. But a small number of companies said to me, well, instead of doing the programming for us, would you teach us how to do it? I said, sure, sure. Now, I didn't really have a background in teaching or anything, but I said, yeah, we got this cause this can be fun. I like presenting to people and that sort of grew over time and when it really grew a lot was when we came back to Israel after I finished my PhD coursework, but I was still working on my dissertation. Someone suggested that maybe I could work with a training company and they would sell courses for me. That's to say I would be the trainer going into the classroom to the companies and I would provide the material, but this company would sort of, they would take 50% of whatever income we got from a company. Not that I knew that at the time, in exchange for doing the marketing for me. And so for about two, three years, this training company marketed my courses. And that's when I discovered, wow, I really like this. This is way more fun than programming and much more satisfying. I don't get bug reports late at night and I can schedule my time in advance. And so basically when I finished the PhD, I said, you know what? I'm also just going to become a full time trainer. And it just continued from then. So I've got things done five, six, seven years now that I've almost only be doing training and where's, I started doing a bunch of different technologies. I'm now concentrating on that pipe onto the Python ecosystem. Sean Tibor: [00:10:17] Nice. That's really cool. That's such a great journey. And I, you know, one thing that struck me was that moment that you said when you were in undergrad and learning computer science, that that was a moment where you're like, Oh, this is how it really works. And I remember having that same sort of moment probably around my freshman or sophomore year in my computer science classes and part of my information systems coursework that I had grown up around computers my whole life. I have been in love with them and enjoyed. You know, using them and working with them and everything. But it wasn't until I had that formal training that I felt like I started to understand how they really worked and how you should think about computing, not as the hardware and the operating system and as a user, but really how you could make them do things for you that were really interesting. Reuven Lerner: [00:11:06] So the intro class, the intro computer science class at MIT, when I was there, it was called, well, we call it six double O one but the rest of the world calls it structure and interpretation of computer program. It's this amazing, amazing, both that uses lifts or version of lifts, Pope scheme. I believe David Beasley occasionally teaches courses using it, and it was mindblowing. Moreover, even the stuff that I was like, yeah, yeah, yeah. Why do we have to learn this. I draw upon those ideas nowadays in my classroom and I teach some of those things using some of the same, some of them terminology, and it's amazing to me to see even professional programmers who've been working for years light up when they see how some of these things work. Sean Tibor: [00:11:46] Yeah. I mean, I think it really is kind of amazing because especially for me, like I, it was hard for me to grasp things in a theoretical manner, but as soon as I could see them actually in practice and see them being used, that's when it made more sense. Right. The first time that I was learning about, you know, recursive algorithms and things like that where we were talking about it more in a mathematical context. It was just bang my head against the wall. I couldn't get it. Why would you do it this way? Why would you do it this way? Then the first time they showed me, okay, well here's the Fibonacci sequence, or here is, you know, even the most trivial of actual code and algorithms and I could try it out for myself. That's when it started to click for me and, and it's really just like, it was the same thing. I had that moment where I just lit up and I was like, okay, now I get it. This is Reuven Lerner: [00:12:30] cool. Amazing. Sean Tibor: [00:12:31] Yeah. So good though. You get, you get the next part. Kelly Paredes: [00:12:35] I was just sitting there thinking you switched into into teaching and I'm just thinking the whole time, I keep, keep remembering the first time that we watched Sean teach and it was just like this natural moment. Do you remember your first, your first time in a classroom when you were actually, you know, in front of students teaching them? Reuven Lerner: [00:12:53] So I've always done, even from the time I was a little kid, I've always done. Some sort of teaching, leading stuff. So when I was, I must've been nine or 10 years old, I volunteered to run the children's service at my synagogue. And then when I was in high school, I was always sort of giving talks as part of my youth movement and so forth. And so I was only sort of getting up and teaching, but it wasn't in a classroom per se. And I definitely remember sort of the first, maybe not the first time, but one of the first times when I was training, and. I went through things and I taught it and everything seemed to go well and everything. Everyone seemed to be happy, but looking back, I'm just appalled by everything I did, how much material I tried to teach in a short period of time, how few exercises I use, how I didn't check to see if they understood it more than a, yeah. Yeah. Okay. Let's go on. I mean, it's definitely been, it's definitely been a long journey of. Actually making sure that my pedagogy works. And even then, I mean, it's a hard thing to measure, right? Even under the best of circumstances. But I feel like one of my advantages, or one of my competitive advantages, and I guess you guys had this also to a certain degree, is I'm doing this every day, right? Like I'm out in the field teaching every day, and so I can experiment with stuff. And I'm often teaching the same course twice, three times in the same month. So I can, I had this very quick. Feedback loop of did this work great. I'll use it next time. Oh boy, this did not work. I'm not going to use it another time. And then even I'll go so far as to say, and I hope not too many of my students are listening to this. Even some of the jokes I make, many of the jokes I make at certain parts of the class. I make them knowing what the reaction will be because I've made the same jokes at the same points in the past, and I know it'll like break the seriousness or allow them to concentrate or just release some tension. Kelly Paredes: [00:14:49] I think that's the benefit of teaching a lot, and often we have that same opportunity. We have quarter classes, so we get to teach anywhere between three to five times a day, and then we do it. Yeah. Every nine weeks the same thing. And I think that we were experimenting a lot in the beginning last year trying to figure out where our footing was. And I honestly, what I taught first quarter was completely different than what I taught second, third, fourth, and now and this quarter. And we been doing that same kind of feedback loop a lot, seeing it grow and mutate into a nice. No pedagogical kind of process. You know? It's been fun, so I totally get what you're talking about Sean Tibor: [00:15:32] when I think that's interesting too, and I didn't really expect this until I started teaching, but it's amazing to me how much the job of being a teacher is almost like being a standup comedian. Right in that when you're in the audience, it's hilarious and it sounds spontaneous and it sounds like, wow. They're like, they are making this up just for me. Right. But you don't see all the practice that goes into it. The rehearsal, the repetition, that helps that, that comedian know exactly how the joke is going to land and how to, how to read the room to land it. So I think that's a really great perspective. Reuben, I hadn't really thought about it that way until you mentioned it, but yeah, that ability to cycle through it a few times and no. How your audience is gonna react as a really, really effective way of knowing how to engage Kelly Paredes: [00:16:17] them. Talk about that a lot with the reflective, the reflective learner and the reflective teacher, and I think that's, do you write down any of this? After you get done teaching a class, you go, Oh yeah, I need to remember that this one works. Reuven Lerner: [00:16:30] No, that's a really good idea. Kelly Paredes: [00:16:37] It's called metacognition. You should really reflect on your learning every single day. Sean Tibor: [00:16:43] Oh, don't worry, Ruben. She tells me the same thing. Reuven Lerner: [00:16:46] I mean, I reflect on it. Typically on the commute home. I'm like, boy, this worked great and not work terribly. As I nod off to sleep on the train or something to write these down would probably be even more effective. Yeah. Yeah. Kelly Paredes: [00:16:58] Write it down and tell somebody that's what we always recommend. Sean Tibor: [00:17:03] So Rubin, tell us a little bit more about this, cause you mentioned that you teach the same course, you know, two or three times a month sometimes. Well, what does it mean to be a corporate trainer? Like what is your typical course look like? Is it always in the classroom? Do you, I know you have some online courses as well, but can you tell. People that maybe aren't as familiar with this profession, like what does it mean to be a corporate trainer and how do you approach it? Reuven Lerner: [00:17:25] Okay. So most of the people I deal with are in high tech companies of various sorts, and their day to day job is typically going to be writing software, maybe writing tests. They'd be running, you know, working on hardware, something very techie. And so their company comes then at some point and says, Hey, good news. You are now going to be working in Python. And the employee, you basically think, Oh, I need to learn this. And the company says, better news. We're going to give you a class so you don't have to teach yourself. Because there aren't many companies where they have people teach themselves. They'll give them a Safari subscription on O'Reilly. They'll buy them books, they'll give them a, I dunno, a, um, a, what they're called, Pluralsight subscription. But at the end of the day. I mean, I think the two of you can vouch for this as long as I can. There's no substitute for good frontal presentation and learning. So these companies then realize, well, we want to teach price onto our people in part as like a perk, because we want them to be happy and stick around and in part so that we can make sure everyone's on the same level. Then part, just to make sure they do it within a certain timeframe and don't say, Oh yeah, yeah, yeah. I'll read the final book someday. So the company then says, well, we'd better find someone. So they look around for a trainer, a Python trainer, and at least in Israel, I'm one of the few people doing it in the, you know, the larger world. There are quite a few more people doing it. And so I will typically get a call from a company saying, we need a Python class. Now, there are things that many of them say, so many of them are like, really? It's so might. There are a few different courses that I teach, so I have about nine or 10 different courses that I can offer, but my bread and butter is really my intro Python class, which is intro to Python for people with programming experience. So you've been programming in Java, C sharp people, philosophy, whatever it is for five, 10 years. You don't know much Python. Maybe you've been working with it for a few months, but you really don't get how it works. So I'll come in and in four days get you through that. And so I'll say to a company, okay, it's gonna be four days. It's going to cost you such and such. Sometimes maybe they'll like it, it's gone down to dead, but made it a quarter of the time. And some people say, really four days, you know, our people are smarter than average. Maybe you can cut that down to three days. And it's truly amazing to see how many companies that are smarter than average people definitely are of them play that. Um, right now it's a like little forgotten effects for corporations. And so I will then arrive at the company and usually I tend to limit it to 16 people in Israel, 20 people elsewhere, and then 30 people in China because of the noise factor. So Israelis tend to be very, very boisterous, so I've got to keep them calm and quiet and then small. And I'll come in and plug into the projector and we'll, I'll typically teach from usually nine to five with an hour long lunch break and a 15 minute break in the morning, 15 minute break in the afternoon. And it's all my show. Like I'm there talking for Bobi eight hours minus, let's say this let's, let's all six and a half hours minus exercise time. And so part of it is me talking, part of it is answering questions, part of the exercises. And so I have an intro five course that I do for that. That's four days I've been advanced by then, of course, it's four days. I haven't enjoyed a day science course. It's four days and then the rest of them are a bit shorter. So I have something in regular expressions from being get and little by little, my, my for repertoire and offerings have grown. And it's not unusual for company. And in fact they built, I sort of depend on this. If a company likes what I do, they'll keep bringing me back for more and more and more groups. So a company that I was at earlier this week where the guy gave you the right to the train station, I think I teach just about all of their new employees who come through the company. So I'm there easily twice a month teaching a course and other companies call me once a year. And the companies that liked me a lot will then invite me back to give while you give the intro course and then the advanced course. And then the data science course and maybe a good course. So it becomes a nice recurring gig. And I get to know that what I call the training managers, and it's shocking, but some of these massive, massive, massive fortune 500 companies, I'll, they'll email me, like the head of the training will email me and say, Hey, do you have any time in February? I'll say, yeah, what about these days? I don't say done. That is the negotiation I have with a multibillion dollar company. Which as my advisor like to say, has the advantage of being true. Right? It is actually the case. I'll cover those things in my course, but sometimes we'll have specific requirements that I don't cover, and so I'll say that, look, I don't cover that usually, but I can learn it as I can work on it, and I use that opportunity often to teach myself something new and expand the repertoire of things I can teach. And if it comes to me in class, like my rate, my regular expressions course, I will encourage them to bring the long files they're working on so we can work together to sort of parse them. That's Kelly Paredes: [00:22:33] interesting. I was just thinking while you were talking about that, that's when I came up with that question thinking, you know, the kids will come up to us and say, we want to make X, teach me how to do it. And it's like, it's not the actual teaching of Python that we're teaching. It's actually solving the problem for them. And so I was just curious of that kind of. Sean Tibor: [00:22:53] Yeah, a bunch of is actually the coding versus how you think about solving problems maybe in a Python or Python X sort of way. Reuven Lerner: [00:23:00] Oh, for sure. For sure. Like so first of all, I love it when they ask you those sorts of questions. Right. In in general, I mean, someone's will be years ago, maybe there's like a well known thing among teachers, but someone told me that there are two kinds of questions. Good question. The student does not know the answer and excellent question. The teacher does not know the answer. And I go, Kelly Paredes: [00:23:19] I need that. Reuven Lerner: [00:23:22] I like, I love it. And I say to my students, every day I learned something new because people ask me hard questions. I have to go research it. I learn better. And most of what I teach is based on these challenges to me. And sometimes people say, well, what if I want to do X and Y and Z? And so I'll try to solve it with them more in front of them so they can see how to solve it. Because for me, like whenever I do an exercise, they have time to do it, and I try to get them to do it in pairs. Sometimes they listen more than others and then I solve it in front of them. Because for me, the process of solving is one of the most important things I'm teaching them. And yet sometimes people will come up to me and say, Oh, what if you want to do? And I'll say, Oh, I don't know how to do that. Let's see if we can figure it out. We're better yet. I'll say, that's a great question. Maybe I can give it to you as an exercise, and everyone looks at me in horror. I say, don't worry, I'll give it an exercise to the next class I teach and everyone likes, you know, Chuck open and that feels really, it's Kelly Paredes: [00:24:20] funny. Have you ever taught anyone that has zero computer. Programming experience similar to mine. I mean, I know new HTML back in the days, but I wasn't a coder. I went to school to be a doctor. I was completely biology and math person and a little bit of engineering in school, but not one of, you know, you and Shaun people. Have you ever taught someone like me who's like, yes, I don't know anything. Yes. Reuven Lerner: [00:24:48] So I was teaching my intro Python class. For a good few years at a big high tech company. And I noticed a trend that on the first day, two or three people would come up to me and say, wow, this is great, but I'm not a programmer, and this is way to faster mate. To which I'd say, Oh, today was the slow day. So, so I came up with what I call Python for non-programmers. And I love teaching the course typically about half or more than people have taken a programming course in college and were so turned off by it. They were convinced that it is hard or impossible or they're stupid or whatever it is. And then what do you know? They're in a high tech company managing programmers and they'd like to know what their employees are doing or to survive in the company. They need some programming skills. And so it is one of my favorite courses to teach because we start with zero. And with people who, who are convinced they can't do it. And by the end of the four days together, I mean, I'm not saying they are now professional software engineers, but what do you know? They can write some basic functions, work with some files, and they understand what some basic data types of variables are and they have this incredible sense of accomplishment. Sean Tibor: [00:26:03] It really is amazing. And I feel like that's part of the like responsibility we have as teachers and trainers is, is to help them overcome that own label that they've put on themselves, right? Of, Oh, I'm not a programmer. Just by helping them do it. Like, let me show you, let me, like, let me show you that you can do this and maybe you're not going to go out and apply for that. You know, junior developer job, but you can at least take off the label that says, I'm not a programmer. Right, Reuven Lerner: [00:26:31] right, right. It's a kind of literacy that I don't know if everyone needs to have, but everyone can have it at some level or another. That's Kelly Paredes: [00:26:39] definitely one of our theories. We, the first thing we say is the last thing we want you to to think is that we're expecting you guys to be programmers. And you know, we're teaching six, seventh and eighth graders, so at this moment of their life, that's the last thing. They're not. Not, many of them are saying, yes, I just want to go program and hacking. Well, actually they all Reuven Lerner: [00:26:59] want Sean Tibor: [00:26:59] to, Kelly Paredes: [00:27:02] like, we're not teaching that on. Not yet, but it's not one of those things that we want them to sit there and say we're, we're teaching them to be programmers. So it's an interesting take. If we can just get them to understand and for me, I want them to appreciate, appreciate this as a language. Appreciate that. That they can see some words that they can recall the words that it's not really that confusing. Cause a lot of their parents were say, will say to me, I can't help them. And then I look at them and I said, well, I don't expect you to help them if you want to learn, you could come into my class. But it's one of those things, I just want the kids to be able to appreciate the complexities, the, the skills involved in learning and seeing a simple code get entered and then something come out of it. Sean Tibor: [00:27:46] Yeah. Yeah. So, and, and Ruben, I wanted to ask you about, about that sort of building confidence and, and, and how people can be successful and find success because. One thing that I really like about, you know, kind of going through your website and looking at all the things that you offer, is that you offer such a wide range of ways to learn Python, right? There's, there's the weekly Python exercises that you have. You've got free newsletters for email, so you can kind of get things dripped to you over time that you can learn from. But there's also all of your video courses and you're in, you know, your in person training and things like that. How does someone who's. You know, in your audience that kind of rights zone of people that you know, maybe you need to learn Python for whatever reason, or have been told that they need to learn Python. How do they know Reuven Lerner: [00:28:32] what Sean Tibor: [00:28:33] way might work best for them? Or in what circumstances should they choose, you know, a, an online course versus going to their boss and say, Hey, I need you to send me some in person training so I can really understand this. Like. Are, or do you have some advice for someone who's trying to make that kind of decision? Reuven Lerner: [00:28:51] Look, I still think if the trainer is good than in person, training is always going to be superior to video training. There's one exception to that, or I say one, one reason where that's not true, and this I got from my students, so I've, I've one client where we're now doing some blended learning. Where would they've done is they've bought my online good course. And they have people watch that for a few weeks or, or the night before. And then I come in and do a day of exercises and continue from where they left off in the videos. And I mentioned them in the class. Oh probably a few weeks ago. Well I'm glad I'm here cause it's that in the videos. And someone said no, the videos, I can rewind, I can return to it. It's a great reference material. And so that told me that there is an advantage there, but the fact is that when I'm in the classroom, people can interrupt me and stop me and ask me questions and I can go over their code. So I would say that's always going to be better. The reason I do the video courses is quite frankly, because otherwise they can't reach all the people I want to reach. There's the limit to my time. I don't do open enrollment courses. Not yet. I'm toying with the idea of the doing it in late 2020. But I don't do open enrollment courses. So if your company isn't willing to spring for me to come to teach 1620 people, that's not going to happen. And this is like the next best thing we did type on exercise is it came out of people asking me questions. So very often when I'm done with the course, people will say, how can I learn more? How can I practice? Right? So, so this is one of the nice things about adults. Some of them, at least, in fact, many of them realize that it's to their advantage to know Python better for the current jobs and for their future jobs. And so they want to learn. And so sending me, okay, now that we're done with the course, this is great. We're two now, how can I get more exercises and practice? And so we'd be, part of the exercise is like, okay, let's give you some exercises. So the bunch of 15 week courses, and it's very simple. You get email on Tuesday with a question, you get the answer the next Monday with the answer. And there's a form in between. Sometimes I do live office hours. And so my feeling is that we'd be fine of an exercise for people after they've taken a course to reinforce it. But you know what? There are people that do it in the same time as they're learning. There are people who buy the object oriented. We can deposit an exercise and the object joins in video course from me and go through it together at the same time, which I never expected, but people are definitely Sean Tibor: [00:31:08] doing it. Kelly Paredes: [00:31:08] It's actually interesting as you're sitting there talking about this, I'm thinking about my learning journey and I did most of my learning at the beginning. Through online courses. And then when I, when Sean and I. Started doing this podcast and becoming more familiar with how we work together. He was the person I interrupted in the middle of his sentence asking him questions, pausing the video, and I was just thinking like this whole combination of online video, either challenges to work on and having some sort of mentor or facilitator is really is really crucial. It's really critical and it's a nice blend of learning opportunities. Reuven Lerner: [00:31:49] Well, I'll tell you weekly by the exercises, we've gone through a whole bunch of iterations. I started it as this will just like an ongoing evergreen course, so whenever you subscribe that way you get exercise one and then exercise two and exercise three and I realized that in any given week, people were pretty alone. You were probably the only one your week doing exercise five. And so when else was the only person there do answers three and the community and the reinforcement and talking to other people is so crucial to learning in my opinion. So I made it then so that everyone is on the same schedule. And then I realized it was a year long. Like I said, okay, I'll do 52 exercises. And it was just way, way, way too long for any like normal human. So now it's 15 weeks. That seems to be about the right lens before people lose interest. And what I have been as people posting their answers in the forum. So either everyone can learn from everyone else. Now out of a cohort of 8,000 people, only 15 people are going to do that, but they're gaining a lot from reading, writing, helping, and I think they're getting the most out of it. And it's this culture that just sort of emerged, which I really am enjoying watching. Sean Tibor: [00:32:55] That's pretty cool. Well, I know we don't have too much time off, but one of the things I definitely wanted to ask you about was how you teach get, and let me give you a little bit of context because I want to think, I want to talk through, you know, maybe some strategies or tips for teachers who are trying to teach get, because I. What I found is that get can be a little confusing to learn sometimes, and it's hard for people to grasp how this all fits together, especially when you layer in, you know, remote repositories and things like that. But what we're trying to do is we have this. Lego robotics team. And Lego has been doing this phenomenal job of using robotics to teach coding and to teach engineering and problem solving and everything. So we have, I think, what, probably 25 or 30 students right now that are in this year long competition to build Lego robots that solve challenges and solve problems and everything. And what's really cool about it is that this year. You can code the robots in Python and use them in competition. So Python is now competition legal, and we're super excited about it because one, it's so much more fun to code in Python than in a block-based editor, but too, it opens up these doors for us to be able to create, you know, version control for our students so that they can start to collaborate better and share code and work on the same code base. And do better testing and all these things that it enables. But what we're trying to figure out is, well, Reuven Lerner: [00:34:23] I mean, I don't like Sean Tibor: [00:34:27] it can be, it can be really confusing. Right? So how do you, how do you teach, get to people who have never used version control before or. Don't understand even why you would want to use version control. Where do you even start? And I don't think you need to like, you know, give away your entire course. That's why it's there. But do you have any tips for people who are trying to teach this, right? Like, how do I teach, get to someone in a classroom environment or in a school environment so that you know, our students can start using it to better manage their code. Reuven Lerner: [00:34:57] Okay. First of all. Get is an amazing, amazing system that I love dearly and has definitely improved my work as a developer. That said, it was developed by Linux kernel developers. Not the people you would turn to for easy to understand user interfaces. So like the same word, it means different things and different words mean the same thing. Right. Come on, come on. Like, like really? Did you have to call it the stash and the index and the cash? I don't think so. So there's that problem, which I fully admit. Secondly, so you have to first of all, tell people they're not crazy and that those who come from other version control systems feel extra crazy because the thing words are used in the two different systems and the completely different thing. So one of the things I tried to do with my gift course, and this surprises a lot of my students who've been using it for awhile and then gained very frustrated, is the first half of the course. Even the first two thirds of the course. It's all local, all on your phone, computer. I don't talk about clone. I don't talk about pole. I don't talk about push. I want you to be comfortable with the idea of commits and branches and merging in different ways. Once you're comfortable with those ideas, the remote stuff is a natural extension of the local stuff. Part of the problem is also though, does that get as one of these systems that you have to understand how it's built in order to use it. You can't have an obstruction layer. You have to know these are the four types of objects that are stored in the database. Because once you understand what the objects are, and once you understand what the commits are, suddenly it starts to make more sense. So I typically, when I'm teaching, I'll have them try a few things, like we'll do a little bit of committing, I'll show them how that works, and then I'll immediately sort of pull back the curtain, show them what objects are there and how they fit into what we've been doing already. And then we'll talk about branching and merging. And then only when we've done all different kinds of branching and merging and conflict and everything, then we start using the network and they're like, Oh, Paul is just emerge. But instead of being two branches on my computer, it's a branch on the other computer and my computer. Got it. And so I think that helps to break through a lot of the conceptual barriers. Sean Tibor: [00:37:17] That makes a lot of sense because I think when I was first learning it, the remote aspects of it really were confusing because it's another layer that you don't actually need to understand in order to understand the core functionality of get and the core value of get. Because there's probably, to be honest, there's probably a big chunk of developers out there. That never actually have to merge code with anyone else, right? They're using it for their own personal projects or using it for other stuff. They probably don't actually need a remote repository for anything except for the fact that it helps keep their code, you know, kind of safely stored somewhere else. Right. And it helps them have sort of a backup. Right. So I think it, that totally helps me think about it in a different way. Because we can definitely push back for our students. That idea of having the shared repository of code while we figure out the basics of how to manage get, Kelly Paredes: [00:38:10] yeah. I think just getting in there, I love, I was taking notes, so I'm just trying to process that. It was just that dividing the vocabulary kind of step, that first step, especially for someone who's a non programmer, you know, what do all these things mean and what do they look like on my computer? That's huge. I'm thinking for sixth graders, seventh graders and eighth graders, just getting past that level on their own computers is a huge. Accomplishment. Sean Tibor: [00:38:36] Yeah. I mean it's kind of funny Ruben, cause I think you kinda, you grew up in the same generation where we did where everything was a file, right? Reuven Lerner: [00:38:44] Um, you know, you right, Sean Tibor: [00:38:46] everything was a father there. There's no cloud, right? We have files and for our students to even think about this concept of directory structures and files and file types and things like that, sometimes it's like that is the first lesson that we need to teach her. Like that's less than zero. Before we even start talking about version control and we Kelly Paredes: [00:39:03] start naming their files. Copy of copy of copy of ms parade is his Reuven Lerner: [00:39:09] copy. Oh my God, look, a lot of the people, I would say, in fact, the overwhelming majority of people that come to my gift course, they even mentioned if I start, is okay, like let me yet, you've been using it for a little while because you were told you have to and someone told you, don't worry. It's so easy just to use these five commands. And they were great until they don't, and then you go that same person, they're like, Oh, blow it all away. Just clone again. And then it'll all be fine. That's totally fine. Who are experienced engineers and very smart people feel like, they're like, like who? Like how can it be? How could I not understand the version control system? How could it all be going so wrong? And it's mostly conceptual. Like once you can break through that, I really find people have a much, much easier time using it. And. What can I say about the vocabulary is important. You have to use the same vocabulary of get, otherwise will be even more confused and frustrated. Sean Tibor: [00:40:07] Yeah. I think that that really helps. So just, you know, starting with some of those foundational elements and the foundational learning, I think will will help a lot. Kelly Paredes: [00:40:14] And you have, you have to understand, we're also trying to teach conceptual learning to kids whose brains haven't started really developing conceptual concepts. I mean, the abstract constructs, concepts, and they don't really make connections between them, so we have to break it down even further in it. I always do that. I'm like that little. Angel or devil on Sean shoulder going, it Reuven Lerner: [00:40:38] doesn't Kelly Paredes: [00:40:39] make sense. Does it make sense? I am Reuven Lerner: [00:40:41] awestruck that you're trying to teach or are successfully teaching, get let alone. There's other stuff too. You know middle-schoolers that that's very impressive to me. I mean, my 16 year old, I guess she's as, she's not like, yeah, it's still 16 for another month or so. So she was in this entrepreneurship program where they all learn Python and they were using get. And he was one of these situations where I said, Oh really? How are you doing this? And how are you doing that? And basically mergers were taken care of by their TAs and they just had to like pull and push. And one day when she got like really stuck with good stuff, I had to sit down and do bugger for. She was like, wow, that's like you really do know this stuff, right? Cause there's always like dicier in the affirming from your own children. But they sort of assumed let's keep it simple and not confuse the kids. And that worked well until it didn't. Right and Sean Tibor: [00:41:29] well, and the approach that we've taken with us also is that we teach them the things that they need to do what they want, right? So in this case, and we're trying to think a few steps ahead for them, but we're all learning Python this year on these Lego robots because we want to get to this place and we've set this shared vision. We want to get to this place where we have really. Well-functioning code that is very predictable. It's well tested. We know how to use it. And so if we do the foundations of it right, we have to, we'll be able to really compete well and shows show up strongly to all these matches and competitions. But then we started to break it down together, like with the students will, if we want to do that, if we want to have this, this goal in mind, what do we need in order to do that? And one of the things that our students have always talked about is the difficulty of collaborating on code, like how hard it is to, or we send the in the block-based code, how hard it was to share all that code among four or five different students all working on the same robot. Because you have version issues, you'd have one person had part of the answer but not the other part, and nobody can work on it at the same time. So once they saw this, they were like, okay, well we need a way to better collaborate on code. And my thought was, well, I'll look. You know, maybe it's a bit early and we'll see how it goes, but why don't we try learning how to use, get and use this as a way to, you know, to collaborate better or to learn some new concepts and add some of this to our approach. And you know, we'll let you know how it works over the next few months. We're just starting this journey, but they start to see, they see the value in it. They have something they want to do, and in order to do that, they need get that. Kelly Paredes: [00:43:15] It's, it's really interesting because with the Python community is very open with sharing and the Lego community calls it gracious Reuven Lerner: [00:43:23] professionalism, Kelly Paredes: [00:43:23] and we see our kids sharing. We should, well, we see our kids sharing things. Like one student may need something. Attorney and function. And then the, the other team doesn't know that they need that until they need it. And so we have that sharing with the mentor, kind of, you know, over the shoulder pointing to them, telling them what to write. And Sean was right to come up with this idea of what if this was in get, and this was the turning function to the left. And this is what we needed to follow the line, or we needed to solve a problem. And I think once we get that. Nailed down. I think it's going to be a pretty beautiful thing. Sean Tibor: [00:44:00] No. Our goal is actually to have an open source library of code for people who want to code the robot. So not just our teams can benefit from it, but any team that wants to use Python would be able to use our library of code. That helps take care of basic things like how do you drive forward a certain amount of distance, or how do you turn, or how do you use the gyroscope to stabilize your driving? All these things that are really cool and interesting problems to solve. But for a lot of kids might be a little bit outside of their reach. They just want to like solve problems and fix stuff and maybe they can, they can do it a little bit better if we open source some of the code base. Reuven Lerner: [00:44:38] Do you ever have your students make presentations like to share what they've done with the others? We Kelly Paredes: [00:44:42] do in a needs basis. For example, this weekend we went to competition just Specifically on the robot game and we had on my Twitter feed, I actually posted it. We had one of our eighth graders who's been coding and scratch pretty much all his life. I think he came out in kindergarten starting to code and scratch. He's just one of these kids that can break down problems. And when he got to us last year with Python, he just. Sword, and he was working with Sean doing some complex math, some calculus, and then he came over and he was teaching the sixth grader. He got a little upset because she actually got two challenges at the match, and he only got one, but Sean Tibor: [00:45:23] given the fact that he had been coding in Python on the robot for about. 48 hours. Yes. You did pretty Reuven Lerner: [00:45:27] well. Pretty impressive. Kelly Paredes: [00:45:31] Yeah. It's pretty, it's nice when you have a lot of opportunities to do one on one and sit down with kids in this kind of environment. I think they learn faster. Just like what you're able to accomplish in four days, we can accomplish a lot in nine weeks. Sean Tibor: [00:45:47] Yeah, and at the end of our nine weeks, we do have. A section where the students are working on their own projects. So they take what they learn and create something new with it, and they have to, of course learn new things along the way. And at the end of that, I stopped calling it presentations cause presentations usually meant that instead of getting cool code and stuff that people had made, I got a lot of PowerPoint slides. So I started calling them demos. So it's demo days and they have to demonstrate how their code works or how their product works. So we try to take them through a shortened version of a Product development, life cycle from ideation through build and testing, and a little bit of user research and testing also all the way through to demonstrating this proof of concept or this product that they've created to their peers. And sometimes still like administrators and other teachers and everything too. So we've seen some pretty cool projects come Reuven Lerner: [00:46:37] through that way. That's pretty great. Sean Tibor: [00:46:40] So Kelly has a question for you. I think she wants to F to finish up with, and I think this is more just out of curiosity from her own interest in international languages, other cultures, things like that, and that relationship between written and spoken languages and computer languages. So Kelly, I'm curious to know the answer to this, but I think. It was your brilliant questions. I'm going to let you ask it. Kelly Paredes: [00:47:01] So when you Google your name, there's just so much information out there. And I got, I got into reading so many things, and I don't know when you wrote this blog post, so, but you were trying to teach yourself Chinese, I don't know if how successful or whatever, but I'm actually interested in including both your spoken and your programming languages. How many total languages do you know and what are Reuven Lerner: [00:47:26] they. Okay. So we'll start with the programming languages cause that's more boring and they're, uh, you know, I mean, Python is definitely the language that I know best now in part because I just deal with it every day. But my Ruby is still pretty strong. Probably if I had to, had to go back and use some Pearl, although it's been a few years since I used that John's group. I never really got into, but I could sort of muddle my way through a lot of things. And the first language I learned, cause I was sort of brainwashed and using it in college was lift and the, I, I've sort of used a whole bunch of other things here and there, but those are probably sort of my main GoTo languages. And I keep hoping to sort of pick up some others. I keep thinking I'll find some time to learn rust, which seems to be a really cool language as well. Oh, I guess there's also SQL, which I've been using for an awfully long time. Kelly Paredes: [00:48:07] Right. So that was count seven or Reuven Lerner: [00:48:10] something like that. Yeah. Oh, and then like, so my 16 year old who's doing computer science, like we have majors here in Israel in high school, so she's majoring computer science. So they're making her use C sharp and she keeps saying the, Oh, I can't believe it to do things like declare variable. Oh, what a stupid language. I like it. I did. It's actually, it's actually good that you got exposed to these different things. So at any event, sometimes when she needs help, I'll also read ahead of where she is by a few pages so I can sort of like fake my way through C-sharp also, to some degree, I'm touring the spoken language and so, you know, I grew up in the U S and so my English is as fluent as any Americans. I guess. I moved to Israel when I was 25 and I'd already gotten pretty good Hebrew through school through being here. I spent a semester in Israel. I really worked on my head before I got to Israel, and so my Hebrew is pretty fluent. It's heavily accented. Every soften, I'll make a joke, like I left your, I do most of my teaching day to day in Hebrew. So you know, I'll just make a joke about how, so you might not have guessed, but I'm American and everyone will sort of Chuck the light. Check with, hear that annoying accent. The funny thing is that in Israel, when you're talking about high tech stuff. I think is spoken Hebrew, but written English. So not that I use slides very much, but when I use slides, it's expected. I'll use slides in English. No one uses slides in Hebrew, which is kind of a, so everyone's like doing simultaneous translation as they point to things and then translate them all in the way. And this is considered totally normal. I took Spanish in high Sean Tibor: [00:49:35] school. That's fascinating. By the way, I'm just Reuven Lerner: [00:49:38] like, Sean Tibor: [00:49:39] I mean, because in terms of like the way the language is even laid out, you know, right to left versus left to right, and all of those things to, to think about the mental gymnastics that your students are doing, and they don't even really have to Reuven Lerner: [00:49:49] think about it, right? They're just like, yeah, Sean Tibor: [00:49:51] why? Why wouldn't I be reading this in English and listening to you speak in Hebrew, right. Reuven Lerner: [00:49:54] It took me a few years to realize that everyone did this, but it wasn't just me. But yeah, there's only like government people and government corporations who keep everything in Hebrew. Maybe university people. I took Spanish in high school, so I can like still read some of it and I've used it on occasion, like when we are in Portugal. Where they don't speak Spanish. I was able to communicate with people using my Spanish, which we like, and my children were like, Hey dad, you actually do that. That but, but for sure, my great pride and joy hobby flash obsession, or as my family would see it totally crazy obsession is Chinese were Indian. I went to China, I guess it was for the first time, about six years ago, seven years ago maybe, and I've been there, I think about 30 times. I go there and teach a few times a year, I'm starting a Chinese company to distribute my courses. I just have a ball. I absolutely love the people in China. I love the country. I mean, it's great, great fun. And so just my finished my dissertation. When I finish my PhD, I decided I needed something infinitely difficult and longterm to do so. I have indeed been taking more or less daily Chinese lessons for about an hour on Skype every morning for five years now. And it is a blast. It is so much fun. It is worth every penny when I can go to like my hotel and you know, go there and say, hi, this is my passport. My company ordered a room for me. I'll be staying here for three nights and just watching their jaws drop it like that doesn't really any of the time. When I was going from one building to another at Erikson where I was teaching, and again to the elevator, and this woman says into her phone. Oh yeah, I'm going to class now. I don't think it starts soon. I say there are, Oh yeah, I'm your teacher. I think it's in building one and she always liked like daily reactions. We both grades. I have a long way to go before I'm fluent. My goal is eventually to be able to lecture in Chinese as well, but like I can get a like basically outside of class. I know basically speak Chinese with just about everyone and they wrinkle their noses up my accent and my pronunciation and my grammar and I wrinkled my nose that the fact that they speak very, very quickly. But it's communication. I've managed to have some amazing conversations with people. I've gone to go places where, you know, other other tourists. We need a translator and I just have great, great fun and be able to tell people. I can read some Chinese, like I read about 1,015 hundred characters now is also kind of fun. Kelly Paredes: [00:52:13] That's really cool. That's really interesting. I'll have to contact you later and talk more about that. I, I really have an interest in how the two types of communication with coding and with learning languages, how they're sort of connected, but we'll, we won't, we'll run Reuven Lerner: [00:52:28] out of time. a few quick sentences about that because I say always that learning Chinese has influenced my teaching dramatically. Dramatically that it puts me in the position of being a learner. I mean, not just urban learner, but like a learner of something that is new, different baffling. And it was very humbling. My teaching has changed a lot of the results, especially the concentration of exercises and the realization that. Duh. People don't learn things the first time you say to them, or even the first time they practice it. I, this will come as a shock to experienced teachers. Right. But you have to get lots of practice from lots of different directions in order for it to work. And I would say my Chinese lessons have informed my pedagogy with Python in a huge way. Sean Tibor: [00:53:12] That's pretty cool. And, and now you like, by the way, I think the new goal, right? Reuven Lerner: [00:53:16] Like Sean Tibor: [00:53:17] you'll know you've made it when. You can teach a class in how are we in Chinese and predict where the jokes are going to land and how they're going to be received Reuven Lerner: [00:53:25] right now. That would be, that would be amazed. That's right. That's right. Sean Tibor: [00:53:32] Awesome. Well, Ruben, it's been phenomenal talking with you. I'm so glad that we got a chance to reconnect. After speaking at PI con, we're going to post links to your website and weekly Python episodes so that people can connect with you. Where do you spend most of your time if people reach out to you on Twitter? Is that the best way to find you as, as you're traveling all over the world? Reuven Lerner: [00:53:52] Twitter is great. Email is fine by tend to be a little slow in responding just cause I'm inundated with so much. Yeah, those are, those are totally, totally great. I'm super, super happy to hear, hear from people from all over the world. That's really a, one of the great privileges that I have to be in touch with so many people. And my plan is to be back at Thai con. Well, not just my friends. I've got a booth. I've been paying for it, so I will definitely be a, um, so if any listings are going to be there in Pittsburgh, I will be very, very happy to. The people in person. Are you guys going to be there any plans for Sean Tibor: [00:54:21] that? We're trying to figure that out because we have an obligation at our school where we're part of an innovation Institute that we run every year, which is a lot of fun and really interesting, and we get to connect with other educators from all over the country. It's kind of like this little boutique show, but it happens to start the Monday after pie con. Oh, sorry. The sun. Yes. The, the preconference starts on Sunday of icon, so. We're trying to figure out how to get there cause it would be fantastic to go back to Pittsburgh. For me, Kelly Paredes: [00:54:47] we're trying to swing a one night, at least try to get there and be backed in order to present because I think we're presenting about four or five times during the conference Sean Tibor: [00:54:55] during high con jury during our conference. So we have that. We have a lot going on. But you know, Pittsburgh was where I went to college. So for me it's always fun to go back and it's, it would be a lot of fun to be there. So hopefully we can make it all work and we can catch up and have dinner or something. While we're there. Excellent. Reuven Lerner: [00:55:13] I will be super related. Kelly Paredes: [00:55:14] It was so great speaking with you and I hope to connect back with you at a later date in between your travels Reuven Lerner: [00:55:22] like life, like it Sean Tibor: [00:55:24] sounds great. Sounds great. So for teaching Python, this is Sean Reuven Lerner: [00:55:31] Kelly signing off.