Senior Software Engineer at Netflix, Laurie Barth, talks to Relicans host Aisha Blake about approaching individual languages and/or frameworks in varied and interesting ways, learning things (going spec deep) because they’re interesting to her (i.e. Rust) and that when picking a new language to learn, the community most definitely matters.
Should you find a burning need to share your thoughts or rants about the show, please spray them at firstname.lastname@example.org. While you’re going to all the trouble of shipping us some bytes, please consider taking a moment to let us know what you’d like to hear on the show in the future. Despite the all-caps flaming you will receive in response, please know that we are sincerely interested in your feedback; we aim to appease. Follow us on the Twitters: @PolyglotShow.
Jonan Scheffler: Hello and welcome to Polyglot, proudly brought to you by New Relic's developer relations team, The Relicans. Polyglot is about software design. It's about looking beyond languages to the patterns and methods that we as developers use to do our best work. You can join us every week to hear from developers who have stories to share about what has worked for them and may have some opinions about how best to write quality software. We may not always agree, but we are certainly going to have fun, and we will always do our best to level up together. You can find the show notes for this episode and all of The Relicans podcasts on developer.newrelic.com/podcasts. Thank you so much for joining us. Enjoy the show.
Aisha Blake: Hello and welcome back to the Polyglot podcast. My name is Aisha Blake. And I am here with my good friend, Laurie Barth, who is here to talk to us a little bit about her journey as a polyglot. Thank you so much.
Laurie Barth: Yeah, I'm happy to be here. It's funny. I was thinking to myself, how many times can we say polyglot programmer in a row before it doesn't sound audible at all?
Aisha: [laughs] I started to say it, and I was like, I'm not going to try. I'm going to save it. I'm going to save it, and we'll come back.
Laurie: [laughs] It's not an easy word to say.
Aisha: Definitely not. So as a polyglot programmer...
Laurie: Polygot programer. No, see, I said polygot, not polyglot. See? I’m already screwing it up.
Laurie: I don't think I can call myself a polyglot programmer if I can't say it.
Aisha: You got it. Just don't think about it. Let it flow.
Laurie: Okay. Now I just let it go in my head. This is your fault. [singing] Let it go. Let it flow.
Aisha: So, if you wouldn't mind introducing yourself, who are you? What do you do?
Laurie: I'm Laurie. I'm a software engineer and, in my spare time, a technical educator. That's probably the two-sentence explanation of me as a human.
Aisha: I like that. That feels apt, yeah. You do have this really rich background as a programmer. And I'm interested to know a little bit about the breadth of what you've worked on.
Aisha: So, how do you feel like those things differ? What are some variations that you've noticed?
Aisha: I definitely feel that. My impression of you, I guess, is that you were one that dives deep into things. You mentioned a lot of stuff; that was a whole lot of different languages. I'm wondering how you approached each individual language or framework or whatever it was. Maybe that varies depending on how long am I going to be working on this? Is this a client project? Is this something that I'm doing because I have to? Is this something I need to be up and running with really quickly? What is your approach in general terms when you are beginning to learn a new language?
Laurie: So it absolutely varies, but I think it varies in interesting ways. So the best example of this is PHP. I knew I was going to be solving a specific problem in a specific codebase for a couple of months. So I didn't bother learning PHP. I looked up how to do the thing I wanted to do in PHP, which means I hated working with PHP, and that's not a knock against PHP. I never bothered to learn it. I was just like, do the thing I want to do in Java but do it in PHP, not a great way to use a language because you're fighting against what it's made to do. The functionality worked in the end. I wouldn't recommend it, but it worked because that was my task at the time. Other languages that I learned, like Java and Python, when I learned them in school, I was learning them much more from a computer science-y how do I write algorithms in this language perspective? Which when I went to use them in a working environment, was very different, honestly, way easier to use them in a working environment because you have existing patterns but way more complicated because it's not this cleanroom of an environment where you're running a single main method and nothing else matters.
I will say in more modern times, in my later career or currently where I am, if I need to learn something for work, my approach is to tackle it relative to that problem. If I'm learning something because I'm interested in it (Rust is probably the best example of that), I go spec deep. I'm like, I want to know what loops look like. I want to know what the data types are. I want to look at this holistically from how the language is parsed and compiled perspective, which is a thing that is actually relevant in Rust and isn't really relevant in other languages to a certain extent depending on the level of abstraction. But I will go in a very different direction. In fact, I basically just read docs. I literally look through spec docs of languages because I find it fun because I'm weird that way. But that's very different than something I need to learn to accomplish a specific task. If it's greenfield and I'm learning it just to learn it, very different approach.
Aisha: For sure. So what then would draw you to learn something totally greenfield like Rust? Let's jump into Rust. Let’s talk about Rust because the last time we had a conversation like this, we were on my Twitch channel. And we're meant to be talking about your TC39 work, which we should totally talk about here [laughs], and it turned into --
Laurie: But it turned into Rust.
Aisha: It turned into Rust. It turned into a conversation about Rust. So clearly, there's something there. It sounds like you're enjoying it. And to my knowledge, you're doing this because you want to.
Aisha: So what drew you to Rust? How has that learning process gone? What's gone into it, and also, what have you got out of it?
Aisha: Yes, I remember.
Aisha: Yeah, that is lovely, my goodness.
Laurie: Yes. They're delightful people.
Aisha: Honestly, I feel like I was talking about this earlier on in the podcast, but that's one of the things that I look for in a new language that I'm learning, honestly, is the community. Am I going to be able to get help if I need it? Am I going to make connections easily? Am I going to find the resources I'm looking for? If I run into questions, are there people around who know a lot about this thing that are going to be willing to share with me? And in most cases, to an extent, the answer is yes, but definitely to different extents.
Laurie: Yes. It absolutely varies. And this is unique for me because this is the first time I think ever that I'm picking up a language just because. I will not be using this language in my job anytime soon, to my knowledge. I have no side projects using this language. This is literally learning a language to learn a language because I think maybe in the future it might be useful. But I find it interesting. And that's a whole different world of how you decide whether this is worth learning and even what your resources are. In the past, when I've learned things, I've learned them at jobs. Granted, the sort of corollary to that is I've learned plenty of frameworks just to learn frameworks.
Laurie: I actually think that's really different, and people may disagree, but I think learning a framework versus learning a language is fundamentally different in my brain because when I learn a framework, I still have landmarks of the language. There are ways in which things integrate and functionality that I understand that needs to be there in order for the project to build, in order for the project to execute, in order for the browser to be able to look at my files. All of these different things around the framework I know have to happen. In a different language, none of those touchpoints are there. And so I start looking for other touchpoints. What is the for loop? What is the string type? How do I assign a variable? How do I make a function? That sort of thing. But even those primitives can vary quite a bit, and ownership in Rust is a perfect example of like, oh, that's not what I'm used to.
Aisha: Yeah. That's definitely something that I'm still working through. I just recently started learning Rust, and to your point about unique concepts, that is definitely a thing that has taken plenty of reading. [laughter]
Laurie: Right? Everyone reads the Rust book, and they're like, “Okay, well, this is a manual for life.”
Aisha: Yeah. It's been largely helpful so far. I did venture out recently because, similar to you, this is the only time in my life that I have just been like, you know what? This sounds interesting. I'm going to learn this language. And it’s been good so far. But what I want to do is really build something out of it. And so I attempted a Rust game tutorial; we did not get very far.
Laurie: That's still pretty cool.
Aisha: I have hope. And it's largely because of the community that I've experienced so far.
Aisha: It's true.
Laurie: And I think that differs across languages for sure. So Java, for example, has these really gnarly stack traces that when you first start coding it, you have no idea how to read them. And then, over time, you start recognizing that there's a bunch of form field gobbledygook in that stack trace that's getting spit out. But you can parse through, and you're like, oh, that's my function name, and that's my line number, and that's my variable. And so, over time, I think there are skills I learned from Java that have been transferable throughout my career. The main one is how to Google, specifically take whatever your error message is, look through it for anything you recognize from your specific codebase that you wrote yourself. If there is a function word that you wrote, if there is a variable name that you wrote, if there's a file name, delete those from the error message, insert them into Google, press enter. [chuckles]
Aisha: Yes, 100%. Where would we be without search engines? I mean, really, how would we do our jobs?
Laurie: I genuinely don't know. We're all just piecing together a patchwork quilt of all of these different people who have figured out how code works over time. [laughs]
Aisha: Exactly. Honestly, the thing that drew me to coding in the first place, one of them -- I think we've talked about the fact that I started via Neopets.
Laurie: As all of us should.
Laurie: So I definitely did some HTML and CSS in Neopets. I did some stuff in Myspace. I also did some stuff in LiveJournal. I think LiveJournal was the one that sort of sticks out in my brain.
Aisha: Yeah, and I love that. For some people, it's LiveJournal; for some people, it's Myspace; for some people, it’s Neopets.
Laurie: And for the current generation, it's Minecraft.
Aisha: Yeah. And for so many of us, there was this element of discovery. I certainly didn't even think about it as, oh, I could do this as a job one day. At that point, I was like, I'm totally going to be a stage actress. [laughter]
Laurie: Kudos. I never had that particular thought. All the years of musical theater, I was like, yeah, I'm not going to be able to make it. I've heard your voice. I understand why.
Aisha: [laughs] I've already forgotten what we were singing earlier. I know you were singing on my own when I abandoned you by accident.
Laurie: Yes. Oh, at the start of the podcast, you were singing, let it go.
Aisha: Oh, yes.
Laurie: Let it flow, specifically.
Aisha: Let it flow.
Laurie: Which is also a programming language. It's called Flow. It's what people have used instead of TypeScript. Though I think it's kind of fallen out of favor recently. I don't know, though. So don't quote me on that. Don't anyone get mad at me if they're like, “Flow is still very much a thing.”
Aisha: [laughs] I did not know that. I didn't know. There are so many; it’s wild.
Laurie: I don't know what you're talking about. Never heard of the language. Thanks for having me.
Aisha: [laughs] So I know that you are part of the TC39 Educators Committee. Do I have that right, Educators Committee?
Aisha: And I know we've tried this; the two of us have tried this before. But I would love to hear more about your work and what the committee does, how folks can get involved/benefit from the work that you're doing.
TC39 Educators Committee is sort of an offshoot of that which is designed to educate people not just about new features that have actually made it to stage four but about features that are up-and-coming that are currently being debated and being discussed. And the goal of doing this is that we want people who aren't necessarily as steeped into the minutia to be able to bring up use cases that weren't considered and have a say and have input into the future of the language. And so we write short write-ups trying to take these things out of the proposal-based language, which can be a little bit hard to parse depending on what your familiarity with it is, and moving it into a blog post that you would read explaining how to use optional chaining, for example. And yeah, that's what we do.
Aisha: Good example. I think I remember one such article about optional chaining.
Laurie: I actually don't think I wrote that one, but maybe I did. I don't remember. [laughs] There have been so many.
Aisha: I wonder if that's just a more approachable avenue for folks or if it's just like, I can have this now.
Aisha: Yeah. But that's true of a lot of languages.
Aisha: [laughs] Yeah.
Laurie: But I think that's great. I think that's really cool.
Aisha: Absolutely. I feel like I've seen a lot of that, just folks trying to orient themselves as the landscape changes. I liked the way that you phrased this “I go spec deep.” [laughter] What about that is powerful for you? What drives you to go spec deep when you're digging into a language?
Aisha: That makes a lot of sense, having this sort of blueprint that you can then apply to whatever you come across as you're actually trying to apply the language versus starting with that application and trying to sort of parse out the bits and pieces in relation to that.
Laurie: Yeah, absolutely.
Aisha: So in contrast then, what's an example of a time that you have not gone spec deep? And what did that look like?
Aisha: Yeah. To spend that time and energy into really understanding something that you're maybe not going to use that makes sense versus suffering short-term through just getting enough to get the job done.
Laurie: Yeah, absolutely. And I think this is a decision for every person individually within the context. And there are some people who couldn't skate by the seat of their pants the way I did with PHP, and that's cool. It doesn't work for everybody. But it didn't make sense for me to make the investment.
Aisha: I'm going to go with yes, but then I want my follow-up.
Laurie: And again, you can't discount that. You can't unravel that and disconnect that from the language at this point; it's all one and the same in my brain. It's the community that I am a part of that you're a part of. And for all its good and bad, it's something we know, and we appreciate, and we understand, and we've grown up with for a long time now.
Aisha: Yeah, absolutely. Well, we're coming up on time. And I want to thank you so much for doing this with me. I always enjoy our conversations in general.
Laurie: This was a very mellow version of us conversing. I didn't think we had it in us.
Aisha: [laughs] I'm proud of us. I think we did a great job.
Laurie: I think we did a great job too.
Aisha: So, is there anything that you want to shout out? And if you wouldn't mind, share where folks can find you on the internet.
Laurie: My shout-out is to find me on the internet. I like being found; it’s fun. And I'm Laurie on tech pretty much everywhere. I'm laurieontech on GitHub. I'm @laurieontech Twitter. I don't do Instagram, so sorry. I’m laurieontech on NPM. I mean, I'm laurieontech everywhere. So it's well-branded and consistent.
Aisha: For sure. Awesome. Thank you again so much. I had a great time. This is but one of three Relicans/New Relic podcasts that we are putting out, and you can find those at developer.newrelic.com/podcast. You can also find us on Twitch. We stream at New_Relic as well as on our individual Twitch channels. There's a team of 10 of us who are altogether just putting out all kinds of fun and interesting content. It's a good time. So, hopefully, y'all will join us there as well. Thank you again so much to my friend, Laurie Barth. I appreciate you coming to talk to us about your journey.
Laurie: Thanks for having me.
Jonan: Thank you so much for joining us. We really appreciate it. You can find the show notes for this episode along with all of the rest of The Relicans podcasts on therelicans.com. In fact, most anything The Relicans get up to online will be on that site. You'll also find news there of FutureStack, our upcoming conference here at New Relic. We would love to have you join us. We'll see you next week. Take care.