Episode 024: Seeing Programming Where Other People Don’t with Felienne Hermans

Panelists:

Jessica Kerr | Sam Livingston-Gray | Astrid Countee | Rein Henrichs

Guest Starring:

Felienne Hermans: @Felienne | felienne.com | Delft University of Technology | Joy of Coding Conference | SE Radio | RoboCup Junior

Show Notes:

00:16 – Welcome to “The Netherlands Invented Gay Marriage, So We Should Be Scared of Them Now!” …we mean, “Greater Than Code!”

01:28 – Origin Story

03:17 – Programming Perspectives From People of Different Backgrounds; Teaching Adults vs Children

06:12 – Teaching Programming as a Language; Aha! Moments

Scratch Programming

GoldieBlox

12:26 – Identity and why do we so often use the phrase “not real programming”? What do we define as software? Tooling

Microsoft Excel

Expector

20:13 –  Should everyone know programming? Why? What should they know/be able to do? (Digital Literacy)

28:27 – What is the programming equivalent of a library/librarian?

33:06 – Does STEM education make other forms of education obsolete? Why not?

35:15 – Things to Get Better at Programming Other Than Programming

CodeKata

48:58 – Fighting Against “Real” Programming and Being Hesitant to Let in Newcomers

50:40 – What can we do to help spread the knowledge?

Reflections:

Felienne: If people say they are programming, they are. Limit belittling and surprise. Do not contaminate others with what your own idea of programming is.

Jessica: Value on reading through code and forming a model of it.

Astrid: Thinking about programming as in thinking about writing.

Rein: Some programming does involved math, but it is not (for the most part) the math you hated in high school.

A Mathematician’s Lament: How School Cheats Us Out of Our Most Fascinating and Imaginative Art Form by Paul Lockhart

Sam: You can be fluent at a very low level of proficiency and still be fluent.

Please leave us a review on iTunes!

Transcript:

ASTRID:  Hello and welcome everybody to Episode 24 of ‘The Netherlands Invented Gay Marriage, So We Should Be Scared of Them Now!’ My name is Astrid.

SAM:  Okay, I’m scared now too. Hi, everybody this is Sam and I’m pretty sure that last time I was here it was Greater Than Code but let’s just go with it. Joining us again on the show is Rein.

REIN:  Hello, everyone and welcome to the show, Jess.

JESSICA:  Thank you Rein and I’m Jessica and I’m super excited that today we have a special guest, Felienne.

FELIENNE:  Hi, everyone. I’m Felienne.

JESSICA:  Felienne is assistant professor at Delft University of Technology where she researches programming for everyone. She strongly believes that everyone can be a programmer but currently, not everyone has access to the right tools and educational materials. She has therefore developed tools to help people program in Excel and Scratch lessons for kids.

Today, 10,000 kids follow her [inaudible] on Scratch. Felienne also spread for love of programming outside of work hours. She teaches a bunch of kids programming each Saturday, organizes the Joy of Coding Conference in Rotterdam and speaking this year. She’s a host on SE Radio and Friends of RoboCup Junior Competition for Kids in the Netherlands. She loves running, knitting and card games. Felienne, welcome.

FELIENNE:  Thanks. I’m super excited to be on the show.

ASTRID:  Felienne, one of the ways that we like to get started is with your origin stories so tell us all about you and what your superpowers are.

FELIENNE:  My superpower is seeing programming where older people don’t see programming. My entire PhD dissertation was about programming in spreadsheets and usually, people don’t see programming as also including spreadsheets but I did and I thought people in spreadsheet, they put in secret codes and then some calculation happens. That’s totally [inaudible] of programming but where we programmers are used to having IDE with features like testing and debugging and analyzing, I saw people in spreadsheets lacking those type of IDE support like features.

My entire PhD dissertation was about the summary it would be building an IDE for spreadsheets. Then after that, I moved along to working on programming education and also I want to expand the horizon of what programming could mean to children.

JESSICA:  That is a wonderful superpower. During the week, do you teach programming to supposed adults?

FELIENNE:  Yes. As my university job as a professor, we have half of our time, we teach university students and the other half of the time we do scientific research. At the university, I teach they call themselves grownups and also I teach programming course for the non-computer science students. All of the students in my school can pick my course as an elective and these are architecture students, civil engineering students, aerospace engineering students so not people that necessarily want to be programmers but they will be programming, of course in their job. They will do some modelings, simulation or analysis and I teach them programming in my elective.

SAM:  That sounds really fascinating. Do you find that people from those other backgrounds bring different perspectives that help them in their programming?

FELIENNE:  That’s a really good question. At least they bring very interesting datasets and problems. For my course, as an end assignment, the assignment is just show me you learn something which the students, they love and hate it, of course. I encourage them to find dataset or problem from their own domain and apply programming to that so they will do, for example on data analysis, they sampled from — literally what happened to one of my students — a river in Africa and used his data analysis skills in Python to make a stronger analysis of that.

I’m not sure if they bring a different perspective but they definitely bring really interesting problems and datasets to my course. Looking at these end report, for me is super interesting because I learned about a broadness of them and the piece is fresh for me as well.

REIN:  Have you noticed differences between teaching kids how to program and teaching adults how to program?

FELIENNE:  It depends on the type of adults. I don’t think there’s a real big difference between kids and university-age students because they’re still quite open-minded and eager to learn and they’re not scared of learning. But today, I gave a programming course to elementary school teachers — those are also adults of course — and that is different because these adults have already settled in their brain the idea that they cannot do programming. They’re like, “I went to teacher’s school. I will never learn programming. I’m unable to do this,” and I give them lecture material that I use on eight, nine, ten-year olds. It’s really not hard in an abstract sense. If you could measure it, it’s not hard. But they’re like, “Oh, my God. It’s programming.”

Some type of adults, it’s not that they’re not smart. I’m sure they’re super smart people and they would be able to do it and I think they have convinced themselves but I could also say society has done a great job at convincing them that they can never be programmers and that stick of course.

SAM:  Yeah, I see a lot of learned helplessness when I talk to people who are not already ‘in tech’ just even to the point where when I talk to people and I introduce myself and they say, “What do you do?” and I say, “I write software.” I’ve learned to leave it at that because most people will go, “Oh,” and move on to other topics because they don’t even feel like they have any handle on it, which is kind of sad.

FELIENNE:  This might have to do, of course also with the small definition that people see programming that they’re like, “Oh, programming. That’s apps and websites,” and it’s hard for them to relate because they don’t really know programming could mean to them.

ASTRID:  I have noticed that it seems like because people associate programming with math and a lot of people have a lot of really negative experiences with math and they just automatically say, “Oh no. No, no, no. I can’t do that. It’s just like a lot of abstract math and I don’t even like math so I can’t program at all.”

FELIENNE:  This is so true. What we’re actually doing with teachers — I’m so happy you brought this. I’m now trying to teach programming in the context of language class so in my case, Dutch classes instead of math classes. I tried to focus on exercises that teachers and kids normally would do in the scope of reading. For example, storytelling or practicing with words because, of course a lot about programming is also reading.

If you have to read a Scratch program, you are doing letter and word comprehension of course, because you’re reading the syntax. Instead of focusing on building, having the kids drag the blocks and creating a program, I’m more focused on reading and deconstructions so I’m giving them a program. They have to read and try to understand what it means by clicking the blocks and I found that connection to reading, rather than to mathematics is a good way to convince teachers that it’s useful and also to drag it to a space where teachers feel really comfortable. This emphasis on reading and storytelling can help people feel less scared because usually, the teachers are less scared of language than they are of math.

JESSICA:  Starting with reading programs, that’s a really good idea. [Inaudible], we do anyway.

FELIENNE:  Yeah. I have a degree in computer science and I do PhD in software engineering but I’m not reading books for elementary school teacher about how we teach language and language [inaudible] because there are so many good things in there that we can use in programming education that we haven’t thought about. One of the assumptions that we all have about programming is that creating a program will teach you how to create programs well.

If you think about reading, before kids start writing stories, if they’re seven or eight maybe they write their first stories, they’ve already been exposed to hearing stories for four or five years because their parents will read to them, they watched movies. Before we can even seriously think about teaching kids storytelling skills, we share stories with them. Maybe we can take some lessons from them into programming where we want to encourage kids to read programs first, what do you think programs are and can do and what are some canonical programs that make sense and only then starts focusing on construction. That’s one of the things that’s really interesting to me.

SAM:  It occurs to me that a lot of what I’ve seen about teaching people programming is this idea that you have to get them hooked by giving them small empowering moments of control where they changed something and they see the computer response to what they said. Is that feasible in this approach that you’re talking about or do you just focus on reading? If so, how do you give them those little moments ‘aha’?

FELIENNE:  Those ‘aha’ moments are absolutely necessary and of course, a difference between a story and a computer program is that you can change it and then it will do something. You can change a book with a [inaudible] of course but that’s really different from changing a program. I’m not like binary flipping to let’s do reading only. It’s a combination of the lesson that I gave to the teachers. In Scratch, you have sprites which are the elements of the game [inaudible] and a piano, for example. I make them create [inaudible] for one sprite and the other sprites will react to that. Then they see the reaction and then I tell them, “Now, go to the other sprite,” they’ve observed the behavior and then I give them a screenshot of the code and they had a little books from which they work and give them a screenshot of the code and the other sprite and then I say, “What created that reaction?” I make the one sprite say something to the other and it’s a condition. It’s a letter-eating monster and if you give it the right letters, then it will be happy and if you give the wrong letters, then it will not be happy. It will say, “Yuck, I didn’t like these letters,” and then there’s the difference between consonants and vowels. This is what they practice. It’s again, in the language setting. Then they switch to the other sprites and then they observe the conditional and then of course, there’s a list of things, the vowels, and if I give it something from that list, it will say ‘yes’ and otherwise, it will say ‘no’. It’s definitely a combination because it’s just reading, it might not have that ‘aha’ clicking moment.

ASTRID:  Although, Felienne I love what you were saying about reading because as you were describing it, it made me think back on when I first started to get interested in programming and it was because I started to see actual programs and realized that I could understand the words. I could see what it was doing and that made me actually want to change it and see what else I could make it do. I think that this concept of looking at something from that perspective is probably something that should be done more.

I believe that there is another engineer. She makes this product called GoldieBlox and she talked about a similar thing where she made it a story that she wanted to focus on girls and learning how to be more comfortable with engineering. By giving them a story, they felt more engrossed and engaged to what they were doing as opposed to like giving them just blocks and seeing what they could build.

FELIENNE:  Yeah and this is definitely about inclusiveness in general but also about gender inclusiveness because most of the programming is really focused on building which just might not be too excited for all of the kids but only for some kids. I have this story where I come into a classroom and I have these written assignments on paper. I give it to kids and some of the kids, they take the assignments and they fill it to perfection. Those will be good programmers but other kids, they look at the assignments, they look at Scratch and they’re like, “Oh, if I click blocks, I can figure out what it means,” and they throw away the assignments and they want to play in their own space. Those kids will be good programmers as well and we need to make sure in less material that we cater to both of those types of kids.

JESSICA:  So they’ll be good programmers. There’s this identity thing in I am a programmer. I am not a programmer. The teachers are like, “I am not a programmer.”

SAM:  Which you’ll know is why I say, I write software rather than I am a programmer.

FELIENNE:  Yeah, I love that ultravision. I never really thought about it. It’s so true and this also has to do with its negative too. It’s also, you do PHP, therefore you are not a real programmer or you do spreadsheet, and therefore you’re not a real programmer. But it’s an in crowd and an outsider group. Even people that are professional programmers in BASIC program, there are other people that will say, “You’re not a programmer.”

SAM:  That’s a whole other episode.

JESSICA:  Right. There’s this whole thing about real programmer not a real programmer but if you rephrase it to, “I write software,” then nobody can tell you, “Oh, you don’t write real software.” It’s like, “It runs on a computer, it does the software.”

SAM:  I hadn’t thought of it that way. That’s really cool.

JESSICA:  So just like every kid can write stories, kid can create programs or every person and like you said, if we start as children, they have it absorbed that you can’t do this yet.

FELIENNE:  Yeah, if you phrase it like that, I love the analogy because all kids, for examples they’re all drawers. They all like to draw. They don’t care if they can never be a professional. They still like it. The same with writing, of course. They all write these crazy adventures. It’s not so tied to their identity. No one truly says to a seven-year old, “You can never be a writer,” but I think there are people who say to seven-year old, “You can never be a programmer because you suck at math.” I like that.

REIN:  I like this idea because it includes more people and it avoids this stigmatization of are you a programmer or are you good at math. But it does draw a new boundary that I think is interesting, which is what do we define in software and you do a lot of work. I was fascinated to read some of your work on spreadsheets and you talk about refactoring spreadsheets, testing spreadsheets, inventing duplication in spreadsheets, all sorts of things that I think of in my sort of way as being with stuff that programmers do. For me, it sounds like the argument that you would make is that spreadsheets are software and should be included. Could you maybe tell me if I’m right and expand on that?

FELIENNE:  Yeah, I totally agree and always say that’s because it’s such a good programming system that people don’t even realize their programming. They’re making the machine do their bidding but without the stigma, I think with all the power of Excel spreadsheets has, I think that the biggest power is that people don’t see it as programming, as scary, as threatening. I’ve talked to people in investment banks that built an entire risk dashboard on their company — this investment bank was running on their spreadsheet. They said, “Wow, that’s so cool. You’re like a programmer.” No, I’m not a programmer. This little thing, it’s just a simple model. I’m not a programmer so I think that makes it really strong and of course, it has some features that make it real programming. It’s even a functional program because a spreadsheet formula has no side effects. It can only take on auto formula and produce results.

I would even say that spreadsheets are the greatest programming system that has ever existed in the history of programming. They found that that it’s functional. It’s also reactive because the cells react to each other and has lots of hip programming features that are overlooked sometimes.

REIN:  I am so happy right now.

SAM:  Same.

JESSICA:  You mentioned that you built an IDE for spreadsheet. It is part of the reason that people are like, “Oh, Excels are terrible because it’s not maintainable,” and is it a tooling problem?

FELIENNE:  I think it’s a two-fold problem. It’s definitely a tooling problem and if you go back to what software was in the 60s and in the 70s, then it was also maintainable [inaudible] because we didn’t have tools and we didn’t have an understanding. In the beginning of programming, everyone was an end-user programmer. There were no professional programmers. People use a tool to do their job — being a scientist mainly — so no one thought about what happens if this program lives for 10 years what happens if someone else has to maintain it. This was not our problem so people didn’t think about it, that’s reason A and B, there were no tools. Of course, these two things have to do with each other because if you don’t see it as a problem, there will be no tools.

I think spreadsheets are somehow is in similar situation where people don’t see them as software. They don’t see it as long-lived artifacts. They don’t go looking for maintenance solutions, either in a tool or in, of course you have guidelines as well like they’ll make your formula too long or don’t duplicate stuff all over the place but people don’t go looking for them because they don’t feel they’re programming.

REIN:  Do you think it might be a factor that the actual programming in spreadsheets is mostly hidden? You see the results, the values but the formula are hidden away until you do and find them.

FELIENNE:  Yeah, that’s very interesting. If this is contributing to the fact that people see it as easy but it might also be contributing to the fact that it’s easy to make a mess out of things.

SAM:  If we can go back to that tooling question, you mentioned that because people don’t think of a spreadsheet as programming, they don’t look for tools, I have a sort of the opposite perspective which is I’m coming to a spreadsheet from a background as a professional software developer. I rely on tests and test driven development and I feel like I don’t want to put too much logic into a spreadsheet because I don’t have the mental model or the tools I would need to test drive a spreadsheet. Is there anything like that out there?

FELIENNE:  We actually worked on that ourselves a little bit but one of the things that people do even people that don’t come from software writing backgrounds is they use spreadsheet formulas to write tests because there is no [inaudible] unit for spreadsheets but of course, there are formulas. What we observe people do is write formulas like, “If A1 is 5 then error, else okay.” That’s formulas and then sometimes in important spreadsheets, there will be a worksheet called checks, in which all these formulas are grouped together and people looked at them, “Okay, okay, okay, okay,” and if everything is okay, then this model can be sent out.

We worked on a tool called Expector that can harvest those test formulas and put them into a test suite where it was just a hidden worksheet and spreadsheet and then based on those, you can run those tests and it even shows you covered and uncovered cells. Looking at behavior that people already shows to a certain extent, about 10% spreadsheets we found in a field has those type of test formulas and then using that into a testing system because you want to avoid overloading people that aren’t really ready for the type of thinking with ideas from a totally different field. We really wanted to avoid giving them Visual Studio but make tools, build on what they do rather than just bringing in stuff.

SAM:  That’s really cool. Thank you.

JESSICA:  You called spreadsheets the best programming system. It sounds like your qualification for the best programming system is the most people can program in it, can make the computer do their bidding.

FELIENNE:  Yes.

JESSICA:  And by most people, you mean a pretty broad range. Do you think everybody should be familiar enough with programming to be able to use it?

FELIENNE:  Yeah, everyone is many people. I mean, yes in the sense that we also want everyone to be able to read and write. There’s no possible because some people can all do it but still in education, we want to focus on getting most people to be able to read and write. In that sense, yes everyone.

JESSICA:  I guess, we try to make everyone able to read and write but we don’t require everyone to do calculus. Maybe programming is somewhere in that scale.

FELIENNE:  Yeah, absolutely. Also, reading and writing of course that we want everyone to learn at a basic level, not everyone needs to be able to author a novel and some people don’t, for different reasons. That’s where I was going with that. Some people don’t have the creativity. Other people don’t have the stamina, other people might not have the spelling skills or marketing skills or do social skills to find a publisher. For all of these reasons, not everyone is a novel writer but still we want a level up.

JESSICA:  That maybe kind of like more people can read than can write something that someone else would want to read. If we can start with the reading of programs. Maybe the basic skill is being able to read a program enough, to figure out how to interact with it and get it to respond positively.

FELIENNE:  Yes and there were different reasons why I think it’s really important for kids to program. One of the reasons is what you just touched upon. I would like people to be able to read a program and have some sense of what is going on. If we’re talking about the firmware of your pacemaker or systems that you’re really depending on or a website that you’re going to fool-heartedly may submit personal information to, we would like more people than now to be able if they really wanted to, to understand what is going on.

Likewise, if you want to read up about a disease someone in your family has. You can read a scientific paper about the disease even though it’s hard but sometimes it’s really important and you want to, at least have the opportunity to dig into something if it’s super important.

JESSICA:  Yeah. One time, I was trying to do something on my router at home and the instructions on the website would like, “Push this button,” and I’m like, “That button grayed out,” and it was totally buggy and it wouldn’t un-gray the button. I’ve looked at the source code for the page and I was like, “If I were able to push that button, it would do this,” so I bring that on the console and it totally worked.

[Laughter]

JESSICA:  That was exactly the kind of thing that doesn’t require a professional programmer.

FELIENNE:  Exactly. I want more people to have that level of, “I know more or less, what’s in here and if I need it, I can figure it out.” What you’re saying is exactly right. You don’t need to be able to write a see-around system or source code for nuclear power plants. You don’t have to have the level of a professional developer to do something like that, to look into a little bit of source code and at least, understand what it’s doing there and that is if needed. Those are different skill levels. I think they really relate to writing. You don’t need to be novel author to be able to read a relatively difficult newspaper article about a topic that you are interested in.

ASTRID:  Felienne, it sounds like you’re talking about digital literacy, the ability to just be able to reason about your digital environment because you know something about the programming language. Is that right?

FELIENNE:  Yes, definitely.

ASTRID:  It kind of reminds me, I was having a session with someone a long time ago about whether or not people should learn how to program and there’s always a lot of opinions about whether everybody should and everybody shouldn’t. What you’re saying reminds me of when people used to talk about learning to read and write like way back in, I think the enlightenment period because everybody didn’t read. It wasn’t required. You didn’t have to. It wasn’t necessary for your job.

A lot of people who were able to read or write were the clergy or aristocrats and it was kind of seen as this highfalutin thing that only somebody who has the time would do and it feel like that’s what’s going on right now where programming and being a software developer and being able to read or write software is seen as a luxury. You don’t have to have it. There’s other people who do that for you. Then when people used to sit around and discus, whether they should learn how to read and write, I think what they were really trying to get at is reading and writing is going to be something that becomes the bedrock of our society so that in the future, if you can’t read and write, are you going to be at such a disadvantage that you can’t participate.

In which case, they were right. In a lot of societies today. If you can’t read and write, you can’t do things like drive down the street or go to the grocery store or pay your bills. Do you think that with programming that it’s going to be like that in the future where if you can’t look at a program and be able to, at least kind of understand what’s going on, it’s going to inhibit your ability to fully participate?

FELIENNE:  Yes and also, this is where our brain, my Dutch liberal socialist agenda because what you’re saying about the time where not everyone could read and write, that was also of course greatly about power. Not everyone could write so we only heard the perspective of some people. If you look at history from the Roman Age, you see the history of people that couldn’t write and not everyone could read so not everyone can fully participate.

I feel somehow, we’re also in that situation for programming. We don’t see their programs. We don’t see what many, many people could who create because programming is only for white boys, basically. This democratization of writing has of course, also may possible to hear different voices. Maybe somewhat towards the extreme because you have to at their end, you need to listen to many people that maybe rather that they couldn’t write. But it’s also given us the ability to many, many stories that would have otherwise be hidden to us. I am totally looking forward to living in a world where we will see more programs for more diverse people in [inaudible], really.

JESSICA:  In the chat, Sam asked, “What’s the programming equivalent of a public library?”

FELIENNE:  That’s interesting and someone says it’s open source — non-toxic open source.

[Laughter]

JESSICA:  Felienne, You mentioned earlier that there are some canonical programs that people can read. Do those exist on your Scratch profile or something?

FELIENNE:  I like thinking about this. They don’t exist. They should exist. There are some canonical stories like lovers want to get together but something is blocking that and then it ends well or lovers want to get together and something is blocking them but they overcome it or someone goes on a quest to find something. It takes really long, they eventually get it. These are stories that kids, for example will apply in their writing. Those simple stories that if you go trying to be or in a public library, it would be like, “Tick, tick, tick, tick, tick.” Many of them are like that. What would be the list of canonical programs that kids could apply in their learning? I don’t know but now I want to still talking with you and think about that.

SAM:  Well, I can tell you it’s not quicksort and it’s definitely not quicksort on a whiteboard.

FELIENNE:  It’s not reversing a string. It’s not a [inaudible]. It’s not of those things.

REIN:  I think that the question actually goes deeper than just what’s the code that you can read because a public library offers a lot more benefit than just being a place where there are books. You know, it’s a free, open, mostly safe space that’s heated in the winter and cold in the summer. It’s available to everyone. I think beyond just having a bunch of books that you can read, if we’re going to talk about what would be the software equivalent, we have to talk about what are all of the values that a public library provides.

FELIENNE:  Yeah, like a community and adult supervision or adult guidance where a librarian can know you after a while and suggest you books and you can meet people and also like reading. Those are all interesting functions. Absolutely.

ASTRID:  And also curation. There’s a lot of making sure that you have this other right things like the basics available.

FELIENNE:  Especially for kid’s books. I don’t know if this exists in the US but probably for kid’s books in the Netherlands, you have levels so they have stickers on them with ABC which tells you more or less what level it is so as a kid, you can find something that fits your reading level and then you know you’re advancing. This is also important of course.

If you think of open source as a public library, some of the roles could fail, you would go on it and then where would you start. If you’re a small kid, you just go to Age-5 section and then there are books without letters because you can’t read yet. It’s still for you. It feels like for you. It has pictures that make you feel in your place.

REIN:  I’m going to jump on your bandwagon here and point out that public libraries are one of the most successful socialist programs ever introduced into the United States.

FELIENNE:  Yeah, that’s probably true.

ASTRID:  But they also have a really long history of protecting information too, of being at a safe place for controversial things or things that everybody doesn’t necessarily agree with but being protective because it has value.

SAM:  And that’s been the function largely of librarians so I wonder if instead of asking what’s the programming equivalent of a library, maybe what I should have asked is what’s the programming equivalent of a librarian.

FELIENNE:  Oh, a librarian. Yes.

SAM:  Because librarians are awesome.

REIN:  Maybe we can get a librarian on to get their thoughts on that because from the ones that I know, they have lots of really good thoughts about all sorts of things.

ASTRID:  But doesn’t that kind of already exists because doesn’t a lot of our theories about information come from library science?

SAM:  Yeah, I don’t know anybody who’s a programmer that has a background of library science.

JESSICA:  I know a couple and they are the best. I love programmers who used to be librarians.

ASTRID:  Yeah, because they’re thinking about knowledge management and how you group information. It’s a different way of looking at it than just, “How do I make it awesome? How do I make it best?”

FELIENNE:  Yeah and also I know, at least in the Netherlands that libraries are searching for their place in the changing world. Some of the libraries here are hosting [inaudible], for example on Saturdays to get kids into programming because they see that’s what kids also need. Somehow maybe they are reaching out to the programming world but we’re not really finding each other or lost.

ASTRID:  Or maybe it’s because of what you brought up earlier about this idea of what is a programmer, what is programming and they’re being such a big distinction between what some people believe of real program is versus what is not a real program.

SAM:  Right. As programmers, we tend to focus on tools and technology, whereas I think perhaps there’s a lot more value to be had in thinking about people and communication.

FELIENNE:  Yeah, this is very true. I do remember someone brought up math and I think that’s one of the reasons that we see it because we’ve all framed programming as technical and by nature almost, technical professions are about technical skills and not so much, even though also they should be more about people skills but they’re not. By calling it software engineering, is that really a good frame because that engineering, that technical space is not really about people. Program construction or a programming as more literary activity might also bring a different frame about how we interact with each other.

REIN:  One of the things I wanted to mention, to bring out my smallest soapbox is that there’s this idea that I’ve seen going around in programming communities that STEM education is superior to other education or obsoletes other forms of education, especially with liberal arts. I can’t stand that idea because —

FELIENNE:  Yeah, just this week, they tweeted something like, “If you put a STEM major in writing class, they would get an A. but the other way around, the liberal arts students couldn’t do anything in our field.”

REIN:  I may have responded to that.

[Laughter]

REIN:  My experience is that so many of the skills that make me a relatively decent programmer have nothing to do with the syntax of programs or data structures or algorithms. It has to do with forming mental models of systems and reading comprehension even and giving and receiving criticism. All sorts of things that you don’t get so much as the focus of a computer science education but you do get it as part of the focus of a liberal arts education.

FELIENNE:  Yeah, totally. If I see my students writing at an engineering school, they could use so much more practice in writing, not just the spelling and the grammar but writing as crafting a story around something they encounter. I always say to kids that I worked with, “Whatever you will practice, you will get better at.” You might not be a top sports player in soccer but if you practice it, you will advance to a certain extent.

If our students, they don’t practice writing heartily in any of their courses, it’s always an afterthought. It’s always in a course about taking oriented programming or five study credits, one credit will be devoted at presentation then they get one lecture about it. That’s never a thing that really deliberately practice so then probably the reverse of my statement and it’s also true if you don’t practice something, you will not get better at it. If we don’t practice these type of skills, then our students won’t get better at it.

JESSICA:  Speaking of deliberate practice, I look into you before the show that you have ideas around things that we can do to get better at programming other than programming.

FELIENNE:  Yes. Last week, I was in Norway at a conference called BoosterConf. It was super awesome conference that I really like so you should all go there next year. It was great. They let me do a code and poetry workshop, which was awesome. What I did there is I had people create poems with source code by looking at the ingredients that poems normally have and finding them the algorithms. It sounds super weird.

For example, one of the exercises that was in there is I had people look at the line of code and count the syllables. How many syllables does ‘x is five’ had? This seems the easiest question ever. If you really think about it, how do you pronounce the equal signs in your brain? Is that ‘x equals five’? Or is it ‘x is five’? Or maybe it’s ‘x becomes five’? Or ‘x stores five’?

What does it even mean that the signed statements and this really open the minds of many people in my course and are like, “Oh, wow. I never really thought about how the code feels in my brain and how I read it out loud.” Some people really took it through so for example, they said if I’m defining a function, then it’s ‘f takes x’, for example as the integer x. But if it’s a function call, then it’s ‘f of x’. Even the context could define pronunciation of symbols and that was a simple exercise that’s why the first things you would do if you would teach someone creative writing is read it aloud to yourself and see how it feels. This is something we never do in source code so I have lots of fun.

ASTRID:  In your example, Felienne actually makes me think that your earlier theory that maybe software is more related to writing than we originally thought and language makes a lot of sense because it kind of reminds me of the types of rules that you have in the language like English where it’s I before E except after C because there’s always conditions with which you have to think about what you’re doing. It’s not just a blanket one explanation for how something as it always has to be interpreted.

FELIENNE:  Yes.

REIN:  This ties in a little bit to what we’re talking about before with who are real programmers, what are real programs, why isn’t an Excel spreadsheet considered a program and I think a lot of it has to do with programmers have a very narrow view of what constitutes a program — it’s text in a file but not any text, not prose, not poetry. It’s text in a file with a very specific syntax and format and anything else, visual programming is mostly ignored. Spreadsheets aren’t considered to be programming, nothing else counts.

FELIENNE:  Yes, also the assumption is to get better at it. You just have to do it a lot and this assumption goes really deep in our community. If you apply for jobs, people will look at your hobby Saturday projects. Not as a means of deliberate practice, as a means of building more stuff.

I like what Jess is saying in the chat. I’m going to repeat it because she’s in an airport and her audio is a bit noisy. She says, “It’s like playing the piano. To get better at speed, you have to play well slowly. You have to study each sound,” and this is so much similar thing to programming where to get better at it, you have to look at it from different perspectives. You have to do different things. Sometimes you’re playing an entire piano piece. I really love the analogy, Jess.

But sometimes, also you’re just doing three notes repeated over and over again to some of the things. Of course, people in programming they do that with Katas that really nice, small deliberate exercises of practicing but we could totally use more of that. I think that only doing those wacky exercises like counting syllables in the line of code will also contribute to what the definition of programming is because some people started to make really crazy programs, of course for their own enjoyment. They totally said, “I made them do sorting algorithms just because there are a lot of them.” You can easily copy-paste the code from [inaudible] to get going on syllable counting. Some people stuck with that but there are people started to write things that made no sense which is really nice for your brain.

REIN:  Katas come from martial arts. This idea that forced repetition of particular forms builds this muscle memory. It seems to me like a lot of the education in programming is being created by people who aren’t so much educators. A lot of it is programmers who are writing books on programming and not trained educators who are writing books on programming. It seems like a lot of the things we’re talking about are ideas around pedagogy that we know about in other fields like liberal arts and things, why don’t we have that so much coming in to programming education? Why are we slowing in Katas, for instance instead of something from liberal arts?

FELIENNE:  Yeah, exactly. That’s a good question. I don’t know why other people are doing it but I can hypothesize about, for example a school teacher that would go to a conference about programming, how they would feel and be treated if they would say, “I have lots of programming education skills. Who wants to collaborate with me?” I don’t really think that we — of course I’m generalizing here and there are lots of great people in the programming community that I love. However, many people, like that tweet that we were talking about before, have such a huge disdain of all sorts of skills that aren’t labelled as technical that those types of collaboration’s are pretty hard.

SAM:  Yeah, we have this arrogance and this myopia in the field that the things that we know we are really good at are the only things that matter and if you’re not exactly the same things, in exactly the same way that I am, then well I’m sorry but you’re just not a real programmer.

FELIENNE:  Yeah, exactly. It’s interesting. I never really realized or focalized the fact that Katas come from martial arts which is interesting because they could also have gone from writing education because they have to be similar. If you’re learning about spelling, the only way to learn about spelling is practicing. The teacher reads 25 words and you write then and we do that every week. This is, of course similar to those types deliberate practice that memory building is also alike too but they didn’t really come from that area because for all we think, martial arts is cool and liberal arts is weak.

ASTRID:  I think it might have something to do with this idea of programming as being mystical, magical and only certain people have the ability. It’s a similar thing with martial arts. If you don’t know martial arts and you see somebody perform any type of martial arts, you are amazed because it seems inhuman. Jessica saying in chat, we think similar things about music and it’s also true that if you see a professional musician, especially someone who’s playing instrument perform, you are usually amazed because it seems like something you couldn’t do. Whereas a lot of things that we think of little arts like the ability to read and comprehend critical thinking, they’re not things that when you see it happening looks like, “I could never do that,” even though you’re not actually understanding all the complexity that might go into it or even understanding the difference between your skill and their skill because it’s not so easy to just look at it and see the difference. I think that might be contributing to why there’s less respect for it.

FELIENNE:  It has to do with whether or not we believe, you need an innate ability to do it or rather that something you can train, which by the way is there’s lots of research that shows that the more people believe innate ability is needed for skill, the less women will participate in the field.

REIN:  There is also of this thing that I think happens once you get the skills of a programmer. We seemed to want to create this mystique or mysticism around them to prevent them from being understood by others. One of the tropes that I’ve seen in programming is this idea of the master programmer has master with these unintelligible [inaudible] that are supposed to be deep wisdom or really just don’t make any sense to anyone, as a way of sort of protecting that knowledge.

FELIENNE:  Yes.

ASTRID:  Something you just said that made me think about medicine. You were saying that the more than a skill seems to be needed, the less that women will participate. Is that what you said?

FELIENNE:  No. I said, the more people believe that a skill is innate, that you need to be born with the right genes to do it, the more that people believe that, the less women participate in field. This is very true, for example for mathematics, we all as a society believe and continue to repeat the fact that if you’re not good at math, you’ll never be good at it. You have to have the right brain. I don’t know if your language has that or my language even has a thing. It’s called the [inaudible]. If people are really smart in math, people will say, “He really has a [inaudible] in his brain,” like physically, your brain will be different if you’re really good at math. This is something people say.

More people believe that — this is a known fact — the last women who participate because they think, “Oh, I don’t have it so I’ll go do something else.” They don’t think, “Oh, if I practice a little then I will get better.” This is what I tell my kids in my schools all the time, if you practice and think, you will get better and that’s the truth. I want them to remember and not if you don’t have it by age eight, never mind. This also, of course is something that really professed in programming because we have these stories about, “I told myself about programming when I was 10 because I’m so smart.” Or you’re 17, you don’t do it yet, you’re lost for life.

ASTRID:  Interesting.

SAM:  It seems to me — correct me if I’m wrong — the jargon that I’ve heard related to this is this idea of a fixed mindset versus a growth mindset where students, if they have taught that there is a growth mindset which is that they can improve by practicing then they will, in fact improve by practicing.

FELIENNE:  Yes, those things are definitely related to that innate ability type of thing.

ASTRID:  There is a last thing about medicine which may not exactly fit now is because a lot of social scientists they study the medicalization of childbirth, basically meaning that it used to be that when you had children, there were midwives and that was like a woman’s thing and there was usually a bunch of women who helped to have a baby. Then, at least in Western societies, it starts to become medicalized in the sense that you need a doctor and the doctors are usually male. The doctors will tell you how to have a baby, how to nourish your child and it started to become this thing that you didn’t have any more it wasn’t an innate thing that you could have anymore so new woman, you have to have another professional help or else you were being primitive or savage.

It sounds similar to this evolution of programming and how people think about programming because from what I understand, it used to be that a lot of women participated in software engineering or writing because it was seen as more administrative and that the real innovation was going to come from actually building the devices and building the hardware, which was used in more male dominated. But then over time, when you start to see the power of what you can do you with software and not just hardware, it became this professional thing that you needed to have certain abilities for and then the women slowly were phased out of it.

It seemed like a very similar things so it’s interesting that there’s this innate thing going on with something like mathematics where you have it. Because it also feels like, if you look at history, it’s a thing that we could change. We could lose the ability for it to be just because you have it innately needing something.

FELIENNE:  Yeah, I never consider that but yes, that’s very true that sometimes, some phase starts out at a very male dominated profession and it can turn into a female dominated profession as well so the opposite can also happen. For example, with school teachers — this really happened in the Netherlands probably where you live with as well — when our parents went to school, all the teachers were male. There were a little female teacher and then females to go over the field and [inaudible] and lost prestige as well.

I used to be told in school by a male teacher, in an elementary school that was also in city council. That was the level of respect that teachers would have that they could be in a teacher and in city council at the same time. I think that totally changed due to more females participating in the job so this happens two ways: more man take over and it’s seen as more serious and reversed practice was shit. But also more women take over and then it loses respect and appeal.

JESSICA:  Is this why people in the program community fight against what is real programming because we can’t let too many people in?

FELIENNE:  I don’t know why people feel the need to fight whatever you’re programming is. I’m not a psychologist. I asked them hypothesis but I don’t really know. I don’t feel qualified to speak about that.

JESSICA:  No, neither do we. We just speculate.

[Laughter]

FELIENNE:  There’s of course this power that I was talking about before that we programmers control the world in a sense. If you look at what happened with US elections, with hacking and filter bubble, we programmers do have some sort of control over the world that comes with some respect and also that respect is growing. You’re choose to be nerdy and now we’re getting more respect maybe people don’t want to their super profession to be diluted, maybe.

ASTRID:  Yeah, I think it has something to do with that. I think it’s also not just programmers. If you look at [inaudible], they do something similar and doctors will do something similar. If you talk to people on Wall Street, they are very sure that their job is necessary. I’m not so sure because money is imaginary but I think it’s a professional thing where you have to do this. That’s like I have to all these hard things to get to this job so I’m not going to just make it easy for you to do, have those things and be able to do what I do. That’s not fair.

REIN:  I think it’s actually a double whammy. It’s both that. It’s both which school did you go to, what’s your training and it’s also a form of essentialism which is either you’re born to be a programmer or you’re not. I think we get hit from both angles.

JESSICA:  Okay, but since we’re like all benevolent and we actually do want other people to be able to write programs and use them, what can we do to help? What can we do to do a little piece of what you do and spread the knowledge.

FELIENNE:  I gave a talk at Booster Conference last week and I ended that with what I wanted to give to people in the audience, if people tell you they’re programmers, you have to believe them. If people say they’re programming, they probably are, which I think is one of the things that we could start with. If you’re at a conference and someone says, “I’m a programmer,” and [inaudible], if only they’re just starting or they only know PHP, they’re still programmers. I think that’s a small thing that we can all do to incorporate more people into programming.

Don’t say, “Oh, you’re just a frontender,” or, “You’re just a designer.” If you try to pay attention to those small things and I will say that I will admit that I’ve been guilty of thinking and sometimes even seeing those things as well because we all like to feel powerful and better than other people. This happens if you think, “Oh, you’re just this,” or, “You don’t really, you don’t seriously.”

If I could give the listeners one thing to ponder on, maybe it’s really try to limit that type of belittling or also surprise. People say to me all the time, “You’re really a programmer? You’re really a professor in software engineering?” This is how we continue the culture.

SAM:  That was a perfect transition into the way we usually like to end our show, which is to do reflections or calls to action. It sounds like you actually just did both but is there anything else that you would like to add as part of that?

FELIENNE:  Maybe one thing because there are probably listeners — if they listen to the show for this long maybe our listeners that are also doing programming education. If they are teaching at their local school or maybe even they’re teaching their kids, try not to contaminate their brains with what do you think programming is. If kids want to use programming to make a song or a story or an artwork, those things are fine too. Don’t push them too much to building useful stuff because many of the things kids are doing are practicing and not about being good.

If your kid is drawing, you’re not going to say, “Let’s make something that could hang in the museum.” Sometimes, I see educators and parents pushing too much the profession of programming onto their kids and not just letting them play with stuff in a clearly playful way. This is sometimes really well-meant to like, “I want my kid to know programming because it’s useful,” but I want people more to think of it like you want your kids to program because it’s not a form of self-expression.

JESSICA:  I have a ton of takeaways from this episode and one of them is [inaudible] is the hard part of programming. One of them is forming mental models of systems and Felienne talk a lot about is reading programming and reading comprehension, just understanding programs. I’m happy with this because it places an exclusive value on reading through the code and say a new service that I haven’t modified before, new to me and I’m forming a model of it. I’ve also noticed that if informing that model, I could draw a picture. People on the team get super happy so I’m going to do that more and feel better about it.

FELIENNE:  Yes, I agree.

ASTRID:  My reflection is actually kind of similar to what you just said, Jessica which is thinking about programming as in thinking about writing and thinking about it as language more so than about building blocks, which when you were talking about that Felienne, it just made a lot of sense to me and it makes it easier for me to think about tackling stuff that might be harder because I feel really confident in my ability to read and understand and I don’t always know how to build everything I want to build. I think that’s really useful advice.

REIN:  A few times in this episode, we’ve talked about the challenge of convincing people that they can program when it involves math. There are two ends that you can approach that from and we spend some time on. One of them to point out that there is a lot of programming that doesn’t need to involve that and I’d like to take a whack at the other end of the stick, which is that some programming does involve math but it’s not for the most part the math that you hated from high school.

The reason you hated that math in high school is that math education in our schools and around the world is fundamentally broken and bad and teaches people that math is awful and it is not so. What I would like to recommend is a book by Paul Lockhart called A Mathematician’s Lament, which describes how it’s broken, what we can do to fix it and describes how interesting and fun math can actually be. It’s not about rote memorization and rote application of rules. It’s intuitive, it’s created, it’s even an artistic pursuit. I would recommend that book to anyone who is daunted by this idea that they have to learn math and carries the baggage from awful Algebra 2 with them.

FELIENNE:  I didn’t know that. Thanks for the suggestions.

REIN:  It was originally a 25-page essay but it was expanded into a full book. The essay is free but the book is on Amazon.

SAM:  Throughout this episode, I’ve been thinking just in the back of my head about this idea of code literacy or code fluency, which reminds me of this idea that I first ran across from Jim Shore and Diana Larsen and their work on what they call Agile Fluency, which as I understand it, came out of a group here in Portland called Language Hunters that they have this model of having levels of fluency and what really was important for me was this idea that you can be fluent at a very low level of proficiency and still be fluent.

They define fluency as what you can say without really having to think about it. That really to me is a useful reminder that we don’t have to look down on somebody because they’re not fluent at a high level of proficiency. We can encourage people to become fluent at whatever level they are at and that’s still really useful for people. That’s it for me.

ASTRID:  Thank you, Felienne for coming on this show today and thank you everybody for listening. We’ll see you next week.

This episode was brought to you by the panelists and Patrons of >Code. To pledge your support and to join our awesome Slack community, visit patreon.com/greaterthancode. Managed and produced by @therubyrep of DevReps, LLC.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.