L Körbes– creator of Aprenda Go– joins our panel of gophers to discuss teaching and learning Go in non-English languages. Along the way: Mat reveals his origin story, Kris explains why all idioms are garbage, and Natalie gives conference tips.
Linode – Get $100 in free credit to get started on Linode – Linode is our cloud of choice and the home of Changelog.com. Head to linode.com/changelog OR text CHANGELOG to 474747 to get instant access to that $100 in free credit.
Changelog++ – You love our content and you want to take it to the next level by showing your support. We’ll take you closer to the metal with no ads, extended episodes, outtakes, bonus content, a deep discount in our merch store (soon), and more to come. Let’s do this!
Pace.dev – Minimalist web based management tool for your teams. Async by default communication and simplistic task management gives you everything you need to build your next thing. Brought to you by Go Time panelist Mat Ryer. Try it out today!
LaunchDarkly – Power experimentation at any scale. Fast and reliable feature management for the modern enterprise.
Click here to listen along while you enjoy the transcript. 🎧
Hello there, and welcome to Go Time. I only read what’s on the [unintelligible 00:02:49.05] I’m Mat Ryer, and today we’re discussing talking about Go in a not-English language - which is, if you think about it, most languages.
We’re joined today by Natalie Pistunovich. Hello, Natalie.
Hello, Mat Ryer.
Thank you. It’s great to be on the panelist thing.
Yeah, good. Welcome to the thing.
We’re also joined by Kris Brandow. Hello, Kris.
Welcome back. I got your name right the first time.
Yeah, totally. Definitely.
After the edit… And we have a very special guest too, it’s only Ellen Körbes. Hello, Ellen.
Hi, Mat Ryer. How are you doing? [laughter]
Welcome to the show!
Yeah. If I get trolled, I don’t take it well. I can give it, but I can’t take it. So just bear that in mind, please.
You’re gonna get used to it as the show goes on, so don’t worry.
Okay. This is gotta be a tough one for me, isn’t it? I’ve got a feeling…
This is very casual, especially with a drink in the hand.
Yes. Okay, so maybe we could just get started by a bit of intro for each of us… And specifically, I’m interested in how you got into computers, and specifically Go. Maybe we could start there. Ellen, maybe you could kick us off.
Okay. We’ll go to someone else then. We’ll go to someone else if it’s boring, yeah. Natalie. How did you get into computers?
I clicked on the link and then I saw my picture. It’s pretty cool. Now I’m in the computer.
You’re IN the computer? [They’re IN the computer?]
That’s what I see. It’s crazy, I’m telling you. This is the future.
You look like you’re in my computer at the moment.
Are you in the computer, or like just in the monitor?
I’ve got an iMac, so it’s the same thing.
It’s the same thing. I don’t have a monitor.
So I’m in the computer.
Kris, are you gonna give a sensible answer if I ask why you’re into computers? [laughter]
I mean, you already asked me that on the – not last one, but the Go Time before that I was on.
Okay, forget it. [laughter]
Mat, how did you get into computers?
Actually, when I was little, we got a computer and we used to type in things from computer magazines, with my dad, and make games, and things like that. So that was really how. And I kind of fell in love with the fact that you can make computers do things. Once I had that going, I got really kind of hooked on that process. That’s how you do a proper answer, okay? So, proper answers from now on, everyone. Serious faces, okay? [laughter]
Mat, we would like one more demonstration.
What got you not into just computers, but what got you to be interested in Go?
Well, yes, I wanted to build a project on Google App Engine, which is kind of one of my first serverless experiences really, where you write the code and you upload the code, and then it does the rest for you, kind of magically. It feels magic. And the choices that you could use were either Java, so no, Python, so no, and then it had this little experimental one that said Go. And it was that little experimental badge that I sort of like a magpie couldn’t resist.
And then I loved the simplicity of it, and the minimalist design, and I was able to learn it actually quite quickly… Which is nice, because the point of programming is so that you can actually do things. We have some great teachers on this panel, so we’ll definitely talk more about learning and teaching as well.
If you can actually do something with it, then that’s really the important thing… So that was it. And I really then stayed with it and just have been working with it ever since. I loved it. What about you then, Natalie?
When I moved to Berlin and had my first proper job as a developer after uni, after university… In Germany, you say uni, because we’re efficient like that… [laughs]
Yeah. In English.
[laughs] The language of the company was Go, and basically it was a “Welcome onboard! We’re using Go, so good luck!” That’s how I started using Go.
Wow, that must have been quite early then.
That was 2014, I wanna say. End of 2014.
Yeah, what I meant was they must have picked up Go to use it quite early, that company.
Yeah, yeah, it was pretty early. It was a young company at the time, but it was already using it for one or two years since they started; I forget when it was. They’ve been early adopters to use Go in production; they took a bet, and they took a good bet…
It’s interesting to see how – I joined when it was already pretty good at scale, and was still scaling more, and Go was just handling this very nicely.
I mean, if it’s a German company, when you say that they started using Go very early, like that it happened very early, it was probably very early in the morning when they told that, Natalie, to you… The Germans…
Yeah. Did they get up early?
[08:12] [laughs] If you work not in a startup, for sure. If you work in a startup, I think a stand up at 11 o’clock is normal.
What time do you get up, Kris?
It depends on the day. This morning I got up at 8. It was nice. Nice and peaceful.
Oh. What did you have for breakfast.
I really don’t eat breakfast, so I didn’t really have any breakfast.
I should, but I don’t.
Are you calling this intermediate fasting?
No, I just forget to eat. That’s a fun quirk about me, I can go a whole day, it’ll be like 10 PM, and I’ll be like “Did I eat today?” And then I’ll remember “I haven’t since like yesterday at 2 PM”, and I’m like “I should probably eat”, and then I just go to bed instead…
Wow… Is that just because you get so engrossed in the work, or in what you’re doing?
Sometimes yeah. And sometimes “Oh, I’ll make food”, but then I’ll be like “Oh, I have to do this one thing”, and then I’ll do that, and then forget that I was gonna make food, and then keep doing that 4-5 more times…
[laughs] So I’m interested – by the way, I’m always very impressed with people that speak multiple languages… And it’s always interesting to me, because I speak U.K. English. We just call it English. But I still code in U.S. English. If I write the word “color”, I will omit the u. We have a u in our spelling of the word color. But in code, I tend to use U.S. English, because it’s sort of like the standard language. But there aren’t many examples of that, so it’s a very easy thing to do… But that must be different if English isn’t your first language, because you have to learn – I mean, what do the Go keywords look like to somebody where English isn’t their first language?
I think Go is cow in Sanskrit.
Is it? So it means a cow…
I know in yoga there is a thing called Gomukha, or something like that, that means cow face. I’m not sure which part is the cow and which part is the face, but… I mean, Go is either cow or face, in Sanskrit.
Yeah. Well, that’s interesting. So what about func? What’s func? That’s my question. I’ll stand by it.
Who are you asking?
Anyone that can deal with that question…
I don’t think func is even an English word… It’s an abbreviation.
Right… So that’s what I wonder - is it just that everyone has to just learn the keywords and that’s it?
So Aditya has a – you all know Aditya, right? Aditya Mukerjee, I hope I’m pronouncing his name right… So he has a talk that I’ve seen a couple times, where he talks about translating the keywords of the language. I’m not sure if it’s a framework/tool; there’s something that does that, and then you can write Go in your first language, and it basically compiles that code into regular Go. I don’t recall though what were his conclusions about how effective that is; is that a very big struggle?
What I find when teaching people is that sometimes they don’t know what something does when they first see a word… For example while. We don’t have while in Go, but just as an example. What does while mean? I have no idea, I don’t know. But once you explain the concept to the person, they pick it up pretty quick.
I think the real problem with that is really just the beginning, where - okay, let’s say it’s a more complicated language and there’s 50 keywords here; that’s a lot of stuff to learn. If you speak English, you just look at them and it’s like “Oh yeah, this is this.” if you don’t, then it’s gonna take a bit longer. But I don’t think it’s like a huge impediment, especially in Go, when we don’t have too many keywords.
Yeah, I feel like Go helps there because of its minimalism. And then what about comments? I once worked on a codebase that was developed originally in France, and so all the comments were in French. Now, the code - I could read; I was basically using the code to figure out what the comments meant. So what do you think? What language would you write comments in?
Yeah. It makes sense.
It’s really pretty.
I feel like that’s one of the interesting thing about Go - since it’s UTF8, you could really write the comments in whatever language; you’re not gonna run into some weird character encoding problems. That seems like a nice benefit there. You could just write comments in your first language, and it’s probably gonna be fine.
Yeah, that’s true. That’s quite nice. But should you? Because it depends, I guess. If it’s an open source project… I mean, U.S. English I think is the standard for computer science. I’ve read that somewhere once. Probably in America. So if that’s the case, then we probably should even write comments in U.S. English. The French comments certainly didn’t help me very much, unfortunately.
Yeah, I think that gets complicated, because not everyone speaks English. Yeah, if you’re from a rich country, you’ve probably learned some English at some point… But back in Brazil - no, that’s simply not the case. So if you have a bunch of comments written in English and your team is mostly Brazilians, a good chunk of the people are just not gonna be able to understand it then. I mean, there’s always Google Translate and stuff like that that can help… But I think what that causes is it creates silos, whereas like – “Okay, this was written by the Brazilian team, so it’s all in Portuguese.” If you speak English you are not gonna be able to read it. And if we take code that is commented in English, are we gonna be able to understand this? We can’t count on all the team being able to understand. That creates some barriers that – again, I’m not sure in practice just how bad this can get, but it’s an issue. It’s not very straightforward.
And it’s not just the comments, it’s also function names. They also describe what you do, and you need to know the verbs, you need to know the words, you need to know the context of what it is; if you are in a domain-specific codebase, then you need to know all the terminology of that codebase. You say “Let’s process this transaction.” What is that transaction? What is the context of it?
Yeah. I suppose that is a tricky problem really to solve; even when everyone speaks the same language, it’s hard to name functions and things like this…
And variable names, yeah. So L, you did the Aprenda Go, right?
[laughs] Yes, that’s exactly how it should be pronounced…
Should be, but isn’t. How is it pronounced?
Aprenda Go. The r is a lot softer.
Literally what I said.
Yeah, I know. I’m sorry.
What’s Aprenda Go? Tell us about that. What is that?
Okay, so Aprenda Go is a –
You said it wrong.
You said it wrong… Carry on, it’s fine. [laughter]
Oh, I’m sorry. Look, I’m doing my best, man, okay?
Yeah, yeah. You’re doing great.
So when I was first learning Go, I was learning from Todd McLeod course. I’m sure some of you know him… And his course was really good. Well, it was not that good actually, because every five minutes I would email him, “Hey, Todd, here’s a better solution for that exercise”, or “There was an error in that thing”, or something-something.
And I was just trying to help.
It sounds like a nightmare. [laughs]
Yeah, I know, I’m sorry. I mean, he’s a teacher; he’s probably into this stuff. I don’t know.
So I was in touch with him a lot. And then at some point somehow in the conversation he said that if I wanted to record that course in Portuguese, that that would be really cool, because he wants the knowledge to spread, basically, and a lot of people just don’t speak English. So that’s what I did. So my first thing I did with Go, when I barely knew what Go was about, was to record a course, teaching everything about Go. So you know…
[16:13] So I did that, and I put that course first on a closed platform, something like Udemy, and a couple years later I was like “Yeah, the money is not the matter here. I don’t want people to have to pay for it.” And the conversion from Brazilian currency to Euros - I’m not making any real money anyway, so I might as well open it on YouTube and make it free for everyone.
So I called the YouTube channel Aprenda Go - it means “Learn Go.” That’s the exact translation. And then I put the whole course there. It goes from way in the beginning, like what’s a variable, what are functions, what’s a for loop, all of that, all the way down to “Okay, here’s a fan-in and a fan-out pattern for concurrency”, and all that stuff.
So it doesn’t get to web development - that’s a bit more advanced - but all the way from the very first Hello World that you see, to the end of the primitives of the language, I’m covering all of that.
Yeah, it got pretty popular, and I’m very happy to have done that.
So how long did it take you to do? Because it’s a big course, isn’t it?
Oh yeah, it’s almost 200 videos, or something.
I mean, I had just quit my job, and I wanted to get a career in software… So I quit my job and I was doing that full-time. I think it took like a couple months.
The hard part really was editing. I think I released only the first half of the course at first, and then it took me like a year to add the second half, or maybe more even… Because I had no experience with video stuff at all. So I would do a bunch of bad takes, and then have to redo it, and then in editing you end up with 500 files, how do you put all of this together… So that was a ton of work, but now that’s done.
Yeah. So what about explaining the concepts then in a different language? Was it just kind of a trivial thing? Is it just you have to understand it and then you can just explain it? Or are there concepts that are difficult, for whatever reason?
So there are some metaphors that you can’t use in a different language, because they just make no sense. For example, the first thing that just popped in my mind - there’s a metaphor in Portuguese that was like “Water’s soft, rock is hard, knock-knock and it breaks”, something like that. Like, yeah, sure, if you think about it, you can understand, but I wouldn’t use this idiom to an English-speaking audience… And likewise, there’s a bunch of English idioms that just do not translate to Portuguese.
Sometimes you learn something with a metaphor like that, but you can’t use the same metaphor, so you need to find different things. Most of the time, that’s easy, but some concepts are really hard, no matter the language.
Teaching interfaces, polymorphism, pointer methods - that stuff was hard. And not necessarily because of the language, but just because it’s the kind of stuff that once you understand, you understand, but until you do, it makes zero sense… And I find it hard – so I climb the stairs and make easily-digestible steps; it’s the kind of thing you either understand the whole thing, or it makes no sense.
I think interfaces are probably the most difficult thing to explain, especially because they don’t map to other languages; in Python or Java, what interfaces do is kind of different, so you can’t really catch that other knowledge and use it. You have to kind of do it from scratch. Yeah, that gets a bit tricky.
What about words like polymorphism, which you mentioned then? Do you have that word?
[20:05] That’s fun… So if you go to university in Brazil, you learn all of those concepts with Portuguese names. I didn’t go to university, I learned all this stuff on the internet. So half of my videos are like “Oh yeah, what’s this called in Portuguese again? I don’t know, let me just make up a name”, and then I make up a name and I go the rest of the video with some made-up name… And in the comments, everyone’s like “Oh yeah, this is called such-and-such, you idiot”, and I’m like “Oh. Right.”
“Oh. I thought just guessing would be fine.”
But then what makes more sense, usually? Would you say that your translation makes more sense, because it’s more modern maybe?
Sometimes. I’m not gonna claim much credit here; I’m not that creative with naming. Often I would just see the correct name, and I’d be like “Okay, this is a much better way to convey the whole concept than this mess that I just did.” So that’s how it is.
Would you say that you learned the other programming languages that you know also by teaching?
It’s interesting… If you can compare a little bit learning a language by teaching it right away, and learning a language by copy-pasting it, and learning a language by using it. It’s actually three different ways of learning it. Which one do you like, which one don’t you like, what works best for you?
That depends on your goal. If you’re doing a thing that’s gonna be just a few days, and it’s in a new language and you don’t really care for the language, you just wanna get your hacks to work, then you just Stack Overflow copy-paste. That is the best option, because it’s the fastest.
We’ll just remind people, don’t rush it. Don’t copy from the top, because that’s the question, and that code definitely doesn’t work. You have to scroll down a little bit. It’s worth remembering, because I’ve done that, and I still do.
Yeah. Look for the checkmark. That usually tells you which code works.
Yeah, good tip.
But if you wanna really master something, I think the best way is to teach it; even if you don’t actually teach it, learn it as if you’re gonna teach it. So there’s a bunch of things that – I have tons of ideas of stuff to do on YouTube, and I often don’t take the time to actually record the video for YouTube etc. But as I’m learning, I’m taking notes as if I need to explain this to someone else. It’s like “Okay, I got this, but how do I convey this concept?” And then I write down, “Okay, I should say X metaphor, and this etc.” And I create a little script of how to teach a thing. After I do that, I’m never gonna forget that ever, and it’s gonna be crystal clear to me, because I force myself to make it crystal clear. I might be wrong, but I haven’t found a way to learn something that crystallizes knowledge that sharply.
That’s a good tip.
I feel like that’s similar if you wanna teach through writing as well, going through the process of writing a blog post, or an article, or like a book; it will really help solidify a lot of the ideas.
I think a lot of it too has to do with how you have to rearrange the knowledge in your mind to convey it to someone else; it forces you to learn it at a deeper level. It’s like a little bit of a hack, because – when you just learn something, you kind of piece it together from a whole bunch of different places. You might have gaps here or there, but then when you have to actually convey it to another person, it has to make sense; it has to be a story that you’re telling them. And rearranging that knowledge helps you find your gaps, helps you learn more… I’ve read a bunch about that. I’ve always found that to be a really interesting process, of like teaching something to somebody in order for you to learn it better.
I think there’s some elements of different parts of the brain being used, something like that. You can read about riding bicycles, but if you just ride the bicycle, you’re gonna learn so much more… I’m not sure how that maps into languages and stuff, but I think there’s something to it where if you actually pretend to teach it, it probably activates different stuff in your brain, and that makes you learn more. I don’t know, but I feel like there’s something to it.
[24:14] Yeah, I definitely learn by doing something. I find that to be the quickest way for me… And if people want to – if they’re doing that trick of like “I’m gonna imagine I’m gonna teach this”, a nice way to do that (a low-commitment way) is to give a talk at a meetup, or something; or even at a conference. Because that is also – I mean, it is the same thing; it’s a great way to solidify your knowledge and get that across to an audience. I find that to be quite nice, and quite low-commitment, if it’s just a local meetup and you’re gonna do ten minutes and just explain a thing… I think that’s quite a nice little tip. I’ve seen some people do that, and they did it brilliantly, so it really worked. So I always encourage that.
Yeah, I feel like that’s one of the things I always think of when I see people giving talks. It’s like “Oh my God, they just know so much. They know everything about what they’re talking about.” Having given several talks myself, it’s like, no, you just have ideas that you’ve thought about a lot, and you get up and you give a presentation… But you’re making all sorts of mistakes that the audience can’t pick up on, so it’s not like you’re perfect, or whatever.
So yeah, I definitely think encouraging people to give, especially meetup talks, is a really good idea for like if you wanna learn something better; forcing yourself to put down all of that information into a 10-minute or 20-minute talk.
Or even a 5-minute talk. Sometimes, as a meetup organizer, I find it really hard to convince people to submit the talk, because they feel this is a huge commitment, and this is way above something that they can do, even though they’ve been developing/using a concept or a language for years… Convincing them to give a 20-minute talk, a meetup talk is a lot. A 5-minute talk is also great. This is something that I think everybody should talk about more, as meetup organizers, as attendees, and as speakers.
Hey Natalie, I have a question for you. Since you have a lot of experience organizing meetups and events, is there a shortcut to the fact that people are often comfortable with the subject matter of their talk, but they’re just terrified of being on stage? Is there some hack to that?
Some. I’m sure there’s a bunch of hacks that I cannot think of, and I wouldn’t mention, and actually I would love to hear if anybody is listening and wants to share, whether it’s on Twitter, whether it’s on Slack; please share more tips. My biggest thing - the thing that I do that seems to help the most is to say “No questions.” And then this is so much less intimidating.
And then sometimes people would say “No, I’m actually fine with questions”, and then this is okay. But when you ask somebody new to give a talk, I think one of the bigger fears is like “They’re gonna know that I have no idea what am I doing.”
So if you create this safer space by saying you only talk and do exactly what you have rehearsed, and nobody will ask you about anything else, that’s completely fine. And this helps people relax a little bit.
[28:10] I just think Q&A sessions are usually a pretty terrible idea overall, because it’s like, someone has rehearsed and prepared this material, and now you’re just like throwing whatever question out of left field at them, and it’s like “Oh! I haven’t thought about this at all, so I don’t have a good, coherent response to this, so I’m just gonna babble for two minutes until I get the next question.” So I think that not having questions is good in a multitude of ways.
Yeah. And it’s nice to think of that, remember that from the other side as well, if you are asking a question. Sometimes – and I think it just happens by accident, if I’m honest… But sometimes the question is either loaded, it encodes somehow something that either wasn’t covered, or is a gap, they’ve noticed a gap in the speaker’s knowledge… Which I think is quite natural in a conversation, that’s sort of normal, but that can be quite detrimental.
We have to be careful and bear that in mind when we’re asking questions as well. In fact, the U.K. GopherCon (GopherCon U.K. it’s called; I call it the U.K. GopherCon), they don’t take questions. It’s like, no questions in the whole conference; it’s just a thing. And if you want to have a conversation, you sort of use the networking time to go and find people to do that. And it’s quite nice, because it does encourage people.
I also see a lot of people giving talks where English isn’t their first language as well… And this impresses me tremendously, because I can’t even really get my head around what that would be like for people. But are there any other tips for people in that situation, where you’re giving not only a complicated technical presentation, but you’re doing it in a different language?
As a violinist, what I’m gonna say is rehearse, rehearse, rehearse… Play the talk. Do a pretend presentation at home. Don’t just look at the slides and think about what you’re gonna say, because performance is all about muscle memory. So say the words out loud. Go over the talk many times, saying the words out loud. Maybe if you have the stomach for it - and some people don’t - record it and then look back and see “Oh, this part I got my ideas all jumbled together. How do I explain this better?” And just rehearse. Because at the end of the day, you can give a talk from a natural standpoint if you’re comfortable with that language. If you’re not, then it’s gonna be a performance, and then you should rehearse for it like any performance.
Just do the thing a few times until you’re physically comfortable doing it. After a few times, your body is gonna have developed the muscle memory. It’s just like playing an instrument. And then you’re gonna be able to do it on command. It’s gonna become second-nature. And you just do that for your first three talks, for example, in English let’s say, and then the fourth one you’re gonna be like “Yeah, I’ve kind of got my way around this.” But the first few times you need to rehearse.
Yeah. You can’t just turn up to the orchestra with your violin and like [31:19] I can’t play. I should have learned this. Sorry, everyone.”
That happens way more often than you’d think. I’ve played in an orchestra… [laughs]
It sounds like Natalie’s cat. Sorry.
[laughs] I feel like that advice is applicable even to people where English is their first language… Especially the first couple of times you give a talk. I think people don’t – it takes a while to acclimate to how much you can fit into a talk and how you should structure it.
[31:57] I remember when I first started speaking, the company I was working for had this speaking coach that would help everybody with their talks… And one of the things that he said to me that’s stuck with me is that in a 45-minute talk you have enough time to really cover three things. So pick the three things that you’re gonna cover, and form the whole talk around those things.
I think what usually winds up happening with people in their first talk is they just try and shove too much stuff into it, and because you know it so well, you’re just like “Well, it shouldn’t take that long to discuss this topic, so I’m just gonna fly through it.” And it’s like, no, you have to convey all of this information to another person, so you have to actually build up a lot of stuff around it.
I definitely feel with my GopherCon talks this year – I think I would have given it differently if it was on stage. I think I packed a little bit too much stuff into it. But I remember just watching it and being like “Oh my God, I’m talking so slow. People are gonna get so bored.” And there were all of these messages flying in Discord being like “Oh my God, I have to watch this again, because I think I missed some things.”
So I think that’s a really important thing to remember - your audience is hearing this for the first time, and processing it as you’re talking… So you who has practiced and knows this subject well, you’re going to understand things much quicker than your audience is… So make sure to give space.
Yeah. That’s great.
I’ve made that mistake a hundred times. Most of my most popular talks were about “Oh, the state of Kubernetes development tooling, where I talk about 20 different tools.” And then you have to explain in nuance, like okay, why is this different from the other one etc. By the end of the talk, everyone’s exhausted. People like the content because it’s useful, but it’s very exhausting.
I’ve also given a talk that was like “How to write a neural network from scratch”, and I could have made it a lightning talk, where I just go on stage, don’t say anything, and just type out the code. That would have been fine. But explaining all the concepts and why they work - it’s too many things. I think I’ve presented that talk five times, and only on the last time I felt that most people in the audience actually got it… Because you’re just bombarding people with information, and… It’s like you said, Kris - we know the subject, we have rehearsed this; for us it’s perfectly clear. But when you need to make someone understand it, that takes so much energy.
I think everyone has tried to explain more things than they should in a talk. I certainly have.
I understand how it happens, because you want to give such value, really. And you also want it to be complete, ideally, because then it stands alone as a thing that is very comprehensive. But I think it’s great advice, and it’s kind of like almost – kind of less is more sort of philosophy as well. So I’ve seen the same, and I’ve also done it for sure myself.
Sometimes when I – and I don’t know if you have any tips for this… Sometimes when I give a talk, I’ll do a joke, and then I think it’s out of respect, the audience is just silent. [crickets] How do you fix that? Any tips?
Tell better jokes…
I kind of feel like you have to, at the start of your talk or in the beginning, make it known that you’re going to be expecting that type of interaction… Because I think in talks, people are really just trying to concentrate on what you’re saying, and absorb all the information/knowledge and maybe take notes, so they’re not really sure if what you said or anything you’re saying is meant to be funny… So like “Oh, we don’t wanna laugh at something and then potentially insult the person.” But if you start right off the bat, and you’re like – you start off telling a joke from the beginning, then it kind of adjusts the audience to be like “Oh, this dude’s funny. Now we can all feel like we can laugh.”
That’s really interesting, and I’ve definitely experienced that. And Kris, you’re a writer, so that kind of fits naturally for you… But you’re dead right; you find at conferences – if someone says a joke at a conference, the sorts of jokes that get the best laughs are not really that funny. They usually are just sort of safe, and everyone knows it’s humor.
[36:23] They’ll say “Oh, don’t worry about this code. I probably wrote it on a Monday.” That will get a big laugh, because everyone’s like “Yeah, I remember Mondays! They’re rubbish! You write bad code on Mondays, because you’re tired, or hung-over still.” But yeah, if you say other things that people aren’t expecting, it’s exactly that experience; people don’t know what to do. That is the story of my life.
I think the secrets to telling jokes is they have to be really bad jokes…
I thought I had that nailed.
I mean, your jokes are medium, that’s the problem. You can’t have medium jokes. The thing is, if you do a really smart joke, half the people are not gonna get it, and some of the people will. So if you’re gonna do a really smart joke, then just keep the same voice tone. Don’t do the whole jokey thing. Just say the things, and people who get it are gonna laugh, people who don’t get it - they’re not gonna say anything.
If you want everyone to be engaged with the joke, it needs to be a really bad, a really obvious joke, and you need to be kind of a clown about it…
Yeah, that’s true.
…or else, people are just gonna be confused.
It’s inclusive, isn’t it?
Bad jokes are kind of more inclusive.
We have these festive Christmas crackers in the U.K. I don’t know if you have them elsewhere… And they’re basically like – they’re weird, if you’ve never seen them… But what we do is we pull them at Christmas and they make a little bang, and they just rip in half. And they’ve got little toys and things and all sorts in there… And someone will win when you break it in half. And they always come with a little joke, and they’re always terrible jokes. And there’s a theory that it’s deliberately so, and you can almost unite together against this terrible joke.
I’m trying to imagine what it is you’re describing. It sounds like a mix between a piñata and a fortune cookie…
Yeah, it kind of is, yeah.
I was thinking of piñatas as well.
At first I thought you meant like crackers, and I was like “Oh, he’s British. He probably means something else.”
Yeah. We do have crackers though.
I thought of Kinder eggs.
Yeah, Kinder eggs… Which are illegal in America, I think. But guns are fine. So back to the different languages, and things… No, but Kinder eggs are – you know, it’s meant to be a Kinder surprise; every time it’s a little plastic toy. Do you know what I mean?
One time I just wanna open it and be like “Huh!” And have an actual surprise. I thought you said bad jokes were [unintelligible 00:39:02.02]
See, this is not bad enough. This was a medium joke.
Oh, that is a bad insult, that your jokes are medium.
The Monday one was perfect.
Yeah, the Monday one, exactly. I’m not gonna tell that; I’m not gonna say that Monday joke. It’s office humor.
And it’s not inclusive. Not everybody starts their week on Monday.
Good point, yeah. Some people – well, when do they start it?
So they’re like “I’m already warmed up by Monday.”
Yeah, Monday is like a Tuesday.
Some people have weekends that are Friday-Saturday.
Hm. Okay. No, it’s fair; it’s all good stuff, good learning for me. I’m gonna go back and watch my talks now and I’m gonna have a lot more clarity on what’s happening, and it’s gonna change things for me.
When you do those rehearsals, you can also practice on the jokes.
I think once you heard something several times, you can start building jokes around it in your mind.
Comedy is like a whole other discipline, too. So you shouldn’t expect to be a really great comedian and a good software engineer and a good public speaker… Unless you train and practice at them a lot.
I do. Kris – no, obviously not… I would say good things, if that happened… Kris, you were talking about your first talk, and stuff… It’s interesting… Natalie, do you remember the first talk you gave, and what language it was in?
Yes, the first conference talk I ever gave was at GopherCon U.K.
When was that?
Golang U.K. it was called at the time.
Yeah… Was it? I saw that talk.
I guess you did, yeah.
It was in the U.K, wasn’t it?
It was in the U.K. [laughter]
That’s right, I remember it. How did it go, from your point of view?
A crazy rush of adrenaline. That’s all I remember from it. But obviously, I liked it, so I kept doing it… In a good way.
Yeah. It was very good, and it is still available on the internet, for anyone…
I thought it was good. L, do you remember your first talk?
Yeah, I went to GopherCon Brazil at some point, and there I met someone who was running the Python meetups in my city… And I don’t remember how the conversation went, but she was like “Hey, do you wanna give a talk at my meetup?” and I was like “What?” And she was like “Oh yeah, you sound fun. Do you wanna just give a talk about whatever?” I was like “Oh yeah, okay. I can do that.”
So I gave a talk about getting started in tech, because that’s what I was doing, so I just compiled all the best tips and tricks that I had come across at that time. I told a little bit about my story, and I was about to start on my first internship, writing code on Kube Control with Kubernetes. I think that was kind of impressive, and that’s why people liked it so much.
I thought it was just medium, but…
No, Medium is where she published the content. [laughter] See, that was a bad joke. Everybody laughs.
No, that’s definitely a medium joke. That’s literally a medium joke. [laughter] Brilliant.
Yeah. No, I presented that talk, it was very well-received. After that, I was thinking “Hm. I wish there was a job I could do where I just do talks all the time.” And I think it was six months later I got a job to do that all the time, so that was fun.
Nice! Wow. That’s quick. Have you ever done a talk in not-English?
Yes, the first few talks I gave were in Portuguese.
Hm. So how is the experience different for you? Is it different?
For me it’s kind of the same, because I’m quite comfortable with English. I think my humor is not as good, because there’s a lot of nuance that you just don’t know if it’s not your first language… But in Portuguese I get really confused with the tech terms; the same thing as we talked about in the Go videos - I just have no clue how to say the things in Portuguese, and then I just say them in English, and everyone is find with that… So I suppose that’s okay.
What about you, Natalie? Have you given a talk in not-English before?
I have given one talk in Hebrew. That was in GopherCon Israel 2019.
Where and when was that?
I think it was the first GopherCon in Israel. It took place in Tel Aviv.
How did it go? What was the experience like? Is it different?
I think I was the only person in the crowd who gave a talk in Hebrew, so that was funky…
[43:51] No, I’m kidding. There probably have been two more talks in Hebrew, but almost all of the talks were actually in English, and not just because they were international speakers. Even local speakers spoke in English. I left Israel right after university, so I’ve never properly been in the tech scene. I was working there as a student in Intel, and as a student you don’t go to conferences as much as you go as a full-time person, I would say… And I had no idea that in Israel you speak mostly English in conferences, or give talks mostly in English, even though the crowd is mostly Hebrew speakers and your job is mostly in Hebrew. But English is a very common – most people who are in tech do know English in a good level, so that makes sense looking back at it.
That’s really interesting. Obviously, it’s kind of easier for people where English is the first language… Is there anything that you wish that we could do better when it comes to interacting with people where English isn’t their first language? Are there any requests that you might have, that we could do to make things easier?
You say “we” as English speakers, as people who are native?
I’m representing all English native speakers in this.
English U.K. and U.S.?
Yeah. And South Africa, and Australia, and New Zealand.
Oh, if you wanna make my life easier, please speak in a South-African accent.
No, I can’t do that. I don’t know how to do it. [unintelligible 00:45:29.26] Sorry everyone from South Africa.
I think it’s always very hard to find a balance between making the person who’s not a native English speaker feel comfortable with saying “I don’t know what this word means”, and also not being too patronizing with explaining everything. So do your best and try to be the person; because sometimes I would be too shy to say “I don’t know what that word means”, but the entire conversation is around it, and it’s two sentences in, and it’s too late to ask, but from those two sentences I could not gauge the meaning.
But also saying “I know what that means” is a little unpleasant during conversations. So yeah, it’s hard to find the balance with different people, and even with the same person… So being mindful is probably the best that I have. Ellen, how would you? What is your tip?
I think for content that is meant to be consumed by an international audience – the trickiest thing about English, in my opinion, and at least in the opinions of lots of people, is idioms. English is a language full of indirections, and idioms that don’t really make sense. You can put it on Google Translate, you’re not gonna figure out what it means.
I’m gonna iron this out.
Yes, exactly. That makes no sense. Who the hell knows what that means…? Even if you understand the individual words, you can’t grasp the meaning. So if you look at – also, there’s a lot of words in English. There’s a lot of unnecessary words. So if you look at how Russian is structured, for example, every word means one thing, and they’re all important parts of the sentence, end of story, period. In English it’s like you’re at the dinner table and you don’t just say “Give salt”, you say “Would you please pass me the salt, something-something etc.” and then the sentence is this big, and it could have been two words.
Well, it would feel really rude if you just said “Give salt.”
You could say “Give salt, please.”
“Give salt, please.”
You can say “Salt, please.”
Actually, it depends how you say it.
So I think keeping in mind for content that is meant for an international audience that English is not a very friendly language for outsiders, and just using language like – use words that you can translate, for example. If the individual words make no sense, use words that do. If you’re gonna use this crazy idiom like some expression that came in the 1800s and nobody knows what it means anymore, just simply go to Wikipedia and find the better words to say that.
We’re never gonna have a world where everyone speaks English, I think… But we have tools. At least make it so that people can use tools to figure things out.
[48:26] Yeah. I think that’s great. I think spit on a shark, and the eggs are left blue. And I think that sums it up brilliantly, as you’ve said.
You’re putting us in a pickle.
Oh yeah, in a pickle… Tell me an idiom from Brazil, L. Usually, they are funny. I work with David Hernandez, who’s Spanish… He tells me Spanish ones all the time, and they’re just kind of great when he translates them. Of course, it makes sense, for whatever reason historically… But just the direct translation just doesn’t – so I always like to learn more of them.
Yeah, I can’t remember any on command like that.
Oh, I’m sorry. It wasn’t a command… It was a request.
Yeah. What about Saci Pererê? What can you tell us about Saci Pererê?
Saci Pererê is a mythical creature from Brazilian folklore. I don’t know where it originates from… Saci Pererê is like this black young boy who has only one leg, and a red… What’s the thing that you put on your head? A red…
Yes, a red hat. And I forgot what he does; there’s something about spitting fire, or something like that. It’s many years ago that I learned that.
Yeah. But you wouldn’t put that in a talk, if it was for an international audience, I suppose.
Yeah, probably not.
Maybe you could. It’d be interesting to weave them in. What about you, Natalie? Can you think of any?
Yeah. As Ellen was describing the creature, I remembered a mythical German creature that translates to “egg laying wool milk sheep.”
It sounds like the president doing an IQ test.
Eierlegende Wollmilchsau. And that is something that does everything; not just checks all the criteria, but literally does everything you can think of.”
It’s all the farm animals in one. It lays eggs, it has wool, it has milk, and it’s a pig.
Oh, that’s a great one. I like that one. Can you think of an American one, Kris?
An American idiom?
Like L said, not on command… [laughs]
Again, it was a request.
Oh, so I have a favorite – so there’s one that I learned playing Grand Theft Auto San Andreas, and it’s like “Does the Pope poop in the woods?” And it took me years to figure out what the hell that meant.
Yeah, that is definitely a strange one, isn’t it?
Oh, John brought up in the chat “Jack of all trades.” That’s a U.S-centric one. And kitchen sink, yes. Or “Don’t throw the baby out with the bathwater.” I think that one’s used a lot in tech, too.
Speaking of that, I think it’s a great point you were raising, Kris - many teams are international. And none of them [unintelligible 00:51:48.00] when you use too many of that, this can also be a little off-putting for international members that might be in the good not understanding, and in the bad case also a little shy about saying “What?” So being mindful about that.
[52:07] I think even in – and maybe this is part of what also makes tech as an industry rather unapproachable for even people that live in America… We don’t really recognize the other dialects of English that exist even within America as a country, and how different they are, and how different all of the idioms are. I context-switch automatically, depending on the group I’m talking to, and the set of words that I’ll use shifts. And I feel like there’s definitely a set of words that I use when I go to work and I’m talking with people; I would never use those words if I was hanging out with my friends. Anything like that is also a barrier to entry as well. We have very specific types of concepts that we have in software engineering in Go, and then on top of that we also have assumed other things about the nature of what normative is… Whether that’s heteronormativity, or race normativity, or whatever.
Yeah, that is really interesting.
I was surprised, because usually – as I said, computer science is kind of U.S. English, so I was quite surprised that there are message queues, and you call it a queue. Because a queue here is a line; you know, when you all line up behind each other. That’s a queue, which has the most amount of unnecessary letters. I mean, literally, the first letter is Q, you know what I mean? That one could do with some compression, I think… But again, the Queen has stopped returning my letters… But that’s what’s strange.
How does that sound to you, Kris, when you first came across the concept of a queue? Do you know what that was?
I think it made sense to me, even though we don’t use queue for line… But that also could be because I’m a writing person, or writing major, so I have come across different ways of expressing things… But that’s another part of it too, the grammar policing that can happen around small subtleties, like – I don’t know, do you stand in a line, or do you stand on a line?
But to get back to your original question - I don’t know, queue didn’t seem that odd to me when I first encountered it. But I think I was also learning about a new concept, so I didn’t have a “Oh yeah, this obviously should be something else, or we should call it like a line instead of a queue. That didn’t really occur to me.
Yeah, that makes sense. If you learn a new concept and it comes with its own word that you’ve also not heard before… That kind of happens all the time, I guess.
[56:01] And I feel like software engineering also just has a long legacy of really weird things. I was talking to my dad over Thanksgiving; we were talking about programming languages, and he was looking at some Go… He’s like “This looks just like C”, and he’s talking about how he writes Ada, and assembler… And he said to me, “Yeah, do you know why we use i for the variable in for loops?” I was like “I don’t know… Index? I’m not really sure.” He’s like “No. Because in Fortran, i through this letter (I don’t remember what letter) were all integers.” That was like the first integer, and that’s why you keep going.
And I was like “Oh. That’s why it’s like i, j… Okay, this makes sense now.” But I don’t know; no one that wasn’t doing programming when Fortran was around is gonna remember that sort of thing.
So there’s all these historic things that exist within software engineering. Even when you try and back-track “Oh, how would we come up with this?” and you’re just like completely wrong…
Yeah… Like, why is a bug called a bug? Even that.
Oh, because I think literally in the beginning bugs were getting in the computer.
But I think everyone was slightly fascinated when they first learned that origin story.
I find it confusing that different languages have a different structure for the for loop. Do you first hit the limit, or do you first increase…?
Yeah, I quite like Go’s for. We really have that; that’s the only way you do loops in Go. That’s quite rare, isn’t it? Most languages have while… There’s a few more.
There’s also range, which I never use, because I always use for, but I suppose someone uses range sometimes…
I always use range. You don’t use range?
No, hardly ever.
Well, you do a proper, old-school for loop.
How do you consume from a channel in a loop if you don’t use range?
Yeah, for a channel yeah. But if you’re iterating over a bunch of… What’s that called?
Like a slice?
Yes, a slice.
Yeah, someone on Twitter was talking earlier about slice in Polish, and saying that when you translate the word “array” into Polish, it completely makes sense. But slice doesn’t. It’s a word, but conceptually it doesn’t help at all. So that’s interesting, to hear about how things – I suppose the slice makes sense, because we in English do a slice of something; we know what that means.
Is the word slice used in any other context other than food in English? Because in Portuguese you only use the word slice for food, basically…
Yeah, I don’t think so…
I think you can use it outside of food…
Like what? Can you do one?
I think it’s more of like a synonym for sliver, or like a bit… Oh yeah, Charlotte says golf. I don’t play golf, so…
Oh yeah, I think it is a golf term. But also, if you took a tiny bit of your finger off, you might say “I’ve sliced my finger off”, but you’re still slicing… And it could still be food, depending on…
Yeah. And I also think even if you are someone that programs, slice in Go basically being what arrays are in other languages, and array being something else, it’s also very confusing for people.
Yeah. I had a friend who was learning Go, and that was a sticking point. They didn’t get the difference between an array and a slice. And that was a shame, because – I told him really “Just learn about slices. Forget arrays for now.” But yeah, that is a shame. But it is interesting, these different ideas…
But again, if a new concept comes out and it’s called a flimp, then you’d be like “A flimd? What do you mean?” I’ve even got it wrong already.
[01:00:22.01] I mean, even explaining go fmt to people is really complicated, because how the heck do you even pronounce that word? We don’t know how to pronounce it right in English.
go fmt, you’ve just pronounced it.
Sure, but it’s not the most intuitive thing in the world. If you’re not a Go programmer, you’re gonna look at that and you’re gonna be like “What?!” And in Portuguese, how the hell should I just make something up for how the pronunciation should be?
How do you pronounce that, if you had to pronounce fmt in Portuguese? What would it come out as? Because I think that’s what “fumt” is.
Yeah, something like “fumch”, I don’t know. It’s slightly different. You put a little e at the end, to be like “fumche”. But it makes zero sense; it’s even weirder in Portuguese than it is in English, so I would always just pronounce it in English… But it’s just awkward.
I feel like that’s kine of like cuttle, or control, or however you wanna pronounce ctl, anything with a ctl in it. But another thing that came up in my conversations with my dad is that I kept using bite, as [unintelligible 01:01:31.04] and he kept saying word, and I had to keep translating, because I’m like “Oh, word. Right. You write C, and that’s like a concept there, of like word size.”
But I feel like we’ve been doing this really weird stuff with words in computer science, like bite itself, or nibble, which is actually a thing, too…
But even word is the worst one of all, because it varies by platform. So the minute you get used to it, you switch to a different thing, and then there it means something else. It’s just the worst concept.
Well, technically in Go int changes depending on what you build it for; the size of it anyway.
Okay, well this has been excellent. Unfortunately, time has moved ahead of the usual rate, and now it’s run out, essentially… But this has been awesome, so thanks so much for hanging out, Natalie, Kris, L. You have to come back, L, sometime, and join us and talk about some other bits and pieces, if that’s alright.
I’ll think about it.
Yeah, you don’t have to commit now.
What, no unpopular opinions this week?
Oh yeah, I forgot. I can’t believe it. Okay, let’s do it quick! It’s time for Unpopular Opinions.
Okay, who’s gonna kick us off with the first unpopular opinion?
I can go ahead.
My unpopular opinion is that when you teach somebody how to write code, especially if it’s in languages where you say that things should be very clear, like in Go, it’s fine not to insist on good variable names and good documentation, because sometimes you don’t fully understand what it does. You can always tell them “Just start” and then go back to it. You don’t need the perfect title when you write something. Right, Kris?
Yeah, perfection is often the enemy of progress. You’d rather get something done. And often, in that process, when you’re doing it, that’s where you learn so much, isn’t it?
And then maybe something will make sense also, and then you can always come back. Because I hear so much about Go, that you need to make it clear, and you have to have good variable names, and clear function names… It’s fine not to have this in the beginning. It’s fine to have this even after you make a pull request.
I think that’s really brilliant. I sometimes create something and I’ll just call it “thing”, because I don’t know what this is yet.
I feel like that’s not that unpopular though… We will test this.
Hey, you said that last time. I will really have to work hard now for the next one.
Oh, I think I have one that is probably unpopular now, but at least controversial… I think $GOPATH was a very good thing, and I like it.
Yeah, that one is gonna get an interesting reaction. I know what you mean… Yeah. It was weird, but once you knew it, it was very easy then, wasn’t it?
It’s like I always knew where all my code was. I didn’t have to think about where to put it; I don’t have to like, with modules I have like this directory that’s all a mish-mash of things, and I lose code all the time… It’s like, there was something I really loved about $GOPATH.
We will test these on our Twitter account @GoTimeFM, so please follow along. L, do you have an unpopular opinion?
Yeah, so I was thinking of one, and Mat said it didn’t have to be related to tech…
And he also said it could not be about his hairline.
Also true. I also said don’t mention that last bit as well, but two out of three ain’t bad.
No, you didn’t say that; you just said it could not be about that.
Fair enough. Go on then.
So my unpopular opinion is that maybe 2020 isn’t that bad. I think it’s one of those moments where it feels really bad as it’s happening, but looking back, it might turn out to be something good. It’s like that moment – we have a writer here… So it’s that dark night of the soul moment; it’s that time when things look terrible, but that is what needs to happen for things to get better later. So maybe I’m being optimistic… I probably am being optimistic, but…
That’s very nice.
…that’s my hope, that all the stuff that’s going on is gonna turn into something better in the future.
There is another way that 2020 could look brilliant… It’s if 2021 is even worse. So that’s a less optimistic way that that could also be true. Hopefully not. L, it’s nice to hear you being optimistic. Thanks for that.
Yeah. I’m sorry, it’s a bit out of character.
A little bit off-brand, yeah. We’ll probably get letters, but… That’s probably an idiom that I shouldn’t use. No. Is it? I don’t know.
Yeah. It just literally means you’re gonna receive letters, so I think we’re safe with that.
I guess one good thing about 2020 is that the idiom of “avoid it like the plague” can probably just go out of fashion, because it turns out that people just don’t really avoid plagues.
Yeah… Maybe we’re gonna start using it the other way around.
Embrace it like the plague? [laughs]
Avoid it like in a plague. Like when you avoid people for social distancing.
Avoid it like a mask. There we go.
Not in every country, but in ours, Kris.
I think every country is a little ashamed.
Mat, do you have an unpopular opinion?
No, because normally I’m just the one that asks them. Oh, here’s one - I shouldn’t have to do an unpopular opinion.
Okay, we’re done, Mat. We’re done here.
Yeah. No, I do have an unpopular opinion, actually. I genuinely don’t wanna say it, that’s the thing. I genuinely don’t. Because I have to now; I’m doing it, aren’t I? I can’t not do it now, can I? Maybe I could just not say it. No, I can’t say it.
If you don’t say it, I’m gonna click Unsubscribe right now.
On what? [laughs] What does that do?
I don’t know…
Yeah, I’ve actually genuinely decided it’s in my best interest not to say it.
It was probably something like he thinks his jokes are funny.
Yeah, I’m not even that stupid. I know they’re not. I can tell by the silence after I’ve said it. Thank you very much. It’s deafening, as they say. That’s a nice one, ain’t it? Silence is deafening. There you go, there’s one. Although that’s a nice one, isn’t it? The silence is deafening. I feel like if you translated that, it’d be okay.
I feel like that doesn’t make any sense, but we all–
It’s technically incorrect.
Why? Well, it’s metaphorical, I guess.
Silence does not make you deaf.
No, but it’s like, it was so profound, the silence. I mean, go watch one of my talks…
Darkness will make you go blind, but silence doesn’t make you go deaf. So it should be like darkness that’s blinding, or whatever. But we use blinding in the other way, like you shine light in someone’s face. None of these make any sense. Idioms are terrible. We should stop using them.
[laughs] Well, that’s another unpopular opinion. Okay, now our time really is up, but thank you so much to our great panel today. Natalie, Kris, L, please come back… And we’ll see you next time!
Our transcripts are open source on GitHub. Improvements are welcome. 💚