
Can you imagine risking your career to making coding easier to learn? Meet Felienne Hermans, a professor who did just that by stepping beyond academia to redefine coding education. Disillusioned by her research’s limited impact, Felienne discovered...
Loading summary
Adam Gordon Bell
Welcome to Co Recursive. Each episode is the story of a piece of software being built. Today we have the story of a burnt out academic who, in trying to find some renewal of her passion, starts teaching underprivileged 12 year olds how to program.
Felina Hermans
I remember so vividly one of the first parent teacher conferences. It was one of the kids in the in the classroom doing very, very well in computer science. So the dad comes to me and he says, why should my boy pick computer science? And the kid is right there. So I said, well, if he picks computer science, maybe he can work at Google or Facebook or Amazon. And the guy looks me in the eye and says, with his child next to him, I don't think my boy will ever work at Google. Ma'am. I think, why are you robbing your child of this ambition? My husband works for Amazon. He used to work for Google. So I know that this is possible for your kid. I might have said, well, if your boy picks computer science, wings will grow from his back, right? And he can fly to the sun. And this is also a racial thing because I'm white. So this normal white dad was also like, this white lady doesn't understand who we are. Right. I don't also think he was necessarily thinking those things, but I think there was just such a big difference in my life experience and his that he thought I was lying to his kid. I was giving him a fantasy life that has no basis in reality. It was life changing in that moment, really.
Adam Gordon Bell
That is Felina Hermans, a professor of computer science who also teaches high school one day a week. Felina's story is wild, right? She faced challenges in academia. They led her to teaching 12 year olds, and then she risked her career on this kind of crazy side project that we're going to be unpacking. That led to her rethinking computer programming and sparked controversy everywhere she went. It's a lot to cover, but I think it will change how you think about programming languages and also about learning, two areas she's very focused on. But even more than that, Felina's story about her career kind of tells us how to navigate our own careers. How when none of the options seem right, maybe you can just create your own path. It might be some of the best career advice I've ever heard, and I don't want to oversell it, but yeah, this is an engaging story that might change your views on programming. And it all starts when Felina completed her PhD.
Felina Hermans
So doing a PhD and being a, let's say adult Academic is not really the same thing. And I really had a lot of fun doing my PhD. So I called. This was really fun. So I would just do more of this thing that is fun. So the. For a few years, I was really, really trying to be a professional academic. It sort of inked you up. You have to play by the rules of the system. And I'm not really great at playing by the rules of the system. And then without me really having the word right. It wasn't that one day I thought, I cannot do this job. It's just more and more every day. It feels like you're moving through mud or sludge and everything goes slow and you have no energy. But it's definitely not from the one day to the other that you think, I hate this life. It just goes slowly and you really want to be an academic. But then at one point I somewhat realized, I don't think I can do this anymore.
Adam Gordon Bell
Part of the problem was that Felina didn't feel that the work she did mattered.
Felina Hermans
If you do academic research, then you download a dataset, you do analysis, you write a paper where you say, well, this is our hypothesis, this is the data, and then you publish the paper. You have to wait for months, sometimes full year to get this, okay, from three other random academics, and then the paper is published. How has the world changed? Hundreds, thousands, hundreds of thousand papers appear maybe every year. What am I doing? Is this really where I can add the most value? And I didn't have words for those feelings, but I definitely had the associated feelings, like, I cannot bring myself to do this every day because no one is consuming my knowledge, no one is on the other side.
Adam Gordon Bell
All this, I should mention, took place in the Netherlands. Felina was teaching at Delft University of Technology and she lived near Rotterdam. And the important part, just 5 minute bike ride from her apartment, was a high school where they needed to start teaching programming to their students.
Felina Hermans
And they came to me and they said, well, we know for someone, do you have like a student to do some teaching for our kids? And then I remember myself saying, well, what about if I do this? And I now if I look back at it, I sort of, I'm. I'm hovering in the ceiling, right? Looking at this scene, just without any plan. I didn't think, does this fit my schedule? I didn't think, what will my department head think if I do this? I just had this urge, I thought, I want to do this thing. This sounds like a thing I want to do. And I hadn't had A feeling that there was something I wanted to do for a really long time. So just then, but then can I teach your class? And they said, yeah, sure, well, if you want to do it, by all means. And that's how I got into high school.
Adam Gordon Bell
Teaching this high school was in a very urban area, but not in a.
Felina Hermans
In a rich part of city center. Not like Manhattan or something, but inner city as in a lot of high rises. The area where my school stands is one of the poorest zip codes of the Netherlands. The kids that we have in the school are very often kids from minority families from Rotterdam is a big port harbor city. So parents that are have often unskilled jobs. So that is a bit the context of this school, which is also why I was excited to teach there.
Adam Gordon Bell
Teaching at this diverse school in a brand new class. Felina had the autonomy to design the syllabus and she initially thought she could just rely on her university curriculum.
Felina Hermans
Because in university there's not an assumption that kids already or students already know programming. So we would just do more or less the same as we do in university. What is a variable? What is a for loop? What is a condition? But then for the 12 year olds.
Adam Gordon Bell
Oh yeah, the 12 year olds. Here in Canada I started high school at 14, I think, but in the Netherlands you start at 12. And Felina is essentially teaching seventh graders and her plan is to use a university level Python curriculum to guide them.
Felina Hermans
Yes, hello 12 year olds. I have, I don't remember the exact number, but let's say I have 120 PowerPoint slides, like I will explain you many things. So then after five slides, like I don't think I will reach the end of the 120 PowerPoint.
Adam Gordon Bell
12 year olds don't just sit quietly when they're confused, they will tell you.
Felina Hermans
So I don't know what you're saying, but it's also, why are we learning this? Right? So, because another difference between an 18 year old in a computer science major in a university is they already know they want to learn programming. So maybe they're confused, but at least there's some level of buying. Whereas a 12 year old you really have to lure them in saying, well, this looks very confusing, I see that this Python doesn't make any sense, but stick with me and then in three lessons we can make this. So I definitely realized that younger kids, but probably also university students do need a little bit of you explain something and then they do something and you explain a bit more and they do a bit more and so definitely my teaching style. Also the teaching I was doing at the university change because the difference I think between an 18 year old and a 12 year old is an 18 year old that's confused will think it's about then they don't understand anything. They go to their dorm and they cry and maybe they're like, I don't understand anything. But a 12 year old that's confused will tell you that they're confused. They'll say, I don't understand anything, anything you said. Like, okay, but can you, like, is there one thing that you remember? No, not if it made sense to me at all. Right. It's hurtful, but it is also very useful because then it requires you to think again. Okay, but then how do I explain it in a different way? So it's definitely a stone that you can sharpen the act of teaching on if kids give you feedback.
Adam Gordon Bell
And remember, this is not Felina's real job. Right. Her real job is at the university and it's more than a full time job itself. Teaching this class might have been manageable if it involved, you know, just guiding kids through this existing curriculum. But that's seeming like that's not going to be the case.
Felina Hermans
So definitely I thought, oh my God, this is so much harder than I thought it was going to be. But it was more like, I want to understand why. Because these were all properly functioning 12 year olds, right? They could read, they could do math, they were doing well in German, French, history. So their brains were okay. Right. But then they were all struggling, almost all of them were struggling with programming. So I couldn't kid myself into thinking, well, they're just lazy, they're just not very bright. Obviously this is my ban.
Adam Gordon Bell
This whole thing made Felina curious. She'd been programming since she'd been even younger than these kids, so she knew it was possible. And in her career working at university, she of course taught many people how to program. So she had the teaching chops. She knew it was possible, but yet she couldn't get anywhere.
Felina Hermans
So then I got into this phase in my career where for a few years I didn't really do my actual job of still being an academic. Started to read a lot about how people learn anything. And that in itself was so interesting because I went to a computer science program, better master and PhD and then all these professors are saying, in computer science, I think specifically, well, we only teach you one programming language, but later in your career you will learn many other programming languages. So you have to teach yourself more programming. Yes, Great. This is great advice, but no one ever teaches you how to learn anything. And there's so much science to learning. I thought it's so frustrating and sad that no one either in computer science like academia or in professional programming. Why don't people know about learning? Why isn't there like one course about learning in any computer science curriculum or any curriculum that would be useful at this time?
Adam Gordon Bell
By the way, Felina did not have tenure. Tenured staff at a university, like they have a lot of latitude in how they do their job. But she wasn't there yet. And also her PhD work had been on programming language, refactoring. That was her area. Her area was not education adjacent. Basically, her career is not really in a safe spot. There's a strict criteria for advancing to the next stage. And what she's doing is stopping that type of work and diving into teacher education. Right? Making the challenge of teaching these kids her new focus. And she keeps up this different direction for a couple of years. The pinnacle of this is her book the Programmer's Brain, published by Manning, a fantastic book. But yeah, not really part of the scope of her job. But from all this research, she does start to see a path through to teaching these students.
Felina Hermans
So I think the biggest thing that I learned, which is also in the book, is that what you already know shapes what you can learn. So if you don't know anything, you also cannot learn anything. And I think the best way to explain that to people that, for example, speak English but not Dutch, my language, is if I would say something to you in Dutch. You cannot even remember what I'm saying.
Adam Gordon Bell
I don't know.
Felina Hermans
I'm sitting on a chair and I'm knitting. This is very easy for you to understand. You can immediately process it, you can repeat it, you can immediately ask questions. Also, oh, Felina, what are you knitting? What kind of chair? So you can take this information integrated into what you're thinking and run with the information. But then if you don't know Dutch or if you don't know what a chair is or what knitting means, you cannot even explain why is it confusing? Why don't you understand Dutch? Right? I understand Dutch. Everyone I know does. Why are you confused by what I was saying? I think that is really the most important thing I learned. If you have very few elements in your long term memory to connect information to, then it will just go down. And I can speak Dutch to you for a few weeks every day. Still you don't remember anything. You haven't learned grammar or vocabulary Nothing. And this is how so much of programming education, and I think the reason that it hasn't entirely spectacularly failed is because so many kids traditionally in computer science programs were me. They were already programming for maybe a decade when they were 18 year olds. So then your level can be really high. You can explain many things because maybe they don't know programming really well, but at least they already have some content. I knew what a compiler was, I knew some of the keywords and so did most of my friends. But then if your population is changing and if more and more people are coming in with lower understanding of programming, then you start to see issues because then they have less prior knowledge to connect things to.
Adam Gordon Bell
It rings true to me. It's. I feel like, yeah, I went into computer science and I did know how to program and it went fine. And there's lots of people who it didn't go fine. But if you think about it, like, yeah, if you took a French class and some of the kids already knew French and they seem to be really good at it, like, maybe the teacher just didn't know how to teach French. Like, yes, yes.
Felina Hermans
And I think this is also traditionally be sort of defense from professors in computer science. They're like, well, some of them do understand it, so I must not be terrible. And you know, they already understood it. This is what I also learned in my first two generations of the high schoolers. Yeah, there were some kids that were liking it and learning, but they also already knew programming and also they liked programming already. So it didn't make them more enthusiastic. Some of them maybe I made less enthusiastic. And they didn't get someone from 0 to this is okay, I got people from, I like this until oh, I really like this.
Adam Gordon Bell
So the only way forward, right, is to find all the things that the students don't know and work backwards finding ways to attach that knowledge that things they already know. It can be a long journey, right? Take the hello World program, for example, the traditional first step into programming.
Felina Hermans
You have to learn that there is something that is the source code, that is print, hello World, and that that produces output. That's the thing you have to learn. You have to learn where do I type the code, where do I click to get that?
Adam Gordon Bell
Many of these things to learn aren't really about programming itself. They're just like base things, right? Where is the file, how do I edit it? What even is a file, let alone like, what is print? And why do I need brackets and why do I need quotes? And what does this syntax Error mean.
Felina Hermans
Whereas if we teach other things, if we teach math or if we teach language, then kids write on a piece of paper and they make one spelling mistake. We don't immediately say jintang's ar. Right? Just, you know, we correct it as a teacher. So despiteing this inhumane machine is just not a great way of teaching. It is very, very, very hard to get everything right. And if you get something wrong, you get an error message, you read letters so that you get really stressed. And these are conditions that are really bad for learning. So I thought, I know how to make a programming language. I could make a programming language that doesn't teach everything at the same time. Why do we need brackets and quotes? If you just want to do print, hello world. The syntax might as well just be print. Hello world. Why are there quotes there? Why do you need parentheses if you just have one argument? So I thought, I will just make a small prototype in which we have a few steps. So first you have print without anything. Then we add quotation marks, and then we add parentheses, and then we can do this also for other quotes. If you want to do repetition, why should we do for I in range just to repeat three times, and then we add a little bit more and a little bit more. I thought, well, let's just make a tiny prototype with a few levels so they can see if for my next generation of students, this is easier and more engaging and something that they paint less.
Adam Gordon Bell
For me, I'm a little anxious about Felina's career progression here. So this is great news, right? She ventured out far, but she's returned to her specialty programming languages. However, the programming language she's considering, it has some unusual features.
Felina Hermans
So I had this idea. I was reading a book about linguistics, and somewhere in this book it said that if you're a speaker of language, then you're also a creator. Because I can make up words and no one can stop me from making words. And if you understand what the words mean, congratulations. Now you have a word, right? Something like if you make a mistake, and then in American English you can say, my bad. That's actually something that someone made up quite recently. There was this. I don't remember his name, but there was like a basketball player that once said that in a games. Oh, my bad. And now this is a concept, but that didn't used to be a concept maybe 30 years ago or something like this. So. And I have a screenshot in my research diary of that. And then I write next to it something like, I want programming to Be like that. Why do I have to program in the way that the compiler tells me? Why am I not allowed free form? Why does it have to be exactly this mold that's so limiting for expressive power?
Adam Gordon Bell
In Felina's vision, writing ambiguous code is acceptable because instead of triggering a compiler error, you just run it.
Felina Hermans
Then the system says, hey, user, I could interpret this in two ways. You want this way or that way, or do you want to decide later? So I was coining this idea to my husband, who's also a programmer. I'm like, well, you know, maybe programming languages could be that way. It's like this hypothetical thinking example. And immediately he goes like, no. But then everything would break, then no one can work anymore. Calm down, right? This is just an experiment. And it's so interesting to see, like, what thought experiments do we allow? Right.
Adam Gordon Bell
As a programmer, I get this, like, being ambiguous when you're writing code just feels wrong. And that's odd considering how many strange programming languages are out there. But yeah. Meanwhile, she's not really doing the traditional research that's expected of her as part of her job.
Felina Hermans
And then the confusing thing, I think for everyone was that I was still somewhat successful, that my research also went towards computer science education. So I started to write papers about how kids learned programming because that's what I was doing and that's what I was interested in. But I was working in an engineering school, something like MIT in the Netherlands, and doing research around learning for then felt not really out in scope there. Felt like, this is not what we do at an engineering school. You have to do engineering stuff, which is not interviewing 12 year olds. So it was somewhat clear that it wasn't. I wasn't a great culture fit for the type of things I was interested in.
Adam Gordon Bell
I imagine Felina's department head just being confused by her. Right. Like, if. If you're great and passionate about this thing, that isn't really supposed to be your focus and then you're not doing the thing you're supposed to be doing. Like, it's a bit of an odd time for your boss.
Felina Hermans
So ultimately they did give me tenure, but it was very reluctantly. And they also made it somewhat clear that the rest of my career probably was not going to flourish if I would stay there.
Adam Gordon Bell
So you got tenure, but then you were also getting like a threat. Like, how did you process all this?
Felina Hermans
Yeah, so I think they didn't see it as a threat, but more as an advice. Right. It's like, it's like if you break up a Relationship, you say, well, I just think you'll be happier with someone else. It was more like this, like, we don't think this is the best place for you, right? A few days after that, I get a phone call from someone from another university 20 minutes away saying, well, we have a vacancy. Would you consider applying for this vacancy? Then can I get a promotion? Because then I would like to be a social professor because I'm already assistant professor with tenure. I don't tell him that they are not so excited anymore, they're out and maybe you can offer me a promotion and would that be on the table? He said, maybe this is on the table. Gonna have a chat. So I got a job offer there.
Adam Gordon Bell
So Felina has this new job partially because of this education research that was caused by her, you know, struggles to teach 12 year olds. And this is around the end of 2019, so. So Covid's coming, but of course she doesn't know that. She just knows. She can't stop thinking about this idea she has about a soft programming language.
Felina Hermans
And. And then the Christmas break of 2019-20, that winter, in a few weeks, I think I will just make a small prot. Just like three steps with syntax, just very simple so that I can try it with my next generation of students and just see what happened. So it was. The research question was firstly, can I build it right? Do parser frameworks allow me? Because they're also in this way of thinking of this very strict way, can I make something softer and can I make one language with different levels, where first you don't need quotes and then you do, and you don't need brackets, but then you do need brackets. The final step is a functioning subset of Python. So it's really like trainer wheels on a bike that you have an adult bike, you want to have that bike, you see where you're going. But it's too hard now. So we put the training wheels on the bike so you can practice and then after a while we take the training wheels away and now it's the same bike. It's still very cool, but without training wheels.
Adam Gordon Bell
The real bike part is important because this whole thing has to pass the sniff test from a 12 year old. They have to think that they're learning something important. Felina had taught kids a visual language, scratch before, but then a 12 year.
Felina Hermans
Old will say, that's a toy language, that's for elementary school kids. I want to do a textual language, but a Python is a bit too much. So the question was also, can I sell this to kids as a real language.
Adam Gordon Bell
So Felina spends her Christmas break working away on this language and she's getting caught up in this excitement that is the early days of a new project.
Felina Hermans
And I really remember also then the January after that, I started to cancel a lot of appointments. I just said, I'm sorry, I know I made this appointment, but I'm just working on something that's very important.
Adam Gordon Bell
So she gets the first version of the language out. It's web based with lessons that you can click through and you know it's hosted on a Heroku URL and you get walked through this version of Python that has training wheels. And then the pandemic hits, everything stops.
Felina Hermans
But the nice thing is that many people want to do something at home with their kids. And the university I'm done at, which was Leiden University, they write this little press blog. Oh, are you stuck at home with your kids? One of our scientists made a nice programming language that is free that you can use. Many people start to use it and it's open Source, it's on GitHub, so people start contributing to the language. So I start iterating while it's the pandemic. And that was actually, well, it wasn't great, right? No one liked Covid, but for me it was perfect because I had ample time, not going to conferences, not doing anything, and feedback was streaming in even after, in the first year. So that's from beginning of 2020 to the end of 2020. Already a hundred thousand programs had been created by people using the system, which was just great for quick iteration because I could easily mine the data, say, oh, this is a very common error, so maybe this should be different. And that really kickstarted the project.
Adam Gordon Bell
So Felina poured herself into the project and it continued to spread. As the project grew, she struggled to keep up. At some point, the cost of hosting Hedy started to get out of control and her husband got involved.
Felina Hermans
Oh, I will do many optimizations to save us money. So I was like happy about that. But also then it even never stopped. One of one of my friends who's also a professor, was complaining, saying, well, if I come home, I want to do some research. But then my wife wants to chat with me and my children want to play with me. So annoying. I want to come home and I want to think of programming. Then I said, well, I leave you for you. Do you know how my love works? I do programming all day. I come home, I want to chill, I want to chat with my husband, I Watch a movie. You know what my husband says, Selena, welcome home. I have a great idea for Hattie. Let's do some programming. So he's also very excited about Hattie and he often has ideas. So at one point I said, no, I don't want to work on this in weekends, nor do I want you to work on my open source project in weekends. It's really weird if your husband sends you unsolicited pull requests. But at one point I said, I don't want you to work on Hetty so much because then I'm also working and I don't want to work on Hedy all the fucking time.
Adam Gordon Bell
So Hetty made it through the pandemic, and even after the pandemic, growth continued. But Hetty's true niche, the thing that I feel is most unique about it, it didn't appear until Felina decided to do a user study on the language.
Felina Hermans
This was that we were still doing it online. So the lessons were online. The kids would come into our online class and I wasn't teaching the class because it would be a bit weird if I would teach the class. So I had a colleague that taught the class and then we just had them fill out a questionnaire. Here are three questions. What do you like? What do you hate? And what do you think we should improve? Survey says, what do you want to improve? And the kids say, we want to program in Dutch. Welt, right? Dutch kids. Dutch people are supposed to be really good at English. And Dutch is like ikish. Print is print. And we have this echo command. Echo is echo. It's just ask is vra. So if the first three koans, two of them are really the same. But the kid said, we want to program in Dutch.
Adam Gordon Bell
Now, Hedi's website had always provided instructions in Dutch with error messages in both English and Dutch, we would say, prince, Halloween.
Felina Hermans
Hello, world. Only the keywords were in English. So from that perspective, it's like all of these things are Dutch. Only that small little words isn't in Dutch. Why? Because this is how I learned. It'd be really hard to make something non English. I didn't really think about it, but I thought, well, if this is what the 12 year olds tell me, I should listen to them, right? I cannot just say, well, I think I know better what you need than you. I'm doing this study because I want to really formally understand what they want. And also I was curious as a technical challenge, I was like, oh, let me see if I can do this. How hard is it to Build a non English programming language and then I build it. And as soon as we build it, then the project exploded even more. Because you understand this as a programmer, if you have two languages, you have n language, right? French was one of the first languages we had French, Spanish, German. And those languages are farther away from English than my language is Princess print in Dutch, but in Spanish is in Premier. In French it a fish, in German it's drucke. These words are very different. So the farther away we were getting from English, the more I thought this actually makes sense. And then people started to add non Latin languages like Hindi and Bengali were two of the first non Latin languages. And now we ran into many technical issues that we didn't have in the Dutch or French version because they have different character sets that we didn't properly support. So we had to do more programming and more and more and more languages were added to the point where one of my friends who is from Palestine originally says, well, what about Arabic? That sounds like a lot of work, man. But also it sounded like a cool technical challenge. So we also now support Arabic, which requires the CSS framework tailwind that we used didn't use to support right to left properly. They do it better now. But it didn't then the editor, the error message, the character set, all sorts of Arabic stuff that I didn't know anything about. But again it was showing me how different programming can be. What is programming and where can you. Where can you push?
Adam Gordon Bell
So the multi language support just kind of snowballed until Felina hit a problem she'd never even heard of before.
Felina Hermans
So we call our numbars, like my zero, which is a circle, call this the Arabic numerals. But see, Arabic uses different numerals. They have like a.for zero instead of something like a circle. A different neural system is something that we had to implement that I didn't know about. Quotation marks is another one, right? We have single or double quotes in English, but in French some people might know you have Guillemet, which is like smaller than bigger than that's used as quotes. Danish uses the same symbols, but the other way around. We support that. Chinese has quotes that look like squares. We support that. These are things I didn't think about. Arabic has a different comma, so our comma points towards the beginning of the sentence in an Arabic comma also does that. So it points the other way around. And so it points upwards instead of downwards. So they have a different comma, a question mark, an exclamation mark. So all of these things that I didn't know that I had to change. Also, we needed to add that to the grammar, which was more than I thought it would be. Right. I thought about flipping ui. I didn't think that the comma would be different. How did I know any of those things? I didn't know anything.
Adam Gordon Bell
Yeah, but like, what if I need to work on some software and it's written by Belgian people and I don't understand. You know Flemish?
Felina Hermans
Yes. And this is a great question, and I don't blame you for asking this question, but there's two answers to that question, or maybe even three answers. One answer is why do you need to know? Right. Can there be spaces? Like there's black people spaces and women's spaces. There can maybe be spaces where people express themselves in a way that other people don't understand. So maybe there can just be Flemish source code that's only for Flemish people. Another answer is this world already exists because many people, if they create software, they have to use strings in the language that they type. Like for example, the Dutch government has a tax system in Dutch because people consume it in Dutch. And we have very specific words like mortgage interest discount that you cannot easily translate. So the strings are in Dutch, the variable names are in Dutch, because why would you translate such a specific Dutch text word? The comments are in Dutch. So this whole code base in Dutch or Chinese or Hindi, these things already exist. Now it's just then the keywords that are forced in English. But there are already many repositories of programming that are non English.
Adam Gordon Bell
The third answer to multi language programming is a technical one translation.
Felina Hermans
We do this. You can make a program in Arabic and I can look at the program in Dutch, as long as it's like a working parsing program. Pretty. Printing a program into another language. I can parse in all languages. So even if you would want to look at it, you can look at a translated version where we translate all the keywords and we even have a little API to Google Translate where we translate the strings and we translate the variable names for you and we do it in a smart way so that the same variable has the same name everywhere.
Adam Gordon Bell
The curious thing to Felina is that the English speaking programmers always say the same thing.
Felina Hermans
What if someone speaks Arabic and then I speak Dutch? How does it work? But no one says I could solve this. Whereas there's so many other things. Again, like. Again like making a programming language only with white space, that people are like this sounds like a fun challenge. Why does everyone I haven't ever encountered only one person of English speaking background that has said, oh, that's interesting. Let me program that for you. Everyone's like, oh, no, this cannot be done. Hands in the air. I give up. Like, why? This is easy. This is just a parse tree. It's a trivial problem to solve.
Adam Gordon Bell
Yeah, it's funny. It's an interesting example, I guess, of like a privilege I have that I didn't realize. Right. I speak English. I always have.
Felina Hermans
Yes, yes. And this is also a privilege I didn't realize because I don't speak English, but I have a Latin Alphabet in my language. That is such a computer privilege. You don't know what a computer privilege this is. I know several people from Spanish and Portuguese speaking languages where they have a lot of accents on their letters, like a dash on an E or a dash on an I. People say, I just stopped writing my name the way it's in my passport. I just dropped this accent from my actual name to accommodate computers.
Adam Gordon Bell
My wife, her Last name is O'Dwyer. It's O apostrophe, D, W, Y, E, R. It breaks everything. We had an argument before because, I mean, in the minor sense, right? We go to a store and they're like, oh, do you have a rewards thing? Yeah, okay, look at my name. And she'd be like, oh, apostrophe, whatever. And she hits enter and then their computer crashes and they're, they're like, I don't know what to do. Right? And so I was telling her, just don't tell people the apostrophe. Just remove that.
Felina Hermans
But it's such a, it's such a dominant thing to do. Just change the identity of like your family given name to accommodate the machine or name like one thing that makes you you, that your parents wanted to give you this name with that accent on it, which is just a normal letter. Then the western English speaking computer world forces you to change your name to accommodate the machines. The fact that we cannot get computers to do this because we don't care, right?
Adam Gordon Bell
This issue of care, particularly this kind of implicit disregard for non English speakers that's embedded in programming languages. It led Felina to a different reason that localized programming was taking off.
Felina Hermans
We just did a nationwide study in Botswana in the south of Africa, where all senior high schools participated in an hour of code using Hedy. And then half of the schools programmed in English and half of the schools programmed in Setswana. And this is a bilingual country because the British used to be there a while ago. So this is not about making it easier, but that we look at the programs and then the kids that are in the Setswana group, they say, I didn't know programming could exist in my language. I thought English is the language of technology, so if I participate in technology, it has to be in English. It's just so cool to see that programming can be in my own language. And that has nothing to do with easier because we all know English. But just by making English the dominant language, we are also imprinting upon everyone. English is the language of technology and the only language. Whereas it's very valuable. Some people in Puerto Rico, for example, this is a part of the US and in an interesting way, legally everyone there speaks English, but they love heading and they love using heading in Spanish because they just don't really want to speak English.
Adam Gordon Bell
Turns out in many parts of the world, people speak English just fine, but yet it carries baggage of colonialism or war or culture they don't like or whatever, right? The French speaking people of Canada come to mind. But yeah, programming in your native language, it totally avoids that problem.
Felina Hermans
I can sit here forever and never will. I reach the conclusion that some people just don't feel happy using English. My country hasn't been in a war with the English for a very long time, so I don't have angry feelings for English other than angry feelings of annoying because it's such a hard language with all these weird letters that you pronounce in different ways. This is something you could only learn by engaging with people and by shutting the fuck up and listening to what other people say about using your tools. Like exactly like the 12 year olds.
Adam Gordon Bell
It's strange if you think about how things come full circle, right? Felina began as, you know, somebody working in the programming language space, then shifted to all this teaching stuff. And because these 12 year olds didn't know English well, often came from non Dutch speaking homes. That brought her back to her roots of programming languages. She found genuine, unique, solvable problems in her original field, right? Like this whole world of localization that nobody was even thinking about. So she's back in the programming language world right now, focused on making things easier for non English speakers. In theory, right? She could revisit the conferences and communities from her early career, presenting them with new intriguing challenges that they hadn't thought about. However, there's a problem.
Felina Hermans
The only place where you are allowed to make programming languages easier is in education. This is where you can do this and people will not get really angry. People maybe get excited even, oh, you make programming language easier. That's great for the kids, but professional programmers also hand error messages every day. But then you cannot make that easier. That's just not in the research scope because, well, they just have to deal with it, right? You cannot do that work in programming languages proper. Because we like programming languages to be hard, right? We like C, we like Haskell because it's hard. Something that's easy is not real programming, right? Real programming is hard.
Adam Gordon Bell
This is a problem, right? Felina, she has interesting things to say about localization and parsing. And then what do you do to convert one to the other? And maybe you just store the syntax tree. I don't know. Interesting stuff. But the PL people, they don't want to hear it. And if you talk to professional programmers, it's even worse.
Felina Hermans
This is still also a red line that people do not like to be crossed. People get angry with me or building a non Latin program language. They send me upset emails, they go out to my conference talks and they get angry because they say, for example, well, but now we have one big English speaking community and then if there's different programming languages in different natural languages, then the community will be split. This is worse. You're making programming worse. I have this one talk where I talk about localization of programming languages and I try to put Arabic numerals in the top 10. Most use programming languages, so just print 2 +5. But then instead of 2 I do Arabic 2 and instead of 5 I do Hamza, which is like it looks like a zero to us, but it's Arabic five. Just the characters, no keywords, nothing. Just numbers. None of the top 10 most used programming languages even parses 300 million people use Arabic numerals. I had never even heard of those things. I took like five compiler courses when I was an undergrad. No one ever told me about those Arabic numerals. No programming language support this. How can we talk about artificial general intelligence when all the top programming languages do not even support all neural systems on this planet?
Adam Gordon Bell
Meanwhile, right? At some point Covid ends and Felina herself gets to take this multi language version of her language with training wheels to the classroom and to see students use it and see the payoff.
Felina Hermans
Some of the kids in our school use sometimes Turkish or Arabic because that's their first language. And that sizzles are so cool because usually in Dutch school system they're not allowed to speak Arabic because it wouldn't be so nice if people can converse in a language that not everyone understands. I get that. But then now they can do it in their own language. And you see the same amazement as we get from other communities. They're like, man, does this work in Arabic? Like just the fact that we spend attention on that. I'm like, yes, and now I know a little bit of Arabic. So then they're immediately so impressed by these five words that I know because they're used from Dutch people, white Dutch people, that Arabic is a bit scary, right? Like, like other people don't feel comfortable with English. Some white Dutch people might not feel comfortable with Arabic because it's a foreign language that doesn't fit here. So they're not used to Dutch white people giving them permission to have that part of their identity in the classroom. Oh, I can do it in Arabic. Oh, I can do it in Turkish. It's just, it's just very, very cool and it's so rewarding.
Adam Gordon Bell
By this time, other teachers at the school were using Hedy as well. And one who was also a programmer.
Felina Hermans
Reached out when we were doing Python. And I have 30 kids, 3012 year olds, right? I cannot help them if they're in the computer because all of them have a syntax error. They're all like, teacher, teacher, teacher, I'm stuck. I then have to run around. It's like, oh, syntax error, unexpected EOF Even he's a professional programmer in addition to being a teacher. But it just takes you a minute or two to figure out what the mistake is. Because they do the stupidest thing, right? They put a quotation mark where semicolon goes or whatever is tiny, but it's not the same. So he says it always felt like a marathon, like running around all the time.
Adam Gordon Bell
And then once he switched to Hedy, the errors became full explanations and they were in Dutch.
Felina Hermans
Oh, print with a D is not a keyword. Did you mean print with a T? The kid still say I'm stuck because they don't read right? When the teacher goes over, they read the error message and they can say, maybe you should read the error message because I think it explains the problem. This takes 10 seconds and then they go to the next kid. So he says just the. It feels more manageable, it feels less like an energy drain to do programming courses because we put the kids now in a reasonable system where we can expect some independent work. Whereas if you put a 12 year old, especially a non English speaking 12 year old in Python, you cannot expect them to do independent work. They will need handholding all the time because the errors are syntax error, unexpected eof not even an Adult English speaker would even understand it's not even English. Right. So that I think was such a great feedback also in the terms of perspectives that really made me think kids are not my customers, teachers are my customers. And teachers are scared of programming. Exactly because of this. Because you have 30 kids and they think they don't know what to do, they will all need my attention, which is also true.
Adam Gordon Bell
This is one thing Flina has found over and over again. People teaching Python, which really, it's fairly low syntax, but they're just worn out trying to help a class full of kids overcome syntax errors.
Felina Hermans
I once got an email from a guy in Pakistan also saying that with Hedy. He said, I have levels of engagement that I have never seen before. And it's not even magic. I don't think we do something special to make kids excited. It's just we don't drive them away. That's the magic. We don't put hard syntax concepts and terrible error messages in their face and then they just don't draw bao. That's. That's the magic. We come back to something we said. I know an hour and a half ago where you said, is your goal to teach Python? Yes, it used to be the goal, but now some people consume all the levels of Hedi in, let's say Chinese. And then at the end we say, now you're good to go to Python. Right? Training wheels are off. Okay, but then I have to do it in English instead of Chinese. So last year I wrote this whole paper about here's 12 aspects of your programming language that you can localize and if you want to do it, this is how, but also culturally. I hope with all the work I'm doing, giving talks about this, that people like you maybe now warm up to the fact that, hey, maybe programming languages could be in non English. And that at one point language communities, either the people that are in there now are convinced by my arguments, or after a while the people that are in there now are sort of replaced by newer people that grow up with Heidi or Scratch, which is also a localized language, even though it's block based. And they're like, hey, like my 12 year old, like, hey, Python, why doesn't this work in Chinese? And that those two things then lead to a world in which this is more possible.
Adam Gordon Bell
I think with the number of students using Hedy and also just with the vast number of non English speakers out there, it's quite likely that someone is going to spearhead a multilingual programming future, maybe they'll they'll take Hedy and they'll start using it outside of its learning environment. They'll start using the language to build real things. And with Felina's story, you know, it began with burnout and her feeling like she wasn't making a difference with her research, but. But now she's making a huge difference.
Felina Hermans
Like, I still don't know if I want to stay in academia, which my grassroots find hilarious, because, oh, you're a full professor, so, you know, you sort of. You made it. Yes, but I think a lot of what I'm doing is not thanks to academia. It's just despite academia trying me from stopping the things I want. Right. I now maintain a ginormous open source project. We have, I don't know, a hundred pull requests a week. It's just very, very big. So many translators, so many teachers. Right. We run a. A help desk for teachers if they want to ask questions. None of that is traditionally rewarded because the thing that is rewarded is doing science, and doing science is writing paper. It's not like maintaining an open source project is the work of a professor.
Adam Gordon Bell
I mean, it feels like there's this idea that maybe you're not saying that there was something you expected research to be or something you expected your career to be. Like, I don't know. Impact, I guess is the word.
Felina Hermans
Impact. Definitely. That's definitely part of it. Like, some people just like research because I like the activity of doing research. Well, all power to them. This is great. But for me, researching something is because I want to change the world. I want to invent something that didn't exist before. I want to understand something I didn't understand before so I can help other people also understand it. I have written papers that no one ever cited, so maybe no one ever read the paper. Whereas we're teaching is indeed not just that kids are excited that you're there. It's also that I have kids come in very often they're girls. Very often they're kids from low socioeconomic backgrounds where they do not have a computer like I had when I was their age. And the first week they're like, why is computer science mandatory? How many weeks is this semester? How long? 14 weeks. Oh, this is long. Some of them are like that, right? This is just how they are. It never changes. Fine. But some of them then after a few weeks they're like, this isn't so bad. Which is a great compliment. And then a few weeks later there's like, okay, so teacher, do you think my grades are good? Enough to actually pick this topic next block? I think so. So do you have a few students where, if I wasn't there or if our program wasn't there, probably they would never see themselves as a computer science person? Girls, specifically minority girls, as I said, girls from computer. Computerless families. They don't see themselves as computer people. So if it's optional, they won't choose it. But if I make them look, then some of them are like, I like this. And then I know it's a tiny change. What that leads is a change that you can also observe with your own eye. Like, even if there's two or three of those kids, then this was, for me, a reason to get out of bed. And that's. That's definitely what I needed.
Adam Gordon Bell
So this being needed and having impact, Felina found it. And to her, the reason it all worked out is really clear.
Felina Hermans
As I said earlier, when people said, we need someone to teach this program in this school, I didn't think, which is not always good, that I do many things without thinking. It's not always great. But then this was just. I didn't think, do I have time? How will this work practically? What will I not do anymore at the university so I can do this? I just felt that it was the right thing to do. I think most people really know what they want. Like, when I was built the first HADI prototype, this was a Christmas break, as I said, I just thought, I need to build this. Or just these next two weeks that are supposed to be time off. I want to work on this because I feel I need to build this thing. And I know then I disappointed a few people with things I also committed to, but I just felt like this is what I need to do because this is a great idea. I will not have so many great ideas, maybe. So I need to pursue this. There's always reasons, like expectation from society or friends or parents that they tell themselves, no, I should stay in this job, because. Reasons. Most people actually really, really know what they like. People really know what they want. So if you just listen to that, probably that's the best thing you can do. But who am I to this size, right?
Adam Gordon Bell
That was the show. Thank you, Felina. From the bustling classrooms of Rotterdam to Puerto Rico and Botswana and Pakistan. It's. It's crazy how her language is spreading and, you know, revolutionizing education for various students and educators all over the place, Right? It now supports 54 different native languages. Felina continues to develop it and, you know, needs more support and funding for more details, visit the episode page where you'll find some links. Or find Hedy at H E D Y c o d e.com that's hedyco.com and besides that, to me, Felina's story is a testament to the power of instincts, right, that you can know what you need to do at a level that's more emotional than maybe, like, conscious thought. You know, she wanted to make a difference in the field she loved, and she just leaned in to whatever felt like she was doing that. She just chased that and it ended up having such a large impact. If you enjoyed this podcast, you know, consider subscribing to my newsletter. I write as well so you can enjoy some of that and also let you know when new episodes coming out. Also, I'd love to hear your thoughts on this episode. You can tweet at me at adamgordenbell. You can email me. I love getting feedback. Like, seriously, somebody saying something nice can make my day. And for true fans, right, the best thing you can do to support me to keep the episodes coming is go to co recursive.com you find a link in the show notes, become a supporter. Supporters, you know, get to have access to bonus episodes and they get to join the community. And until next time, thank you so much for listening.
CoRecursive: Coding Stories – Episode Summary: "From Burnout to Breakthrough"
Release Date: June 4, 2024
Host: Adam Gordon Bell
Guest: Felina Hermans, Professor of Computer Science
In the episode titled "From Burnout to Breakthrough," Adam Gordon Bell delves into the inspiring journey of Felina Hermans, a computer science professor who transformed her career from academic burnout to educational innovation. This narrative explores Felina's challenges within academia, her pivot to teaching underprivileged 12-year-olds programming, and the creation of Hedy, a multilingual programming language designed to make coding more accessible.
Felina Hermans begins her story by recounting her experience in academia, highlighting the growing sense of disenchantment she felt while pursuing her PhD and subsequent academic career.
Felina Hermans [03:31]:
"If you do academic research... How has the world changed? Hundreds, thousands, hundreds of thousands of papers appear... Is this really where I can add the most value?"
Felina explains that the repetitive nature of academic research, coupled with a feeling of insignificance amidst the vast number of publications, led to her gradual burnout. She struggled to find meaning in her work, questioning the impact of her contributions.
Located near Rotterdam, Felina accepted an opportunity to teach programming at a high school in one of the Netherlands' poorest zip codes. This decision marked a significant shift from her academic pursuits to hands-on teaching with underprivileged 12-year-olds.
Felina Hermans [04:37]:
"I didn't think, does this fit my schedule? I didn't think, what will my department head think if I do this... I just had this urge, I thought, I want to do this thing."
Felina's spontaneous decision to teach was driven by an intrinsic desire to make a difference, rather than strategic career planning. The high school's demographic, predominantly minority families with limited access to resources, presented unique challenges and opportunities.
Felina initially attempted to apply her university-level Python curriculum to her younger students, quickly realizing the mismatch between the material and the students' comprehension levels.
Felina Hermans [06:32]:
"Hello 12-year-olds. I have, I don't remember the exact number, but let's say I have 120 PowerPoint slides... I don't think I will reach the end of the 120 PowerPoint."
The 12-year-olds were often confused by the rigid structure and syntax of Python, leading to frequent frustrations and disengagement. Felina recognized that the traditional approach was not effective for her audience, prompting her to rethink her teaching methodology.
Felina Hermans [07:00]:
"You have to learn where do I type the code, where do I click to get that?"
Her students struggled not just with programming concepts but with the very basics of interacting with coding environments. This realization sparked Felina's interest in how people learn programming and the gaps in current educational methods.
Driven by the challenges she faced, Felina embarked on creating Hedy, a programming language with "training wheels" to ease beginners into coding. Her vision was to simplify the learning process by gradually introducing syntax elements.
Felina Hermans [15:04]:
"Why are there brackets and quotes?... I could make a programming language that doesn't teach everything at the same time."
Hedy was designed to introduce programming concepts incrementally, reducing the cognitive load on learners. This approach aimed to foster a more engaging and less intimidating learning environment for young students.
The onset of the COVID-19 pandemic provided Felina with the time and impetus to further develop Hedy. With the shift to online learning, Hedy gained traction as it offered an accessible tool for students and educators navigating remote education.
Felina Hermans [23:04]:
"During the pandemic... a hundred thousand programs had been created by people using the system."
The rapid adoption of Hedy during the pandemic underscored its effectiveness and the demand for more intuitive programming education tools.
One of the most significant advancements in Hedy was the introduction of multilingual support. Responding to feedback from her students, Felina implemented the ability to program in native languages such as Dutch, Arabic, and more.
Felina Hermans [26:21]:
"We want to program in Dutch... How hard is it to build a non-English programming language?"
This feature addressed cultural and linguistic barriers, making programming more inclusive. Felina's dedication to localization revealed the deep-seated biases in traditional programming languages that prioritize English, often alienating non-English speakers.
As Hedy expanded to support 54 different languages, Felina encountered numerous technical hurdles, including handling diverse character sets and adapting syntax rules to accommodate various linguistic structures.
Felina Hermans [28:58]:
"Arabic uses different numerals... quotation marks are different... I didn't know anything."
Despite these challenges, the Hedy community flourished. Contributions from around the globe enriched the language, demonstrating the universal appeal and necessity of localized programming tools.
Felina's work with Hedy not only simplified programming education but also empowered students to embrace their cultural identities within the tech landscape. By enabling programming in native languages, Hedy fostered a sense of belonging and relevance among diverse student populations.
Felina Hermans [35:03]:
"Programming in your native language totally avoids... the baggage of colonialism or war."
Her efforts highlighted the importance of cultural representation in technology, challenging the dominance of English and advocating for a more inclusive approach to software development education.
Felina's innovative work with Hedy, while impactful, diverged from traditional academic expectations. This led to tensions within her institution, culminating in a reluctant tenure offer coupled with an implied limitation on her future career prospects within academia.
Felina Hermans [19:56]:
"They made it clear that the rest of my career probably was not going to flourish if I stay there."
Undeterred, Felina embraced her role in developing Hedy, finding fulfillment and purpose outside the conventional academic framework. Her open-source project garnered significant community support, affirming the value of her unconventional approach.
Felina Hermans' journey from academic burnout to creating Hedy underscores the transformative power of following one's passion and addressing real-world challenges. Her dedication to making programming accessible to all, regardless of linguistic background, has sparked a movement towards more inclusive and culturally aware educational tools.
Felina Hermans [46:52]:
"I want to change the world... have kids see themselves as computer science people."
Felina's story serves as a beacon for educators and developers alike, illustrating that true impact often requires stepping outside established norms and innovating to meet the diverse needs of learners worldwide.
Felina Hermans [00:19]:
"I think there was just such a big difference in my life experience and his that he thought I was lying to his kid."
Adam Gordon Bell [02:36]:
"Felina's story is wild, right? She faced challenges in academia... it might change your views on programming."
Felina Hermans [11:16]:
"What you already know shapes what you can learn."
Felina Hermans [24:07]:
"That's the magic. We don't put hard syntax concepts and terrible error messages in their face and then they just don't draw back."
Adam Gordon Bell [37:02]:
"Felina began as somebody working in the programming language space, then shifted to all this teaching stuff."
Felina Hermans' initiative with Hedy not only addresses educational challenges but also paves the way for a future where programming languages are adaptable to diverse cultural and linguistic contexts. Her work exemplifies how passion and resilience can lead to meaningful innovations that resonate globally.
For more information on Felina's work and to support her efforts, visit hedycode.com.
Connect with Adam Gordon Bell: