This site runs best with JavaScript enabled.
Listen on Apple Podcasts AppleListen on Google Podcasts GoogleListen on Spotify SpotifySubscribe via RSS RSS

Jen Luker Chats With Kent About Finding Inspiration From Anywhere

Jenn Luker chats with Kent about how you can become a better programmer by pursuing interest that seem unrelated to computing.

Jen puts knitting before the fact that she is a senior software engineer when she defines who she is; this doesn't make her a worse engineer than someone who eats, sleeps, and breathes code.

With each new thing you learn, whether you're good or bad at it, you'll tend to discover something about it that teaches you something new. With everything Jen learns, she tries to bring it back into the ways she interacts with the world, whether that's through some art medium or programming.

Technological progress has been an evolving process of standing on the shoulders of giants, one after another, learning how to take something they'd seen before and applied it to some new technology or new problem they were working on at the moment.

The short version is that you can find inspiration virtually anywhere, and not to close off those points of inspiration just because you're focusing on a computing problem.

Homework

  • Jen Luker

    Jen Luker


    Transcript

    Kent C. Dodds: Hello, friends. This is your friend KenT C. Dodds, and I'm joined by my friend Jen Luker. Say, "Hi," Jen.

    Jen Luker: Hello, everyone.

    Kent C. Dodds: Jen is joining us from the comfort of her seat and her knitting needles and she's knitting away at something. What's the project you're working on right now, Jen?

    Jen Luker: I'm actually working on a pullover, but I haven't quite figured out the message I'm going to code into it yet.

    Kent C. Dodds: What do you mean by message you're going to code into it?

    Jen Luker: I like to take messages and convert them to binary and then convert the binary to knitting stitches and knit them into my knitting. So each of my pieces tends to have some sort of meaning. I have a sweater that I coded the names of the two first conferences that allowed me to speak. I have a poem in a scarf. I have empowering messages in what essentially amounts to a bralette. So I try to put various messages mostly to me in my knitting. It gives it more of a deeper meaning than just in handmade hours and hours spent knitted thing.

    Kent C. Dodds: Well, I mean there's, there's plenty of meaning in a handmade hours and hours knit thing, but that is really awesome that you are able to do that. Jen, that is one aspect of you, your knitting. It's definitely for anybody who's getting to know you, it's one of the first things that they learn about you, I'd say. What are some other things that you'd like to share with the audience about? Just us who are trying to get to know you a bit.

    Jen Luker: I'm a mom. I'm a wife. I definitely put knitting in front of the fact that I'm a senior software engineer. I have been programming for as almost as long as I can remember. Let's see. I was the president for the Students for the Exploration and Development of Space in college. They tend to do things like work across department to build things for SpaceX prizes or trying to further the ability for people to live in space.

    Kent C. Dodds: Cool.

    Jen Luker: So I'm pretty much a space junkie and I really enjoy vintage cars like 1960 and before. I also like to dabble in IOT. So it's basically just a mix and match and bits and pieces of vintage and modern and everything in between.

    Kent C. Dodds: Yeah. Wow. You have quite a diverse set of interests there. That's very cool. What is it about you, I guess that makes you so interested in a variety of things like that?

    Jen Luker: Well, part of it is the ADHD. It's really hard to focus one thing at any given time. Two, is I find that with each new thing that I learn each new thing that I try, whether I'm good at it or bad at it, I tend to discover something about it that teaches me something new. In that, I mean besides the fact that learning how to knit teaches you how to knit, like learning how to knit made it easier for me to learn how to code. Learning how to remake books gave me a deeper appreciation for not only book making, but also the written word and how much went into developing books when they were early and new, and how much that opened up the world to new knowledge and how that's led to the web and how we use it and how we could use it, new ideas, new inspirations, new ways of sharing that information. With everything I learn, I tried to kind of bring it back into the ways that I interact with the world, whether that's through a different art medium or whether that's through programming.

    Kent C. Dodds: Yeah, I think that's great. Actually, that's kind of what we're going to talk about a little bit today is how your other interests can inform the inspiration that you gain for solving the problems that you are having. Right?

    Jen Luker: Absolutely.

    Kent C. Dodds: So you gave a talk at React Rally. At the time this is published, I actually don't have a date when this will be published, but it certainly will be in the past because it's in the past today and probably, that talk will be available for people to watch by then. So which of course I recommend people to look into it because it's quite interesting. The talk is kind of a history of knitting or the loom and what impact that makes, or what impact that actually made on computing. Do you want to talk a little bit about that? In particular, I'm interested to know how you were able to make that connection and how that changes the way that you think about solving the problems that you have when you're programming.

    Jen Luker: People oftentimes hear about punch cards and they think of old pictures of trying to send people to space in the forties, fifties, sixties and even earlier. The last, the punch cards were retired essentially in the 90s, so we used them for quite a long time. What people may not know is that the inspiration for punch cards that IBM created were much further back in that those came from Ada Lovelace and Charles Babbage. And before them, Charles Babbage specifically took it from the Jacquard loom. Jacquard took it from a few other people that existed almost 50 years before him.
    So it's been this evolving process of standing on the shoulders of giants, one after another, after another, learning how to take something they'd seen before and apply it to some new technology or new problem they were working on at the moment. So I feel that's something that we do a lot of today. I unfortunately, think that most of the time we look at ourselves and say, "Well, somebody else did it. So it's not really mine. It's not something I've done. It's not something I can take credit for. It was really theirs." And I feel that yes, they developed something, but you've taken it one step further. Sometimes all it takes is that one step further to spark an innovation, to spark a new industry. So don't sell yourself short just because you're building on something that others have started.

    Kent C. Dodds: Yeah. That's wonderful. You also think about all of the different technologies that you never would have thought to pair CSS with JavaScript, for example. When you do, and this huge change comes upon the industry, when you just take two existing things or two existing abstractions and put them together in an interesting way.

    Jen Luker: Exactly. Back in the very, very early days of just HTML, when we got CSS, it was all in line and JavaScript was meant to do things like make blink text or Ajax calls. So we didn't have a lot of combination of those two things. It wasn't until we really started digging in and using JavaScript to modify CSS that it started to change how we develop the web. Then like you said, we continued to progress until we ended up with things like CSS and JS libraries that played a little bit better with our existing frameworks that we use on top of the foundations of still HTML, Vanilla JavaScript and CSS.

    Kent C. Dodds: Yeah, so you took a lot of inspiration from the loom. Well, and like the whole knitting realm in general, which is like, I mean there's the history there, but looking at the landscape today, there's very little related to knitting and computing at a practical level, I mean. Maybe there's the more similarities than than people might notice up front, but I'm thinking about how there are lots of different things in the world, lots of different interests that we can have that can have a surprising impact on how we solve problems with computers. Can you give us any insights around how you think that plays in where our interests should lie in and how we should think about our extracurricular activities to kind of build that bridge between these two worlds?

    Jen Luker: When it comes to solving problems, whether they be technical or otherwise, they all essentially come down to people problems, right? We're trying to solve a problem to make something easier for someone, whether it be you, or a client, or a user, but it does tend to go deeper than that in the... Let's go back to the loom for a moment. So if you go far enough behind Jacquard all the way down to the first time that paper was used program a loom, it was a gentleman by the name of Pusan and he looked at the papers that were left over after his father created what were essentially music boxes. What he'd do is he'd mark on these piece of paper where pins needed to be inserted into a wooden wheel so that he could make music at the right places and keeping with time. So it's essentially like a music sheet wrapped around a wheel.
    These leftover pieces of paper ended up looking very much like the piano machines that play themselves, but they also were the inspiration for punch cards. So being able to look at these things and say, "Okay, I really want to show off to, insert cute person you're interested in today, but I don't really know how to play the piano. So I'm going to figure out a way to make this piano play themselves." Random solutions. In the end, they all end up kind of coming down to people problems.

    Kent C. Dodds: Well, if we're not solving people problems, then what are we doing really? Right?

    Jen Luker: Right? So regardless of where you're coming from and what it is you're learning and what problems you're trying to solve, sometimes it takes a walk in the park or it takes sitting there and knitting and thinking about it. Sometimes it takes singing in the shower for a moment. Whatever it is, those different formats, the different ways of thinking about things, the different transitions and how your mind processes information can lend very well to other mediums. Knitting for instance, the way in which you read a knitting pattern is exactly the same as how you process for loops and do-whiles and if-elses. So the way that that functions are the same, it's just the syntax is different.
    Just the same as if you were trying to take JavaScript and PHP or C#. The syntax is different even though they do very similar functions essentially. So sometimes you can just look up in a tree and recognize that there's a whole bunch of items and come up with a tree sorting algorithm. There's different ways of utilizing other things and coming down to solving the problems that you're looking at. So that's the very long version. The short version is that you can find inspiration essentially anywhere, and not to close off those points of inspiration just because of the fact that you're focusing on a computing problem.

    Kent C. Dodds: I hear a lot of people when I ask them, "Okay, what are you into?" They say, "Well, I'm into programming." I don't hear a lot of this, but I do hear this occasionally, and this was true of myself years ago. I was just like, "So this is all I do. I hang out with my family, but I am just so into programming." And I was just like heads down on building whatever it was that I was building. What do you think people in those situations are missing by not diversifying their interests a little bit?

    Jen Luker: See, and I think that's a little bit of a conundrum on both sides. I think that there have been research studies that showed that one of the disagreements that some teachers had with the people coming into computer science degrees is they didn't eat, breathe, sleep code. They had other hobbies and stereotypically, there's plenty of exceptions. They found that men were more interested in the act of coding, whereas women were more interested in utilizing coding to solve problems. So one of them was, it was just the end and the other one was more of a means to the end, and because of that, men tended to be given more attention because it was assumed that they were majoring in computer science, whereas women on the other hand tended to not be given as much attention because it was assumed they were using computer science as a way to reach a completely different major.
    So at the same time though, I don't think that there's anything wrong with having programming be what you eat, breathe, and sleep. I just don't think it's the only path to excellence. I think that it is definitely a valid path. However, when you do that, you need to make sure that you're at least diversifying the types of languages you're learning or the types of libraries that you're interested in. I mean, even in the JavaScript world with Angular and Vue and Ember and and React and Vanilla and even earlier, Mootools and jQuery and Prototype, all of these, Backbone, a lot of these, Coffeescript. Anyway, so a lot of these learned from each other and it's not that any of them were necessarily angry and there wasn't any animosity. It was more like Ember came out with a CLI to install itself.
    Angular thought that was great and developed themselves the ability to install themselves with CLI, which then React developed and then Vue took as well. So just because it starts in one place, doesn't mean we can't use it somewhere else. When I learned React, it dramatically improved my JavaScript game.

    Kent C. Dodds: Yeah.

    Jen Luker: I started using some of the React programming patterns even in Vanilla JavaScript and it made things a lot cleaner. though I didn't have the library to base my decisions from, it did definitely improve the cleanliness and efficiency and readability of my code. Even if you do eat, sleep, breathe code, there's ways to diversify and get yourself outside of the box in which you live so that you can find those inspirations, find what other languages do better, find what knitting can teach you or woodworking about the processes that you follow and how those processes could improve the code that you're working on right now.

    Kent C. Dodds: Yeah, yeah. I love that. There are so many things to be learned from these other languages and some of them are best kept in those other languages, but they can at least form the way that you're writing your code in your current experience in solving the problems that you have today. I know that when I started doing React, just playing around with it, I was actively using Angular and just the component model kind of changed the way that I started using Angular. These innovations, I love that you mentioned how they're not like innovations in isolation from each other, but they're actually working kind of from the same base and trying different things, experimenting and then these different abstractions learn from one another. So that's really awesome that we can learn from these different libraries and tools and I think that it's great for us to diversify our ourselves from a abstraction standpoint, whether that be a language or a library.
    But I think there are also a lot of good reasons to step away from coding every now and then and find other interests and look for ways that those other worldly or other world things can be applied to the problems or yeah, can be applied as solutions to the problems that we have in our current work and we can derive inspiration. Do you have any tips for somebody who is in a seemingly totally unrelated field or like hobby and identifying the areas of that hobby that are applicable to programming?

    Jen Luker: I think it'd be slightly more difficult for someone who's outside of the programming realm to apply it to a programming realm versus the other way around, someone who's at least in and familiar enough with it. A lot of it comes down I think, to process or procedure. When you are trying to loop through a list, for instance, you know to use some sort of loop. If you're like me, recursion was really, really hard, but you look at perhaps how you would have used recursion in, you know, for me it's oftentimes getting patterns. How do you represent that you need to go back and do this inside of something else for an unknown number of reasons or times? Or an assembly line, how that would work and start looking at how you would map that out.
    For me, I use a lot of flow charts. However, something like state machines would be a fantastic way of looking at those things. Look at the state machines that would apply to the other hobbies or to someone else who built something, whether it be a shelf or a tree. How would those be programmed? And start playing with those ideas and concepts. It's interesting if you dig deeper into even mathematical theory more than application of how you do in fact calculate, or how you see different phenomena in the world and how those can be applied. I loved the show numbers for that.

    Kent C. Dodds: Yeah. I think also that when you kind of diversify your interests, you can also make a better impact on the world with your coding skills. So this is a little tangential to what we're talking about specifically, but if all you're thinking about is coding all day long, then what if the app that you're developing is, I don't know like finding babysitters or whatever. It's like Uber, but for babysitters, I don't know. But you lose touch with the end user base and staying outside of the world of normal people can make it harder for you to build solutions for those people.

    Jen Luker: And it's partly due to just a lack of empathy and it's not that you lack empathy as a person so much as you just don't necessarily understand the real world problems that they're dealing with and being able to step outside of your box and outside of your own head and experience things that others have to deal with and work with, really does make a difference in how you perceive the problems that you're facing as well. Some of the biggest, craziest problems in your head sometimes aren't really all that problematic. I loved the tweet that Sophie Bates made after she left Facebook that said that she wished that she'd had more, "I'm building stuff every day," experience with React while she was working on the team because they spent a lot of time focusing on tools that almost nobody uses and not as much time on developing certain formats that are really important to the everyday user.
    It wasn't that React wasn't built well, it was that it was perhaps built to handle every edge case. Another thing that I really enjoy is the concept of stress cases versus edge cases. That concept has less to do with, it doesn't happen very often as much as what are the stressors people are going through when it does happen? For instance, what if what you're building is advertising babysitters but a child just died? How is that going to affect that family if these advertisements pop up? How could you possibly perhaps not do that? You know?

    Kent C. Dodds: Yeah, yeah.

    Jen Luker: It's important to recognize that people have emotional states. Those emotional states are different and depending on what their experiences are, and if you never step out of your box, you don't think of those experiences because you don't have them. No matter how open and empathetic we try to be, we're still confined by the boxes of our experiences. By experiencing more, even if it's experiencing more through someone else through watching them or being with them or hearing those stories, it starts impacting you on a different level and you start to have those thoughts.

    Kent C. Dodds: Yeah, and it's everyone's responsibility-

    Jen Luker: Absolutely.

    Kent C. Dodds: ... to develop that empathy. It's not just the product manager who's supposed to tell me what to do as the coder, but it's my responsibility to develop that empathy for my users. [crosstalk 00:23:59] It will change the way that you develop.

    Jen Luker: Right. And I very much feel that that not only applies to stress cases, but also things we talk about a lot like accessibility. It's hard to remember that you need to make sure that maybe you use red and blue combinations instead of red and green combinations because of colorblind issues are very prevalent in red, green combinations. But if you haven't talked with or worked with or experienced colorblindness, it's not even a thought, yet four and a half percent of the world have some form of colorblindness.
    So it's just one of those things where it's so, so easy not to think about it because it's not part of your world. It's not part of your experience. It's not something you've sat down and dwelled on. But if you start thinking about stress cases, like what are the ways in which this could cause someone pain?

    Kent C. Dodds: Mm-hmm (affirmative).

    Jen Luker: What are the ways, what could have happened that could potentially make this product horrifying, not just bad, not just annoying but horrifying?

    Kent C. Dodds: Or triggering.

    Jen Luker: Triggering and start thinking about those because you oftentimes have heard things. You know these things potentially happen, but you've never necessarily seen it or didn't recognize it when you did. But just kind of asking yourself that one question can start reminding you of other situations that could happen and eat, breathe, sleep, never leave your office? It's much harder to experience those.

    Kent C. Dodds: Mm-hmm (affirmative). Absolutely. It makes for a less fulfilled life as well.

    Jen Luker: I think so.

    Kent C. Dodds: Yeah. Absolutely. So Jen, this has been a wonderful chat. We're wrapping down in our time here and before the show, Jen gave me links to three Ted talks that are all fantastic, I'm sure. I know at least one of them is because I watched it in the past and it's very good. But our challenge here or your homework if you choose to accept, which I hope you do, is to watch at least one of these. They're each less than 20 minutes. Most of them are like 10 minutes or less. So the first one is, Knitting is Coding by Lindiwe Matlali and we've got a link for that one. Another one is, Crocheting Hyperbolic Planes by Daina Taimina. I'm doing my best here. Then the last one here is, A Delightful Way to Teach Kids About Computers. This is the one that I've seen in the past. It's wonderful, by Linda Liukas. I think it's how you say her last name.
    Each a good way for you to start exploring the idea of expanding your interests and improving your level of empathy and also your area of inspiration where you can find ways to apply different ideas to current problems.

    Jen Luker: I'd actually really like to end, if you don't mind, with a quote from Linda Liukas.

    Kent C. Dodds: Yeah, please do.

    Jen Luker: So near the end of her topper, three fourths of the way through her Ted Talk, she gave this beautiful quote that I think really sums up what I'm trying to get across in this talk and it says, "... and that's why no one recognized that when I was conjugating French irregular verbs, I was actually practicing my pattern recognition skills and when I was excited about knitting, I actually was following a sequence of symbolic commands that included loops inside of them and when Bernard Russels..." or it says, "... and that Bernard Russell's lifelong quest to find an exact language between English and mathematics found its home inside of a computer. I was a programmer, but no one knew it."

    Kent C. Dodds: That's a great quote. Thank you. Jen, how can people reach you online?

    Jen Luker: You can find me at jenluker.com. The easiest way to contact me is on Twitter @knitcodemonkey.

    Kent C. Dodds: Wonderful. Thank you, Jen. It's been a pleasure to chat with you as always and I hope that everybody enjoyed this as well. With that, we will say [foreign language 00:28:34] and we'll see you all next time.

    Jen Luker: Thank you.

    Kent C. Dodds: See you.

    Jen Luker: Bye.