Revolutionizing Coding Education With Dr. Felienne Hermans, Founder of Hedy

## Metadata
- Author: [[The State of Developer Education]]
- Full Title: Revolutionizing Coding Education With Dr. Felienne Hermans, Founder of Hedy
- Category: #podcasts
- URL: https://share.snipd.com/episode/e29f1851-3c06-4137-9541-83120f89c977
## Document Notes
## Highlights
- **Early Coding Spark**
- Felienne Hermans began coding by copying basic programs from a book as a child without understanding the code.
- She developed a lifelong love of programming from realizing she could make the computer do anything she wanted.
Transcript:
Speaker 2
How you initially sparked that interest in coding.
Speaker 1
So when I was really small and we're talking about maybe six, seven, my parents bought a computer. My dad at a home office, he was like, working from home, waiting for it was cool. And someone, we don't remember who convinced him that he needed a computer. Like, oh, it's modern, you have to have a computer. But then he didn't really do something with it. He did accounting for other companies, but he never really used the computer. He just made letters like with a typewriter or something. But I really liked to play on the computer. And initially I didn't really know what to do. I would also type a letter from the computer and print it out with a printer. But then after a while, of course, you want to do a game, but there was no internet, so you could have download a game. And so now I got my hands on a book that was basic computer games for kids. And then this would just print it out, basically, things. You would just copy them into the computer. I didn't know what it said. It was all in English, which is not my first language. I had no clue when I was 10. I had just copying basic codes into the computer. But of course, after a while, you sort of figure out if I do this, if I press here, then this happens. And then I was like, oh, wow. I can make this magical machine do whatever I want. And my lifelong ([Time 0:01:03](https://share.snipd.com/snip/4e2e84cf-f96e-4bb6-9be9-99f5f88d2869))
- **Community Impact on Coding Passion**
- Negative cultural experiences in programming communities can cause talented individuals to fall out of love with coding.
- Inclusivity and positive environments matter greatly for lifelong engagement with programming.
Transcript:
Speaker 1
The time. But also I felt, I don't know, it's sort of limiting. Like a part of me isn't nurtured enough if that makes any sense. So then I think I sort of dropped out of law for a while, even though I kept doing it still. And then I think I had a second similar wave of that later on in life when I started my PhD. My PhD work was about helping people use spreadsheets, which I think is like the greatest programming tool ever, because it allows everyone, even people that would vitally disagree With you that they are programmers to do programming. So then I got really excited about working in that space. But many people that are doing programming in not spreadsheets, like I don't know, JavaScript or PHP or see whatever, they're like, eh, spreadsheet, it's not real programming. And then I think was me dropping out of programming for a different reason, where I was just fed up with the people. It's like, what do you mean, not programming? It has an if statement, it has a map. And why are you a gatekeeper? And I think that was the first time that I really realized how problematic our community was. I had never been, I think, really on the receiving ends of the problems. And then I was. And that also really made me fall out of love with programming for a while, where I was like, I don't care for this vibe anymore. I want to do something else with my ([Time 0:03:19](https://share.snipd.com/snip/df7ed434-703f-4cdf-a379-d36b4b307eb4))
- **Teaching Sparked New Research**
- Felienne noticed smart kids interested in computing were not learning effectively despite their enthusiasm.
- This observation sparked her curiosity to understand why and led to developing a new teaching approach.
Transcript:
Speaker 1
Cool. So at that point, as a researcher, I was still working on spreadsheets. And I was sort of supposed to do that. But I fell out in love as we discussed already a little bit. I didn't plan to do research in the school. I just planned to do teaching in the school because I was trying to escape research. But then after a while, I saw, huh, these kids aren't learning, right? These are smart 12-year-olds and they're voluntarily picking the computing track. But they're not learning. And I cannot blame them because they're excited. I see they're excited. They're smart. They can do other things that isn't programming. But I see them not learning anything. And then the first batch, maybe you're like, bankage, right? The first bankage is never a good one. I was like, I'll pay it out, maybe, maybe. But then after a while, you're like, it's not them. Something is up here. And then I got this ([Time 0:06:52](https://share.snipd.com/snip/cfb3aace-177a-44fd-8ed6-91453f45dcc9))
- **Need for Gradual Programming Language**
- Programming lacks a clear, gradual curriculum like mathematics, which creates learning difficulties.
- A programming language that introduces concepts gradually can better support learners' mental models.
Transcript:
Speaker 1
Going about, OK, how do people learn anything? And if you're in a computer science degree, specifically, I think, if you're in engineering school, I didn't have any courses about learning or cognition or I saw that they were struggling, But I didn't know why. And I wanted to learn more about learning. And this was this old feeling. From before I went to school, it's like, oh, I'm interested in so many things. So I started to really try to understand why aren't they learning? What is making them not learn? And true that, true looking specifically at other fields, how do kids learn math? Well, how do kids learn math? We don't give them a magical calculator that can do whatever and let them press buttons. And there's a lot of practice. And also there's a very clear curriculum or structure, like first you do counting, and then addition, and then subtraction, and then multiplication, and then division. That's a sensible line where reality, in a sense, changes a little bit. For example, if you first learn subtraction, then you have five cookies on the table, and there's three kids. And then you give three cookies to the three kids, and you have two cookies left. So five minus three is two. Okay, but now I have three cookies on the table, and I have five kids. I give everyone a cookie. How many cookies are there? Zero cookies. So the mental model initially is three minus five is zero. And then after a wire, we're like, hey, but you can also go below the cookie line, and then it's minus two cookies. And I thought, huh, interesting. Programing is not like that. Programming just gives you the magical butter machine, but it doesn't have this very clearly structured approach of first this, and then this, and then this. Of course, we don't teach everything at once in computer science, but it's not like you can turn off specific things. It's not like you can give them a wrong mental model because you always inherit the whole programming line. And then I thought, well, who sees this problem and also has a degree in software engineering? I can make a programming language that has a tiny mental model in which only a few things are possible. And then gradually we add concepts. We add syntax. And that's ultimately what became a programming language that is a gradual language in which you teach a subset of concepts and syntax, and then expand the subset of concepts and syntax Over ([Time 0:07:46](https://share.snipd.com/snip/6d2091b3-c4ce-4cbe-8d18-c8737cc40b39))
- **Early Hedy Prototypes Tested**
- Initial prototypes of Hedy were basic and buggy but still better than existing tools for teaching kids.
- Positive feedback from teachers and students fueled ongoing development despite technical limitations.
Transcript:
Speaker 2
That is so interesting. So when you first created this prototype, were you testing the initial versions of it in real time with your class? Yes. And so it was an iterative development process basically based on how students were interacting with it.
Speaker 1
Yes. So the first version that we launched had like no CSS. It was just HTML page with an editor. It didn't have syntax highlights. It didn't handle things. It just had three different levels. But I just wanted to test. Firstly, I wanted to test. Can I technically build this? Because if we dive into how programming languages work a little bit more, partial frameworks, which is things you use to make a programming language, they're made for one language. They're made for Python, Java. They're not really made for half a language or one 18th of a language. So my question was really like, if I do this with a partial framework, how much solves do I have to put on top to get it to do this specific thing I want? Because this context of chopping up a lot of language in small pieces isn't what the technology was made for. So one question was just, can I build this? And then another question of course was, does it work for any definition of work? Because of course, there are other tools that are also not so frustrating for kids. And these are visual languages like scratch. I'm sure your audience is quite familiar with that. But then the problem that I found with 12, 13 year olds is that they start to find scratch a little bit to childish. Scratch is for the elementary school kids. It's for the younger brother or sister. Scratch is not for them. They want to do the grown up stuff. They want to do the Python, the JavaScript. They want to do the stuff that will make them money in some cases. They don't want to have a toy. So a question also in building it is, if I make, was this in essence, baby Python, right? Because Hattie leads up to Python. If I make this, will the kids see it as authentic? Will they see it as a scratch because it's easier? Or will they see it as a Python because it's letters? That wasn't clear to me. And that isn't the thing that you can really try without building it and having kids engage with it. And of course, also my question was, is it easier? Like, do they struggle less? And, well, it turns out that once we started trying it, it will just me but also other teachers in the same school where I was teaching, even though, and agely, it was so buggy, right? It didn't work. It didn't work at all. But teachers started to say, this is so much better than we used to have, even though ([Time 0:10:30](https://share.snipd.com/snip/552cbe15-3a05-480d-b9a7-6af293f9c89a))
- **Reducing Cognitive Load in Syntax**
- Simplifying syntax by removing unnecessary brackets and quotes reduces cognitive load for beginners.
- Introducing complexity gradually helps learners focus on concepts rather than syntax frustrations.
Transcript:
Speaker 2
Print is print, you know, great. Awesome. Obviously, there's some others that are probably wrapped in doing more complex stuff in the background. And so from someone who's learning to code, a lot of people might argue that if you're abstracting it away too much, they won't understand the fundamentals. And so how do you sort of like, find that correct balance of what you want to provide as a more complex, perhaps magical functionality compared to the raw functionality that they'll Eventually touch on their own?
Speaker 1
Yes, those were like three questions in one, I think. So one question was like, how does it work? Right? What does it do? So maybe let's do that first before we reflect on how do you make decisions about what it does where?
Speaker 2
Absolutely.
Speaker 1
Just to give you level one, if you haven't seen it in Python, if you want to just text on the screen, you have to do prints and then brackets and then single quotes on both sides and all double Quotes on the one side. In Hadi, you do not have to do brackets because why do you need brackets only if you have multiple arguments and close in a bracket? Why don't you bracket? But even why do you need quotes? You could just do prints, hello, this works. In Hadi, this works because the quotes aren't necessary immediately. If you just want to print some stuff, then it's not necessary to do quotes. And now you can think, well, okay, it's not necessary, but it's not harmful. And this is where all the things I learned about cognition sort of matters. If you have to do a lot of things, you might not know as a beginner what is the important stuff and what is the stuff you might abstract away from? We can think, okay, print is important. It's important that you spell it correctly. And the quotes are in a sense not really important. Right? What matters is just putting text on the screen. But some kids I saw in class got so distracted by the quotes, by the brackets, by all the stuff that's there that they couldn't even remember what they were doing or what the code was or Why they were doing it. It was in technical terms causing so much cognitive loads. Their brains had to work so hard that they just couldn't remember anything. And if you talk, for example, which we do in level two about variables, and you want to do something really simple, like ask what is your name and then the thing says hello, name. That's maybe interesting for kids to build. And finally you have to do make variable explicitly name equals sign input, which is hard because it's input and not input, which in my native language, there's no difference between Those two sounds. It's very hard. Kids will say inputs all the time. And you have to do brackets and quotes. And then you have to remember the variable name. Brackets quotes hello quote, the variable name, bracket. I wanted to talk about what it means that a variable is a thing that stores a value in the computer, but the kid was just like, ah, syntax error brackets, quote, quote. So that's the complexity that Haiti takes away so that helps you focus on the concept. And then of course, after a while in level four, we say, hey, but when you do need quotation marks, sometimes, because otherwise, if you make a variable that's called name and you want To use the value name, now everything's very confusing. But we do it slowly. We really ramp up the complexity. Again, I really love this comparison with mathematics. We lie quote unquote to kids in mathematics all the time. Oh, you can't go below zero, but you can. Oh, you can. We're dividing like a pizza, right? Two thirds of a pizza, because if you divide, you get two slash three. Oh, we lied exactly zero comma six, six, six, six, six, six, six, right? Oh, we lied. Oh, you cannot divide and you cannot take the root of a negative number. Oh, but you can. So we're lying all the time. And kids don't love these changes. Of course, this is hard, but this is how we teach a lot. You make a small context in which stuff is really understandable. And then we change something. Then we change ([Time 0:13:30](https://share.snipd.com/snip/aa864602-8915-419f-82a9-867e9f3d1b5b))
- **Importance of Multilingual Coding**
- Multilingual programming capability became essential after realizing learners want code in their native language.
- Supporting 47 languages makes programming more inclusive and culturally relevant worldwide.
Transcript:
Speaker 2
That you were approaching it in an incorrect way. Yeah.
Speaker 1
So one of the biggest things that had his now known for, that it wasn't in the beginning, is that it's a milsy lingual programming language as well. So you can program in Dutch, French, Spanish, Japanese. We support 47 different languages, including non-Latin ones like Chinese or Japanese, but also right to left languages like Arabic or do Hebrew. That was not in there in the beginning. So the UI was always Dutch because I was teaching in the Netherlands in Dutch, but the programming keywords in the beginning were in English because basically, I didn't even think of, I can say, well, I thought it was easy enough. That's not even true. I didn't even consider not doing it. And then I did this small but formal user study where I asked 12 year olds, I built this thing. What do we do to make it better? And the kids were like, why cannot we put the code there in Dutch? Because they say the whole interface is Dutch and the error messages were always localized. There was some localization error messages weren't Dutch. The exercises weren't Dutch, but the code itself was not in Dutch. I was like, but why though, you know, Dutch teenagers, you can do English very well and print a print in my language. Basically the same thing, echoes echo. How hard is it? And the kids were like, why not? You built this. Why do you build it in English? It's for us. Why is it not Dutch? This is a great point to children. So then we built this multilingual keywords and initially I was still, I was only building it because I just wanted to prove them that I could do it. I didn't really, really believe it would add some. But then when we had Dutch, then we got German and French, which are less like English than Dutch. And then we got Hindi in North Latin. Many things crashed because we were not prepared for that. And not just us, but also the whole technology stack is a very, very ill prepared for a non-esky characters. But then I was looking at Hindi. I was like, yeah, I see how if your language is Hindi and you're explaining what print is, you're like, print with a P and the kids are like, what is a P, right? Where's a P on my keyboard? And how is a P different from a B and a D? And then he knew of course is used in India. Many people are multilingual, but then there are other communities, even in France, in EU, right? Where it's really, really hard to just get the right spelling of words that aren't in your language. So the further we got away from English and Dutch, the more I was like, I was an idiot here. How did I ever think this would not matter? And then that I've been very open about that from the start. It was never one of our design goals. I didn't think of it. The people we have to think for that is the 12 roles in my class. And this is why we're now going global and why we're being used everywhere. Like in media, Puerto Rico, there's so many places where Haiti is really gaining more and more market share, so to say, I mean, it's a free product. But you know what I mean? ([Time 0:33:07](https://share.snipd.com/snip/085d182d-9132-4445-bca2-f37b1d4d74f9))
- **Culture and Ergonomics in Coding**
- Programming in one's native language reinforces cultural identity and inclusion in technology.
- Keyboard switching and language ergonomics impact coding usability and learner frustration.
Transcript:
Speaker 1
So it's not just about it being easier. So the most that experience that changed my life was when I was in Botswana in South Africa a few months ago where everyone's bilingual because, you know, the Brits used to be there. But the teacher said we are more excited about programming Hadi in Southswana than the kids because our children have learned that English is the language of technology. So they believe that to be in technology is to be in English. Their language isn't ever there. This is a language with 6 million speakers. So there's just not so many software that works. So they're like, if we use Hadi in Southswana, it's not for easy to use. It gives them care. They might prefer English. But what this allows us to do is to show that our culture is also the culture of technology, that our language is also there on the internet. And that I think has been increasingly what drives also people to Hadi, like Bratorego, for example, which is also bilingual, of course, with English and Spanish, but people want to Do Spanish because they want to do what they feel in their heart also in the computer. They do not want to somehow be forced to use a certain language in a certain context. And then again, I was like, me, that I'm not a native speaker, you can clearly hear that, but me being comfortable enough with English and also having no negative connotation with English Because they never really ruled my country. I don't care for those reasons about not doing English, about whatever is a language of technology and wherever my culture, my culture is English American. Anyway, that's the dominant cultural framework here with movies and TV, and music. I was like, wow, another thing I never thought about, why this matters. And another reason, maybe one more is also ergonomics. There's another thing I didn't think about. But if you type Arabic, for example, if you have an Arabic keyboard, you can only have one keyboard software, either you type a P or you type a V or something in a Arabic, that is the first Sound of print in Haiti. You cannot have them both. So if you want to type in Arabic string, which makes a lot of sense, if you're printing something, you have to do English keyboards, prints, Arabic keyboards, your string, next line, English keywords, print, go back to Arabic, your string. Every line you have to switch between these keyboards, either clicking or switching with a key on your keyboards. That is so annoying. That's like two extra pre-processed per line. And of course, kids, specifically learners, they're going to mess this up. But if ([Time 0:38:01](https://share.snipd.com/snip/b17512d0-f76d-451f-beb0-75e8230f61bc))
- **Be Patient with Learners**
- Be patient with learners and understand that programming takes practice like any skill.
- Avoid dismissing beginners; everyone can learn coding with time and effort.
Transcript:
Speaker 2
Are out there teaching developers, teaching the next generation?
Speaker 1
Yeah, as well. Try heading. It's free and open source. So I'd be grateful if you try it out. If you're considering teaching somewhere. And the other thing, maybe that's very related to our philosophy is learning is hard. And the minute you know something, you forget how hard it is. So if you see a beginner in whatever system or language, trip on small stuff, like a bracket or quotes, this takes time. Keep always in mind this comparison with mathematics. If you have a seven year old and they're learning addition, how often do they practice addition hundreds of worksheets, right? Practice, practice, practice. So how can we expect that if we explain ones that print, need brackets, that they will remember it and that this will not take forever to get in their long term memory. This just explain once and then try it out. I don't know how we got in the situation where we think that is a way to learn syntax or programming. You have to think of those worksheets for addition and then subtraction and a multiplication. That is how you teach stuff and we need to get more of that into programming because otherwise we will not get the diversity that we want for the reasons we already talked about. So learning is hard and be patient and do not think, oh, this kid or adult is just not made for programming. We don't say that about math. Do we ever say, oh, this seven year old is just not made for addition? No, just keep going because everyone needs to know this and everyone can know it. So ([Time 0:43:13](https://share.snipd.com/snip/fb5388c1-4ede-4ca3-bd58-5371953c1ebf))