Felienne Hermans 0:00
I would advise trying to find a combination of interest and skill. So you want to solve a problem that you care about. But you also want to solve something that you can solve and also in a way that is sustainable for you as a person. So you have to have three things, you have to have a problem that you care about that's meaningful, you have to have the right skills, and you have to be able to do something, or at least start where you will think you can do something for a longer period of time.
Tim Bourguignon 0:30
Hello, and welcome to developer's journey, the podcast, bringing you the making of stories of successful software developers to help you on your upcoming journey. I'm your host team building. On this episode, I receive Faline Hammonds. Fellini is a full professor of computer science education at the friar Universiteit Amsterdam, and the high school CS teacher. She's fascinated by how we can teach all people to program. She's also the developer of a programming language called Haiti. That makes it easier for kids to learn textual programming. And we're definitely going to talk about Haiti today. Last but not least, she is the author of the book, the programmers brain, he regularly writes in various publications, and a radio show I heard. Philippe, welcome to the afternoon. Hello. But before we come to your story, I want to thank the terrific listeners who support the show every month, you are keeping the dev journey lights up. If you would like to join this fine crew, and help me spend more time on finding phenomenal guests, then editing audio tracks, please go to our website, Dev journey dot info and click on the Support me on Patreon button. Even the smallest contributions are giant steps toward a sustainable dev journey. journey. Thank you. And now back to today's guests. The show exists to help listeners understand what your story looked like and imagine how to shape their own future. So as usual intro, let's go back to your beginnings. Where would you place to start off your directory?
Felienne Hermans 2:09
So I think the start that's also an end for me, because this specific journey that I'm on now actually starts when I finished my PhD in software engineering. So I was in school for a very long time, I got a bachelor's and a master's and a PhD in computer science and software engineering. And then at the end of this, I was like, Okay, where am I now, right? This was this was my path was studying computer science. And I really like programming and I finished everything. Now was right, my planning of my life didn't really go beyond that. And then it was sort of like, I don't know, a quarter life depression 1/3 Life depression, I was like, I don't know, like, do I want to be a university researcher? Do I want to be a programmer? I don't know, I sort of stuck. Also in my personal life, my long term, partner me broke up. So I was like, I didn't know what to do. And then I started to teach in high school. And that's, I think, the moment where the rest of the current story will start.
Tim Bourguignon 3:13
Okay, how he did, then let's, let's let's start there. You you're at this phase in your life where you don't know where to go? How did you decide, okay, let let me start teaching in high school, or what I what I want to do next, how do you decide about this?
Felienne Hermans 3:30
So I didn't. And the truth is, is that through networking, I already knew a few people in my neighborhood that were doing stuff with children. And they were starting a program in high school to teach programming to kids within the high school program, mandatory. So all 12 year olds in the school would receive some programming lessons that country dependent maybe was where I am, our high school starts at 12. And this specific High School in my neighborhood that I already knew about, they were starting this program. And some of them came have to have coffee with me. It said, oh, you know, you we know you are have an interest in doing stuff with kids. Can you give us some advice on how to approach this and I started chatting, and it was a nice conversation, and just out of the blue without even thinking about it. I said, couldn't I teach one of the classes? I don't know. Like, I didn't stop to think like, does this fit my schedule? Am I at all qualified to teach 12 year olds or not? I was not legally and I was also not prepared in a practical sense. I didn't think about any of these things. It wasn't it wasn't even maybe a decision. It just seemed like a thing I wanted. And I also didn't know if they would say yes. And they're like, Yeah, sure. No, that sounds perfect. That's how it happens. It absolutely cannot be called a decision. It's more like it starts to rain. There's not a decision, right? It's just a bit how I feel about this, which is also sometimes when people reflect on their lives. If they say, oh, and then this happens, like, like there was a plan, maybe there is for other people. But for me, no, I just didn't have anything more interesting or valuable to do because I was stuck. So it was definitely a result of me being stuck and being not satisfied with many things on my life. And I thought, I'm quite sure this is a thing I would enjoy. And I also thought that I would be adding value because the people from the high school they were neuro programmers, they didn't, they knew for them that it was important to teach their students about programming. But they didn't know anything about it. So I thought I would enjoy this. And this is a place where I can add value. And I think this specific type of stuck I was at that point in my life was that I didn't feel like I was adding value as a software engineering researcher, I'm not sure as a programmer, if you often read software engineering papers, by software engineering researchers, they have quite a distance, often to practice. And that's not to say that they are bad. Sometimes they have really good new algorithms and tools and ideas, but they're very far away from reality, in a certain sense. So I just didn't feel like the stuff I was doing was actually helping someone that I thought well, didn't get in high school is very clearly helping the kids because they will be right there. So it's about fun and valuable.
Tim Bourguignon 6:18
That makes a lot of sense. You're hearing yourself saying hey, can I can I teach? And people say, yes. How'd you start from there? You have to build a curriculum, do you have to start from scratch? Was there something?
Felienne Hermans 6:33
No, there was no thing that we're just starting this program. And the interesting thing, this is part of the journey as well that I had experience teaching 18 year olds programming in a university. So I had materials and I had plans and ideas. So I also thought foolishly, how different can an 18 year old beginner be from a 12 year old beginner, you will have to explain to them, Python, you will have to explain to them print the first commands and the brackets right and a lot of quotes. It is the same level, in a sense for any novice. So I thought, well, it's not hard, I have all my university stuff. I can simply just now go a bit slower with 12 year olds will be easy.
Tim Bourguignon 7:14
Did you have a chance to try that?
Felienne Hermans 7:17
This is what we did in first year, it was not a success. Tell me about their alerts? Yeah. So what I realized more than and now I'm we're going a little bit forward in the journey, looking back, is that I think a lot of programming education is based on the idea that you do not tell people, what is what they have to figure it out by themselves. I was just reading like, just before this meeting, a news article that came out somewhere early in the summer, where in Harvard, they will start to use AI to teach programming. And it's so interesting, if you read that article, maybe we can link it in the show notes, where they say, well, the AI is programmed to not give the example and give the answer. It's not co-pilot's, it's meant to lead the students to the answer rather than to just provide the answer. And I thought this is how I was thinking, right? I think many of us implicitly have this idea that it's never good to tell a beginner the answer. It's never good to tell a beginner how to do so they have to figure it out by themselves. And there's quite a long history of reasons why that is the case that if you want to we could go there. But that was definitely the way I was teaching as well. And upon further reflection, this is also a bad idea for 18 year olds. We have lots of dropouts in universities everywhere around the world. 50% dropout out of Computer Science University Programs, no one blinks, right? No one bats an eye if you lose half of your students by February. So maybe it's also not good for 18 year olds, but the difference is a 12 year old that's confused will tell you, right. They're like, I don't understand anything with 18 year olds, they go to their dorm and cry. And they're like, I am dumb. I don't know how to do this. They will not blame you, the 12 year olds, they blame you for good reason. So then after one year, I was like, No, this is no, this is not the right way. I will stick with it. I'm still teaching in high school still every week, same place. They didn't fire me. But then after one year, I thought, Okay, this this was not the approach. I have to make some changes.
Tim Bourguignon 9:34
Before we get there, why do we keep on doing this even with university students if it's not the right way?
Felienne Hermans 9:41
There are many reasons right? I think one reason is this is how we were taught when we were kids when we were students. So some people never reflect and they just do this automatically without looking whether it works because this is the only form of teaching they might know is this form He and I also think other people, my believes that programming is not for everyone. Some people might be somewhat happy with a 50% drop out. Because they say, well, programming is hard. It is not for everyone. So we're just weeding out the people that don't have the right brain try to don't have the right motivation or enthusiasts them. So some people might not see it as a problem. And then it doesn't get solved. Because if it's not a problem, what are we solving?
Tim Bourguignon 10:32
That's definitely the way I was taught. I'm trying to many of us, yeah, I'm trying to step back and see where my biases are. One of the things I always thought was that it was because we're always making sense of stuff we don't know. And in our, in our day to day life, we're stumbling on problems, and we have nobody around us to tell us how to get at it. And so I thought we were trying to replicate this early on, to get used to that feeling.
Felienne Hermans 11:05
So this is also a great point that you're making this also a reason why some people do it, because they think that the skills that you need in practice, are also the way you should teach beginners. But then that doesn't really make sense. Just something like reading a book, right? If you read a book, now, you do not start in the upper left corner with your finger following the lines, right? That's not a strategy you need as an adult, you can just open a book, you can glance at a page, you can quickly find something because you can read very skim very lightly. This is what a professional does, if they're looking for information. Imagine teaching a six year old reading. Yeah, and I just look at the letters a little bit. That doesn't work, right. So the strategies that are useful for an absolute beginner, are very different from the strategies that professional you professionals uses. And there's actually a swap there. This is called the expertise reversal effect, where beginners have to learn in a very structured simple way. But experts learn in a different way experts actually do learn the way we think beginners learn, experts do learn by struggling, but that but that's because they already know many things. If I get an error message in Python, then it says syntax error unexpected elf, I know what syntax is. I understand what what parsing is. And why is syntax our happens, I know what an e o f and o file means. So I can Google this if I program in an programming language is entirely unknown to me, and I get an error message. I'm still bringing this knowledge base with me. And then I can say, oh, I can Google an error message. This is a strategy that works really well. If you have 30 years of programming experience, and you're learning your 15 language doesn't work very well for a beginner. And I literally said that, like I will put the blame entirely on me. I set this to 12 rules, or you can ever mess you can just Google the error message. Imagine taking syntax error unexpected elf into Google. And then this gets there not even English speaking there. Dutch speaking. So what do you think is the error message? Because there's also lying to in the error message? And Python has this, this little pointer thingy? This, Amazon? They do? I think it does start to point as an error and an error. So what even is the thing you put into Google? And all of these things I'm saying about 12 year olds are also very true for 18 year olds. Still,
Tim Bourguignon 13:38
it doesn't need it isn't needed. Thank you for that. I having a six years old or seven year old now since last week, at home who just learned to read, it makes a lot of sense. They did it at school, they did something very fun. During the parents. Parents meeting this evening, what the parents invited, they gave us some some kind of hero glyphs in some some pictograms, and basically forced us to relearn how to read and say, okay, these letters don't make sense to you either. Now. So now let's start reading and understanding this, and this is how it feels for your kids. Whoa,
Felienne Hermans 14:14
it's so good. And this is also what it feels like to read programming code for the first time, even if it has words that have a little bit of meaning, like a four four is like that. And if you don't teach from that mindset, but if you teach from the mindset, that you will be teaching yourself a new programming language, many people will fail, but you will think it's them. Right? You will think that they are the problem. They are just not smart enough, or they just don't want to be programmers, you know?
Tim Bourguignon 14:47
And you're making gestures like I'm just giving giving the video feedback to you live the listeners as well. So I know I know what the end result of this is going to be. But it would be interesting in the way there. So end of the first year you realize teaching 12 years old is not like teaching 18 years old. This doesn't work this way. You probably have hints of already of all that you described. How did you go from there?
Felienne Hermans 15:15
Yeah, so there was one failure year in between. Because from there, I started to really, really be maybe even obsessed by learning. I really wanted to know, how do people learn anything? Because if you study computer science, or even in a bootcamp in a more informal way of teaching, there's never a course on how people learn. Which is weird. Because as programmers, we always say, oh, no, you will never stop learning, you will have to learn many new programming languages during your career. But in no way do we prepare people for actual learning, they don't know anything about learning. And therefore, they the learners themselves, the students also absorbed these ideas about learning is struggling and exploring. I don't know anything about learning, I have no mental models for learning. And I started to read a lot about how people learn anything, which is funny now, but then I almost lost my job, because I wasn't being very productive. Because I was reading all of these books about learning. And then some of the things I learned, we already hinted at earlier in this conversation, you have to practice a lot. You have to do really small things like exactly like your kid is learning letters. Maybe they have one week devoted to the letter A. And that's all they do, indeed. And then this takes 26 weeks, and then they only know letters, right? So it's really step by step. So then I thought, Okay, this is how I should teach programming, we have to practice. So we do one week, it's only print friends, brackets, quotes, hello. In my language, holo. Holo, corrodes brackets, that's the week. And they don't do it behind the computer, they do it on worksheets on paper, just 100 times, print. Next lesson one week, only variables. And the interesting thing about that is, it did work really well. kids learned programming a lot better than any old situation. Because we were basing this drilling in all the contexts, they made a lot less syntax errors, because they were practicing, right if you if you want to memorize a poem in Japanese or something, you can do it. If you just do it all the time, you will be able to memorize it if you spent F. So in that sense, it was working. But also unsurprisingly, kids, they don't really like this very much. And it wasn't even so bad, right? Maybe you might not think, Oh, this is terrible. But it's it's much like other high school subjects that they were exposed to right, the next hour in, in German class, they would also do worksheets and repetition. So it wasn't outside of let's say, the Overton window of teaching methods that they were used to. But they're also saying, we want to have more time in the computer, we want to make things right, we want to do something. And that I think is such an interesting tension that I still think about a lot. On the one hand side, we want programming education to be creating something because we like to build stuff. But on the other hand, I also wanted them to practice in small steps. And there's a little bit of like stretch, a little bit of conflict between that. Because if you want to build something of reasonable size or reasonable, interesting newness, you already need to know many things. So you cannot build interesting programs and also learn concepts in an approachable way at the same time in current programming languages. So that was year two, still a failure, less of a failure because I did think I am going in the right direction. It is better than it was we should step away from this. Freeform exploration teaching too many things at the same time really this maybe this is also how you were thought like, this is a variable. This is a loop. This is a condition now print all prime numbers on their 150 was how like no one told me what the strategy is to create a program like that I have nothing to grasp onto. So I'd say that's not good. But then sort of the pendulum swung all the way the other way. Rote practice rote memorization works but it takes away too much of you don't retain the fun that people have like this sparkle that I had when I was 10 just saying something like prints failing and then it would say failing and I love failing. Like master the machine right? Also Want to retain that. So then again, I started to deep dive into learning. And this is again, I was thinking, if we teach languages, we teach small subsets with rules where we are lying a little bit, right? We just say all letters are the same. Your kid maybe they don't even know capital letters yet, we don't talk about capital letters. In year three, we only talk about, you know, small letters or big letters doesn't matter. But usually you pick one set of 26. And the other ones just, they just don't exist, we don't talk about them now. And that's not only true for language, it's also very true for math that we take subsets with rules that aren't exactly complete. Like if you have subtraction, you probably start with the cookie mental model, you say, oh, there are five cookies on the table. And three kids, I give every kid one cookie, how many cookies are on the table two. Now let's reverse this, I have three cookies on the table, and I have five kids. And I want to give everyone a cookie, how many cookies are still on the table? Zero. Because after three cookies, we're out of cookies. We don't say you have now minus two cookies that to the cookie bang, no, just say kooky mental model, three minus five is zero. And sometimes we even change our lingo a little bit. In English, you usually say to younger kids, five, take away three in my language, instead of saying men, which is minus, we say f off, which also means away. So we say VI, l AF D. So this, the way we talk about concepts reflects the mental models. This is an interesting idea. I know someone that actually has taken five courses in compilers and did an entire PhD in parsing and processing programming languages, someone like that could actually make a programming language that has small subsets with only a little bit of the content. And an easy syntax that is in a sense, lying to the kids is not representing the whole language. But it is small enough so that they can learn it with a little bit of rote practice, not a lot of roadblocks, but just a little bit, it is powerful enough so that they create something that sparks the fun like, oh, with friends my name, or we have to turtle or Oh, you can make something that draws a little bit. So I thought I can make this just like a Hollywood movie, right? It's like, Ah, this is my destiny. I can build this. And then I did, I did build that programming language. And that's of course, ultimately became the heavy programming language. That is a language that I call a gradual language that has, it's basically a set of that we now have 18, a set of 18 different sub languages of increasing complexity, both in terms of concepts and also in terms of syntax. And that had never existed before there were languages, Grace, for example, and Racket that have slipped languages. That is not something that was unheard of, but some languages with syntactic variation as well. It was an entirely new idea.
Tim Bourguignon 23:27
And we're gonna get there in a minute. But first, I want to jump back a little bit. So you said you stumbled upon this job of teaching high school? Because I didn't know really where to go. When Headey started emerging into your mind, do you still wonder, is this right path for me and search for something else? Or were you were invested ready. And this was just a ball rolling down.
Felienne Hermans 23:53
So I wasn't vested. So I was definitely invested in solving this problem of teaching this group of 12 year olds that I had in front of me every year, teaching them better. So that was definitely a problem I was very much involved in. But it wasn't my plan to make this into something researching or to build something. I just wanted to teach them that I wanted to improve me as a teacher. But then I came up with this idea of building a language. And then it became, let's say double the fun, because I really liked teaching and I was really invested in solving this problem. And I could also solve it in a way that I really liked. That is building a programming language. So that just made it even more fun. Because I thought in retrospect, if you do want to look at it, like it was a trajectory, which it wasn't, I knew I had the skill of building a programming language and this is what I wanted to do because I just really freaking love building programming languages. The most fun that can be had on this planet is building a programming language. But I didn't have a programming problem to wield. This skill add that I thought would be valuable, and stuff I was working on, like building a programming language for the finance industry. This is what my PhD thesis was mainly aiming at, I just didn't care so much about investment bankers making their spreadsheets a little bit better. Like I liked the solution, but I didn't love the problem. Whereas now I had a problem that could be solved with a programming language that I really cared about. And I also really, truly believed that a programming language was a way this problem could be solved. I still also think there are other ways you could have better Worksheets and more practice and other things. There are other solutions also. But now there was a solution that was in my realm of possibilities that I thought, Okay, this will help, and I know how to do.
Tim Bourguignon 25:49
Okay, so let's jump on that training. So you describe Haley, so far as a language with eating sub languages. So I understand some kind of incremental steps into the language that remove complexity, remove some of the vocabulary that has not necessarily removed some some unnecessary syntax at some point, just just to make it simple in a subset of the language and gradually insert all those elements to come to piden. Yes, that's exactly right. Okay. And so you had this idea emerging in your mind. And you had probably a few months before the next year start? How did that go?
Felienne Hermans 26:31
Actually, I had just two weeks, because half the years, because it gets just take half a year of programming, because they also take half a year for technology. So I had one Christmas break the Christmas break from 19 to 20, in which I started to build my prototype was like a little bit before the Christmas break. So let's say I had like three weeks to build the first prototype, before the next group was going to start. Ultimately, it was 2020. So it was a pandemic. So stuff was mildly different, but we didn't know then. So the first version that I built was just three levels. It didn't have a syntax highlighting, and I nothing was there yet. But I just have three levels running with an editor, and you could edit in the browser, because you don't want to install stuff in schools. And that was the first prototype that we started to test.
Tim Bourguignon 27:24
So can you give us an example of how the first level what the first level looks like?
Felienne Hermans 27:29
Yes. So the first level in that then just have three commands. So one command is print, and it doesn't have brackets in quotes. So you just say prints, hello exam. And it just prints hello, Tim. And from the first level, I also also wanted to have a little bit of user interaction so that you can create something with with where a user is envisioned. So I also have the command ask, this is a little bit like input. So you can say ask, What is your name? And then you get a pop up saying, What is your name? And you can fill out an answer. And in the level one, we also have a command called Echo. And that repeats the answer. So you can say print aloud to this program, ask what is your name? Echo Hello. And then it will simply at the end, say echo, you do TM, for example, the final command echo will say hello, team, because that's the end. So it has states it has a variable. But it's not openly available to the user how to get to that variable, but then you can create a program that already has a little bit of customization. Because just saying friends Hello gets will say, and this is a good question. Why do I type prints? Hello, I can just open words and prints hello? Right? Why would I do prints hello to print? Hello. There's no logic there. So you want to make something where not only are they building something fun, they also see why they're building the thing, right? And just prints alone doesn't show them what a program can do that worth cannot do.
Tim Bourguignon 29:04
So you're introducing the concept of a command that is a fixed word that they will have to use. Did you get some questions? Why? Why the English print? That's right.
Felienne Hermans 29:16
Yes. So that's a great question. sort of hoping for then the story a little bit. So after these first test with kids, I asked them like okay, you know, how was this? Did you like it? What can we improve? And then indeed kids said, why are the commands in English? Why aren't the commands in Dutch now painted pins? So this is easy. And Echo is fo spelled the same so that is easy with ask is so it's a different words. And then they're like yeah, why not? You build this Why don't you build like wow, there exists otter kids and I wanted also of course, the other kids to be able to use it if they wanted to. But everything else from the beginning had been localized. So the excellent nation that we build in, and error messages, all these things were bilingual from the start, because I figured you cannot show Dutch kids English error messages I tried. It didn't really work very well. So it was like a fair question of them to say, Well, why nots? So well, why North? I have to build it. That's why no, it's it sounds like a little work. But of course, it was really, really hard, right? It's just duplicating the grammar and swapping out the words. And the interesting thing Haiti is an open source project that lives on GitHub, is that once we had those keywords, people started to supply other languages as well. French, Spanish, German, Italian, Greek. And then I thought, ah, our fish, I think is French for brains. I thought, Oh, yes, if your word for brains is our fish, then this is a lot further from brains than brains. So the farther we got from languages sounding like English, the more I was convinced that it was actually useful. And a little bit further down the line, we also started to introduce non Latin languages. The first that we had were a knee and Bengali. They offer translations in non Latin languages. I thought, wow, this is so cool. Yeah. So of course, if your language is Hindi, or Japanese, how much more difficult? Is it to do Python? Imagine a Python lesson. Yes. The first question is print. It starts with a B, and I are kids in India, like, what is it p and how does it differ from a B and A D, and an ND I probably kids know a little bit about English, because of their history. But there are many places in the world where 12 year olds might have some familiarity with Latin letters, because you know, they are everywhere. But enough to easily distinguish the letters that you need, just like the hero grill, if you were talking about in your, in your PTA night. That's the same thing where you can do it, but it just takes much more effort. And then I thought, Yes, this makes so much sense. And now we have 47 different languages, many non Latin and we also support the right to left languages. So we also have a rabbit and Hebrew and Ordo. So that was more programming effort. But the further away we goes from English, the further away we goes from the lesson alphabets to more useful I saw, so this was really due to the 12 year olds being like, hey, you should do this. currently implementing it. And this is why it matters to have good relations with your user.
Tim Bourguignon 32:29
First of all, congratulations. This is awesome. And you met you ended and the more the further from an English, the more valuable you mentored, because it's showing you the hidden steps that were in the way for other football for the age of 18 years old to learn Python directly, right?
Felienne Hermans 32:46
Yes. Yeah. And of course, we are. So you me growing up with Dutch, which is very, very close to English and shares the same alphabet, you never really realize how hard it is to read in a different alphabet. Like, imagine, assuming you don't know Japanese or Arabic. You look at me, like, what, right? How? But then for them, this is how they look at our language a little bit less so because English is just so everywhere. But imagine how hard it is like I know, sometimes now I'm debugging Arabic program. So people send me a screenshot in Arabic of a thing that doesn't work in any. And I'm gonna have this sheet of Arabic letters. I'm like, you can copy paste because it's a picture. It's like, why is this an arrow? What's even are the letters and then Iraq has this interesting thing where the letters are connected to each other, I don't even see where the letters are. But you can only know this if you if you take a position from somewhere else, I would have never been able to think this way. Because for me, the Latin alphabet is just the alphabet. Order alphabets are weird to me. So you you don't see that like the summary is you don't see your own biases. You never see this. Unless people are like, tap on your shoulder like a but what about Hindi? And I was what about him? Oh, no, I get it.
Tim Bourguignon 34:17
How did you decide how this set of sub languages should build on top of each other? What's the right? Sequence?
Felienne Hermans 34:28
Yeah, that's a great question. So there it shows that I think Hattie is two things. So it was one solving this practical problem in my classroom. But also from the beginning. I was interested in building such a language for the sake of demonstrating that it could be done. So I also didn't think about it so much because I thought I'm just pioneering a prototype that shows that it's possible and viable that it works with these kids and that it's technically viable to build something. It doesn't really matter all that much which trajectory I choose, because I'll put it out there. And people can look at it. And they can just know, fork this on GitHub and make their own trajectory. Because at that point, I didn't think it would be a platform with users. That's not a thing I considered. And we now have more than 300,000 users a month. So it's like, I didn't build that, right, that happened. But I didn't build that. Had I known that I wouldn't have thought more about the exact trajectory. But my, my reasoning for putting it just online and putting it on GitHub was, I'm just gonna do show what I do in class. So my trajectory is more or less the trajectory that we had in Python, which I thought about a little bit, there's like some sense and logic, we do variables than we do lists, because they're also like variables, but a little bit more powerful, then we do conditions, then we do loops, then we do functions. I think there's some sense in that. But I definitely also think auto trajectories could be possible. I just mimicked my existing Python trajectory onto Python. And there are other choices to be made. But yeah, it's good that I didn't know I think, because I would have had this paralyzing fear of getting it wrong. Had I known that this would be for many people the way to teach programming, but I didn't know. And now now we have what we have. And it's very hard to change it because legacy.
Tim Bourguignon 36:27
But I think it's a it's doing quite a good job. So that's a good legacy. Tim had a question. I forgot it. Yeah. When you when you teach this, this 18 steps, class, how long do you take for that? You you spoke about introducing a concept a week at the beginning of the story? Are you still there? Or did this change? And you do it differently? No,
Felienne Hermans 36:54
no. So we I have about 20 weeks with the kids. So my 80 levels more or less map to 18 weeks in the system that we have that is three hours every week that I have with the 12 year olds. And that's more or less what we still use, the earlier levels tend to go a little bit slower, because kids also need to get used to the mechanics of programming, like you have to go to a website, you have to log in, you have to click the button and then the code runs. What do you do when an error message appears? In some cases, 12 year olds also have to figure out how to click things with a mouse, because they only play on their phones and tablets. And they don't really mouse or keyboard a lot. So the earlier levels tend to take a little bit longer per week, and then the later levels go a little bit quicker, because then it's really just about the concept and knows also about some other things.
Tim Bourguignon 37:45
Okay, how do you deal in your class with differences in speed of the some some students going way faster than the others?
Felienne Hermans 37:52
Yeah, that's a great question. So there are two I have learned many things. Initially, my attention would be drawn to the Quaker kids, because they would be asking the more interesting questions, they would look like, it's, they will do like me, like kids that are obsessed with programming. And I really like it. So I tend to upon reflection, again, not seeing that then I tend to spend maybe half my time with the kids that's needed me least right? They really liked programming very often they advanced at home, because they would just continue with the work alone or together or with our parents. Whereas it gets it really needed me that we're struggling. They didn't ask me any interesting questions. They just like looked around really frustrated and confused. And then also, though, like, what why am I teaching, right? am I teaching to help the kids that already like programming that already want to choose this as a topic? No, that's not why I thought this was interesting. I thought it was interesting and valuable to these younger kids. So what do we have now in in inside the Harry platform, as a teacher, you can customize all levels. So you can change the lesson plans, you can upload your own lessons, if you want to, you can remove our lessons or reorder our contents. And you can also close this able levels. So you can say only level one, two, and three is available. And the rest is not available. It's just blocks. You go you go to go to level four, it's as your teacher hasn't made this available for you yet. You don't have to use it, of course, but as a teacher, I really like this. Because the kids that go really quickly. You might think, oh, you know, just let them go. But the effect of them on the rest of the classroom is not neutral. Imagine being a kid stuck in level one sitting next to someone that's already a level 10 looking at you like what and these are 12 year olds, why are you level one, you're so slow. And this is also not neutral, like who's most likely to already have prior knowledge and enthusiasm for programming. White boys from middle class families, right, because their dads bring them to programming clubs, their dads, when they're two months old, put them on their lap and say we're gonna do programming. So they are just a lot more likely to already have some experience and therefore go quicker, who is least likely girls, kids from disadvantaged families where there's not a computer so they don't have computer skills. So they just a little bit slower in the beginning, because maybe they're computering. For the first time, those type of kids are less likely to have prior knowledge. So if you let everyone free, it's very likely if you don't do anything, that you will reestablish a power dynamic in which all the white boys are like, Ha, this is so easy. And all the other kids, oh, my god programming so hard, and then they will draw upon it right. So you don't do this intentionally. I didn't do it intentionally. But upon reflection, I was always chatting only with the white boys, because they are super interested. And my school is a very much a mixed school, which is fantastic. But I wasn't doing the other kids a service. So the way I do it is if the difference between the highest and the lowest performance is too big, then the highest performance, they go do something else. Like do you have math homework? Do you have German homework? Do you have geography homework, go do that. You don't have any of that read a book, do not bother me, so that I can spend my energy on the kids that just need a little bit more practice to catch up. And then together, we will go to level four. And then the kids will not always like this. But no kids are like eating broccoli, they want to have pizza for breakfast. And it's our duty to make them do what is important and good for them. Good for us good for everyone, ultimately. So they don't like it. But I don't care.
Tim Bourguignon 41:49
This is lovely explanation. As this is just really, really, really how it should be actually. And this led to your way of teaching just going with the fastest and not caring about the rest of it.
Felienne Hermans 42:01
And really also this had to do with how I perceive me, right? Because I was a girl when I was a kid. But older than that I ticked all the boxes. So when I went to university, I also had kids around me that didn't know a lot of programming. I also thought, oh my god, you're so slow. You were so stupid. How do you know all these things? And then of course, you get older, like, how did I know all these things? Well, my parents bought me a computer when I was 10. And this is 92. Who got a computer then right? So that was such a privilege. I went to a very elite high school that had a programming club in the high school. Every week, I could go to my math teacher and we had like computer club in the school was like, didn't you have computer club in school? I was like, no, no rich white girl. Not everyone has a computer in the school. Computer Club, right? So only later I realized how much how, how much was available to me, where I was still perceiving myself as this genius. Job child. Oh, you know, I'm so smart. Because I told myself programming. No, like, half the school taught me programming, I assume
Tim Bourguignon 43:10
the discussion is going to be very great Oracle, given the energy you have when you talk about it. But do you see yourself doing this for the rest of your career? No.
Felienne Hermans 43:21
Teaching in high school, you mean are working on heavy, those are two different parts of
Tim Bourguignon 43:25
me maybe maybe both.
Felienne Hermans 43:29
In high school, so I taught for six years. And that's for us the the entire duration of the high school. So my first generation is graduating now. And I might transition to a slightly different role in the school system where instead of I will still teach one class next year for sure. But then my other hours in the school rather than teaching again. 12 year olds, as I've been doing this year, will probably be spent on helping other schools in our school districts also adopt our way of teaching, which I do think is less fun. I'd rather teach again, another batch of 12 year olds this year, but I do see the value in helping others and scaling this system because we see it work so well. And kids are benefiting so at least for the coming year after the summer. I will work a little bit more at the school district level rather than at the school level. But I do see that for myself as like something to kickstart other schools. I definitely want to like keep teaching and teach more rather than less. And then working on heavy Yeah, you know, I sort of have to now right we have customers well, it's free products, but still. So I would say whether I like it or not. We have schools we have three year returning schools now. So for the third school year in a row, the same teacher comes back and creates three new classes and teachers again, people are starting to depend on handy being there and sort of magically From their perspective, get better every season. They send me emails, ah, so many things have changed. And it's so nice. But also, here are some other things you would really like. So sort of software can have two states, I guess either no one uses it, and then you're sad, or many people use it. And then you're also sad.
Tim Bourguignon 45:22
But in a good way,
Felienne Hermans 45:23
go away. No, I mean, I love it. I love getting emails from literally all around the world like South Africa, Latin America, Pakistan, Afghanistan, people emailing me saying, we are using your software and it works at nearly fantastic. But also, yeah, I don't think it's really a choice, whether I want to work on it, it's just the thing that exists. And it needs still a lot of effort, there are so many ways in which it could still be made better that I know I have the skills for and I really want to work on that at least for a few more years, I will, I will put my energy there because it has so much value.
Tim Bourguignon 46:00
It doesn't need, it doesn't need to, to to end the conversation, I like to put a twist on it. So you're also a professor in a university. Imagine you have a 25 years old, PhD graduate student coming to you. And like, like you say, the beginning saying, hey, the trajectory I was on is just finishing now. And I have no idea what to do next. What would be your advice at that,
Felienne Hermans 46:29
I would advise trying to find a combination of interest and skill. So you want to solve a problem that you care about. But you also want to solve something that you can solve, like, I also really care about climate change. But I don't have the professional skills to do much there. So now I can protest, I do protest, I can not fly and not eat meat and not I not own a car. Those are things I can do. But that's not my career, because I don't have the skills in my career. So you want to find a sport, have a problem that you care about, where you have also gained skills that you can contribute meaningfully. And also, in a way that is sustainable for you as a person, I read this great story from a bear to Barry's a Dutch like it activist. He was also in this what do I do with my life phase. And he started to do Python training at universities so that not non programmers, like biologists would get better at doing data analysis. And he was seeing that he could do it. He had the skills, he was solving a problem that he thought was valuable. But then still, after years like I don't like this, because it's only sending emails and planning and booking t right. So you have to have three things, you have to have a problem that you care about that's meaningful, you have to have the right skills, and you have to be able to do something, or at least start where you will think you can do something for a longer period of time. Like I do complain about having to close pull requests every week. I know I'm complaining about that. But it is also sustainable bass, especially now this year, it's sort of getting a little bit more quiet. So I see myself doing this for a few more years. And I think those three things are definitely what I would advise to a person. What do you care about? What can you do about it? And can you do this in a way where it will burn you out or frustrate you because then it doesn't make sense either to do it
Tim Bourguignon 48:25
makes a lot of sense. Thank you. Where would be the best place to continue this discussion with you.
Felienne Hermans 48:33
So you can go to heady.org or you can try it for free. We're also on GitHub. This is linked on the website. Maybe even the better place to go to would be headed org slash join, where we also have a link to the discord if you want to check it. We also have a link to adding translations. If you're one of your languages that you speak is not yet in our sets, you can help us translate as well. So how to slash join is a way that you can continue the conversation about Headey. I have a website. It's fully noodles calm. I am on Twitter, but I try to not be on Twitter where I can help myself or my ads on Twitter. It's just as failing. So that's easy, but I might not be there forever.
Tim Bourguignon 49:15
Guilty as charged the bird a few weeks ago, so don't don't assume you will be. So anything else you want to plug in?
Felienne Hermans 49:27
No, no. How do you like the most important thing people should check out
Tim Bourguignon 49:31
and I'll add all this in the show notes would just scroll down and click you'll have all the links there for you. Thank you so much. It's been a fantastic ride. Thanks for having me. And this has been another episode of Devil's journey. It was each other next week. Bye. Thanks a lot for tuning in. I hope you have enjoyed this week's episode. If you liked the show, please share rate and review. It helps more listeners discover stories You can find the links to all the platforms to show appears on on our website, Dev journey dot info slash subscribe. Creating the show every week takes a lot of time, energy, and of course money. Will you please help me continue bringing out those inspiring stories every week by pledging a small monthly donation, you'll find our patreon link at Dev journey dot info slash donate. And finally, don't hesitate to reach out and tell me how this week story is shaping your future. You can find me on Twitter at @timothep ti m o t h e p porker email info pet dev journey dot info