Part Two: Interview with Rachel Smith
Published 3/9/2016
In today's episode, I talk with Rachel Smith, a JavaScript developer currently working at CodePen!
Mentioned or relevant to today's episode:
- CodePen
- @RachSmithTweets
- rachsmith on CodePen
- RachSmith.com
- Rachel's posts on Physics
- WebGL
- Quote (mentioned Edison in the episode, but actually this quote misattributed to Einstein)
- Learning to Learn (Developer Tea episode)
- React (JavaScript framework)
- YDKJS
- DOM API
- Node JS
- Cheerio
- Geolocation API
Today's episode is sponsored by Digital Ocean! Use the code DeveloperTea at checkout to get one month of a 1GB droplet, completely free!
And lastly...
Please take a moment and subscribe and review the show! Click here to review Developer Tea in iTunes.
Transcript (Generated by OpenAI Whisper)
Hey, everyone, and welcome to Developer Tea. My name is Jonathan Cottrell, and in today's episode, we continue the interview with Rachel Smith. Rachel is a JavaScript developer. She works on both the front-end and back-end at CodePen. If you don't use CodePen yet, you will probably enjoy using it, especially if you're a front-end web developer. Go and check out CodePen. Of course, the link to CodePen will be in the show notes. But in today's episode, we talk about Rachel's future development career and what she's looking forward to learning in the next year or so. Thank you to today's sponsor, DigitalOcean. If you are looking for a cloud SSD hosting solution, DigitalOcean may be the perfect option for you. You can get a server up and running in just a few clicks. We will talk more about what DigitalOcean has to offer to Developer Tea listeners later on in today's episode. But first, I want to go ahead and introduce you to DigitalOcean. Go ahead and get started with the second part of the interview with Rachel Smith. Now, during this second part of the interview, I want you to go and send a tweet to Rachel and thank her for coming on Developer Tea. Her Twitter name is RachSmithTweets. That's R-A-C-H-S-M-I-T-H-T-W-E-E-T-S. That username can be found in the show notes at spec.fm. Go and tweet at her and tell her thank you for coming on the show and spending some time just talking about what she does. Now, let's jump straight in to the second part of the interview with Rachel Smith. I've seen this tone with the work that you do that's basically kind of saying, okay, you know, for example, WebGL. WebGL is kind of confusing and scary for a younger developer. But you're, you know, you make these pins that show examples that are practical. And, you know, that's really interesting. So you're doing a series on physics. You know, what kind of learning are you doing with, for example, physics? That makes you interested in bringing that down a level away from the scary, like, crazy complex stuff, like shaders and all that. Why are you, I guess, motivated to bring that to developers who don't currently, you know, understand that language? That motivation comes for me from my background in advertising and the advertising, digital advertising industry in general is very, very closed source. And it's filled with these wonderful, just brilliant programming geniuses with all these, like, amazing, you know, insights into motion and coding and physics and all this stuff because of the nature of the industry. And this is not the developer's fault themselves. It's, you know, you always have the pressure to make something that nobody's ever seen before. And it's very competitive. And there's a lot of copying and that sort of thing. That gets done. So it's not really a practical thing to go and share all your knowledge with all of your competitors in that industry. And that's why they sort of keep their cards close to their chest. And the problem with that I see is that it's a very male-dominated industry. Like, personally, I haven't met any other women developers in that sort of field and doing stuff with WebGL or, like, you know, hardcore, like, physics animation. And they do exist. They're out there. I'm not, like, discounting anyone who's doing it. But the number is so low. And I've met tons of guys who do this. And I just feel like a lot of people sort of work on this sort of thing and then come out the other end and share this, like, insane thing that's spent, like, six months on. And it's stunning and beautiful and amazing. But beginners or people who, you know, aren't, aren't exposed to the same background as these people, the same opportunities, they just look at that stuff and they go, oh, I'd never be able to do that. It's too hard. Yeah, yeah. You know? And I just want to take the knowledge that I've, you know, gathered along the way and try and just make it this thing where it's, like, it's not scary. You just, you know, there's just no one explaining to you that it's a step-by-step process. And it's, you know, people don't just come, come into this and come out like geniuses. But you only see the finished product a lot of the time. There's no sharing of the process along the way. You know, there are people sharing, but it's just nowhere near the level of people sharing in, like, CSS, HTML. I want to call it regular development. I don't know if that's the right word. Sure, yeah. You're sort of more mainstream development practices. So much sharing goes on there. And then this sort of, this creative field, like, you know, 3D and advanced animation techniques with JavaScript is less so. So that's just why I write those sorts of things. Because I just want, I want everyone to be able to do this. I want them to come join us and make fun, cool things. Yeah, for sure. Well, and it's interesting because I think, you know, the people who are leading in the industry, so many people who lead in any industry really, doesn't, not just development, but pretty much any industry, a large percentage of people end up seeding back into the community by teaching, right? So this is like a really common pattern. The people who are the most, I don't know, academically sound in any given area, a lot of times they end up either becoming like adjunct professors in the more traditional world or doing things like what you're doing, Rachel, where you take something that's pretty complex and you break it down into less complex ways of understanding. And it doesn't mean that you're dumbing it down. It means that you're explaining it. So Edison said, I believe his quote was that if you can't explain something simply, then you don't know it yet. Right. It's something along those lines. And so there's a part of teaching where you're actually learning, right? So you, for example, are learning probably a ton about WebGL by going through, like you aren't this, you don't have all the, you know, you don't have all of this WebGL knowledge that you've just locked away and suddenly you've decided to share it. Like this is a common misperception of people like you, Rachel, and even people like me on a podcast. I mean, just because I'm standing behind a mic, like I don't have, I'm not a sage. Like I don't, I don't have all this knowledge that you don't have and you don't have all of this WebGL knowledge locked away. You're learning as you go. And the people who are learning are typically really good at teaching the stuff they just now learned. Yeah. I, I often say to people like people will try, you know, people will try and say, Oh, they'll email me and they'll say, Oh, I don't think I'll ever be able to make the things you make, or you, you must be super intelligent or like so much smarter than me or, you know, like just sort of trying to make out like I'm sort of some sort of special human being, but I'm not, I'm not, I'm not really because I'm privileged in the sense that I have been given a whole lifetime. um, uh, of an opportunity to learn. And I've just been learning for so long now that I'm not scared of it anymore. Mm-hmm. And I, you know, if I want to learn something new, I just do it. Like I just start doing it. You know, it's not easy to get to that point. It takes a lot of time and practice, but I've been afforded the time to do this with my life. So that's the only difference between, you know, me and someone getting started out. It's not like I'm more intelligent or more capable. It's just, I've just had more time learning. And the more, the more learning you do, you just learn to learn and it becomes, you know, an easier experience to tackle new things. That's a, a theme of the show. People know, uh, who listened to the show know that I've said over and over and over learn to learn. This is like the multiplier mindset, right? If I have, you know, let's say five days and I can learn at a particular rate over those five days, um, I can learn at a particular rate over those five days. Well, if I can learn how to learn twice as fast in day one, then days two through five, four days left, I can learn as much as I would have learned in eight days, right? Like in other words, invest in your understanding and your fundamental kind of learning patterns. And that's not an easy thing to figure out. Learning itself takes practice. In other words, you need to, uh, constantly challenge yourself, to be able to practice learning. You can't just practice one craft over and over and over. Uh, you, you also need to practice that, you know, adjusting, adjusting to something brand new. Yeah. Learning to learn is, is a fundamental skill, especially for developers. Again, you know, I talked about this, I think on episode three or four of, of the show that one of the fundamental skills of being a developer is learning to learn because we have new things coming out all the time. Um, but you have to learn. Um, but you have something to say about this. Actually, you said focus on, uh, if you're, if you're a JavaScript developer, focus less on learning any one framework, right? It's good to learn the frameworks, but focus more on learning vanilla JavaScript. Can you kind of walk out your reasoning for that? Um, I just feel like if you invest time into learning vanilla JavaScript, it doesn't matter that the frameworks, the front end frameworks are all supposed to be using, keep changing because if you understand the language, then you know, you'll be able to much like in a much quicker fashion, pick up the new framework. I sort of came onto this idea through my own experience when I, after my first couple of years working with JavaScript, I'd always use J query for everything. And it was quite good at selecting and modifying. Dom with J query, but I didn't really know JavaScript and I was living in, I'd moved to London and I was looking for jobs and I was just losing out on these jobs. Like because I didn't know JavaScript, you know, they were like, Oh, J query isn't enough, you know, like you need to know JavaScript. And I was like, okay, well if I'm going to be, if I want to, if I want to be horrible, I'm just going to have to do this. I'm just going to have to learn vanilla JavaScript and it is the, one of the, most, you know, positive things I could have done for my career is to take the time to learn vanilla JavaScript rather than say, if you say if you're a new developer and you want to get started working with single page apps and you choose to use a framework like react, that is totally fine. Like frameworks help you get things done really quickly and you know, you'll see progress in app. You're building and that's awesome. I'm not saying like, don't use that and build it from scratch in JavaScript because that's insane, but don't invest all of your learning time into being able to build something in react. Like you need to take the time to understand how the react code works under the hood and just keep trying to build small things in the JavaScript just so you can understand how it works. You know, that means, when you're looking for a job and they don't use, you know, the framework you're familiar with and they use another one, that's okay because you, you don't even, you know, you can look at that framework and you can understand what they're doing with the code. You don't even have to rely on documentation or, you know, that sort of thing. If you, if you understand JavaScript, it's, it just opens up the world to you in terms of opportunities. Yeah, I totally agree with that. I'm reading through, um, you don't know JavaScript right now and I've been doing this for a while and there's a lot that I didn't realize that I didn't know. I mean, it's, it's amazing if you have not read something like, uh, you don't know JavaScript, something that teaches, uh, what prototype inheritance or not really inheritance, but a behavior delegation is. And if you think that you can do classes in JavaScript, for example, it's worth going and reading, even though ES6 introduces the, the class syntax, read through something that goes against that because JavaScript was not initially designed to be viewed in the light of traditional object oriented programming. Uh, and just knowing that alone has changed my mindset on the way I develop. And this is applicable to pretty much all languages, right? Uh, if you understand, for example, if you're, if you're a rails or a Ruby developer, rather, you should really, truly understand what method missing does. If you are an HTML, uh, front end developer, like we're like, we've already been talking about, you should understand what doc, like what different doc types are and what they do, even though you may not practically need that information to do your job, that under lying kind of structural information. When you see it, it changes the way you read code and therefore it changes the way you write code. Yep, definitely. And I feel like there's a bit of a steep learning curve with JavaScript. Yeah. With JavaScript where it sort of feels like you're struggling and you're not definitely getting everything. And for the longest time, and I, at least for me, it was sort of this thing suddenly where clicked in my head and it started clicking even more. And then it was like, I could speak French all of a sudden, whereas a month ago I, you know, I couldn't, you know, it, and it, and it finally happened for me. And then after that point it gets a lot easier, but there's just, that initial, that initial like learning curve hump to get over with JavaScript. So, um, I like, I totally sympathize with people who struggle with it because my experience was like that as well. Yeah. And I mean, JavaScript is slightly different from other languages. Uh, well, I would say in some ways it's drastically different, but it's, it's different from other languages in that you can approach the design of a JavaScript program for many different perspectives. Right. So you don't necessarily have to subscribe to one type of coding. Whereas if you're writing Ruby, there's basically only two ways of doing it. Uh, you write a class based thing, right? And you either, you followed that paradigm and you implement best practices in object oriented programming, or you write a script that you just run and it does the things procedurally that it would normally do. And there's not really like a bunch of other flexibility in Ruby. Uh, whereas with JavaScript, you can approach it from the functional paradigm. You can approach it from the object oriented paradigm. You can approach it from the prototype paradigm from the procedural paradigm. I mean, it's such a, um, a flexible syntax and there's so many features that you can flex in JavaScript, uh, that it, I mean, it totally changes the way you write your code and you can have two libraries that do essentially the same thing, but they're written entirely differently. Yep. I think the tricky thing about learning JavaScript, especially in the front end too, is you, you mixing JavaScript with the Dom API and that adds like a whole other layer of complexity for people starting out. Cause it's like, it may not even be your JavaScript. That's the problem. It might be the browser and the Dom API and it not behaving how you expect, but you're not there yet where you can differentiate that. You just know, you just see the JavaScript's not working. And it's very frustrating. So, and it's also, you know, on top of that, going away from the browser to node, for example, if you aren't aware that, for example, you know, document, uh, the top level variable document is not available in node because there's not a document, right? Um, you know, for example, I, I tried to parse some HTML when I first started with node long, long time ago. Um, and I, I was so frustrated cause I couldn't figure out like, why isn't this JavaScript parsing this HTML property? And I realized, wait a second, like there's nothing in JavaScript that definitely ties it to HTML, right? Like there's, so I have to bring in a library to do that, right? Or, or some, you know, whatever code package. Uh, and so that's how I found cheerio, which is considered kind of like the J query for, uh, a J query replacement rather for, for node. Um, but that was, that was such a kind of a mind bender for me because I hadn't really learned formalized my understanding of code. Um, I, I, I, I, I, I, I, I, I, I, I, I, And like where JavaScript begins and the browser environment ends. Because it's sort of, you know, you're Googling things on JavaScript and you're in Stack Overflow and they're like, oh, just use this, you know, like location. Yeah, exactly. Whatever, you know, like geolocation thing. Cool. And that's a feature of the browser, but you're accessing it with JavaScript. So it's very confusing if you then try and go into a Node environment or something and things aren't working. And if you don't understand the distinction between the language and the environment, then it's very frustrating. And even more so every day because obviously browsers are continuing to add features, adding APIs. And on top of it, if you're in the console, there's like a whole console API layer that isn't necessarily going to be available in Node, for example. Mm-hmm. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. you can get a droplet up and running with pretty much any kind of open source platform you want to use. If you want to put a Docker container up, you can do that in a few clicks. If you want to run a LAMP server, you can do that in a few clicks. And right after the server spins up, you can SSH in as root, and it's in this super fast network on the internal storage. It's all SSD. And the control panel that you use to manage these different droplets is so easy to use. And it's incredibly easy for teams to use. And not only that, but they have floating IPs to help your application scale. They have an API that you can automatically scale your application with. There's so many things that DigitalOcean provides. So I recommend you go and check it out, especially if you're in the market for an SSD server. Now, there's no minimum fee to use DigitalOcean, and there's no minimum spend. And you only pay for the minutes and seconds that you use on those different droplets. So you can do that in a few clicks. And it's incredibly easy for teams to use. And not only is it free, but you could spin up, let's say, the most powerful server on DigitalOcean and use it for an hour just to do a single task and then take it back down. And you're only going to be charged for that hour. A really nice billing feature that DigitalOcean provides to its users. Now, if that hasn't convinced you yet, this next part hopefully will. DigitalOcean is providing you with a month on a one gigabyte droplet for free, simply for being a listener of DeveloperT. All you have to do is use the code developerT at checkout. Of course, that code can be found at spec.fm. Thank you so much to DigitalOcean for sponsoring DeveloperT. Well, that's a really interesting discussion on JavaScript. I want to know kind of what you're planning to learn, like what is on the horizon for you in the learning department. I know you're working on some WebGL stuff. What else are you kind of looking forward to in the next year or so? Well, yes, my current thing is to tackle WebGL. And I think my end goal in this is to work on some VR stuff, because that excites me a lot, the potential for VR and the web. And I wouldn't say I'd go diving into it now, but I want to be prepared. So this WebGL stuff is sort of a stepping stone towards that. Definitely. So I'm really looking forward to what CodePen does with the WebGL, all of the new WebGL things that are coming out. I think it'd be really cool to like, I don't know, I'm not sure how that plays out in reality. It's funny, there's a bit of a disconnect between my interests and this job in the way that my last job, I actually would, it's funny, I like I would build WebGL things in my last job that was part of the job. But it was often because I was so busy working, would never really learn it properly. I'd just sort of be like, oh, take this thing that Michael did in the last project and change some stuff and it works. I never really took the time to understand WebGL. And that job was, I sort of worked different hours. So I worked a lot later and there's less sort of free time to explore those things. And this job with CodePen is, you know, my job, my job job is to work with CodePen. And I think that's kind of the thing that I'm really looking for during the day is to make usable interfaces for users that they can, you know, actually use. It's not crazy animation stuff, but I do have a better work-life balance now and that I can, I've got a lot more time to spend on my, you know, side loves. And I think, I think this is a great way to have it, you know, like work is work. And I mean, I still love my work, but it's my, my side projects are sort of a toe, in a totally different area. It's great because my last job, you know, I could be working on that sort of thing all day and then come home. And the last thing I'd want to do is start coding more of that stuff for my own, my own purpose. But now I'll, you know, write CSS and, and sort of very functional JavaScript all day dealing with data and, and you know, form elements and that sort of thing. And then, and then I'll be like, right now I can do, you know, now it's me time and I can, you know, do this, you know, 3d stuff or just, you know, silly canvas. You use the features you just built. Yeah, exactly. And work on the side I was staring at all day and make some fun stuff. And that's kind of really nice that it's nice to have that separation. Yeah, I bet. So the question is, is there an unspoken rule about the number of pins that each employee at CodePen is supposed to put out each, each given like week or something like that? Oh, no, there's no quota. I mean, so Tim and Tim Holm and Jake Alba and I are like, we're kind of fanatic users. So we'll often just like make our pens in our spare time because we're just nuts about the product. But you know, you've got people like Tim Sabat, he's a backend guy. He's not making, you know, pens. There's no requirement to make pens. It's just, it's just, you know, it's, we just enjoy it. So we do it. Well, that's great. I, you know, I think the world appreciates the work that is going on at CodePen. And I know I certainly do. And most of the people who listen to the show certainly do. So thank you for making a great product. Thank you for using the product. It's really is, you know, the most, the definition of a dream job. I love the product and I love the people who use it. So it's fantastic. That's great. So I like to ask everyone who comes on the show two questions. And the first question is, if you could spend 30 seconds with every developer, what advice would you give them? I would probably say that my advice would be that this is for you. Sometimes, like speaking from experience, development, if you're, if you're not like someone who fits the sort of standard expected type of person to do development, you can feel a little bit like you're not supposed to be here. But I would like to say to everyone who's interested in being a developer or is trying to be a developer that you belong here and you should be doing this if that's what you want. And it's going to, you run into roadblocks, but please don't be, discouraged because you're meant to be here. That's great advice. I think if there is any, if there is any profession that is democratized to the point where just about anybody can, hopefully it's, it's getting to the point where just about anybody can approach it. The only restriction being you obviously probably need access to a computer on a regular basis. Yeah, this is, this is an open field. Like there's, there's no, and the, the community of people who are involved in it are actively trying to re reduce the elitism that is leftover. Right. Because I mean, admittedly this, this field has had a lot of kind of academically elite people who have kind of built it from the ground up. So naturally that can cause a little bit of separation and especially some imposter syndrome for people who wouldn't consider themselves in that academic elite. But this again, it's about practice. It's about, you know, sitting down at a computer, which again, you know, it pretty much everyone has access to a computer and it's getting better and better. We're lowering the cost of computing for people who don't have access. And that's an important, important endeavor. Um, but you can pretty much sit down in a computer and there's not going to be somebody looking over your shoulder deciding whether or not you're allowed to do it. Yeah. It's not going to be anybody allowed to continue. Right. It is an open field in that anybody is allowed to do this. And there's a lot of value still left to be created in this field. Tons of value that has yet to be tapped. Yeah. I'm really excited to see, you know, what we can achieve when, you know, all of we get all these fabulous newcomers and, and people who, you know, traditionally wouldn't have pursued a career in development, just more diversity. Yeah. And more exciting opinions. And I couldn't happen soon enough for me. I'm very excited. I am too. I, as a person who's been in the field long enough, I'm starting to see a more and more diverse population getting involved. Um, and that's, that's super exciting. So the second question that I like to ask every guest is what topic do you wish more people would ask you about? Um, I would probably say that this is really personal. I think that, you know, I'm a big fan of the traditional and not related to. That's fine. But I wish I had more, uh, girlfriends to talk about like makeup and stuff. I mean, I live in LA now. I relocated here two years ago and I don't have a whole lot of friends in town. And most of them are male through the, you know, nature of, um, my work and the people I run into. Yeah. Um, and I don't know, I have, you know, I have my girlfriends back in Australia, but I, I used to have a really strong group of girlfriends back in Australia. So I guess I miss that kind of like, you know, girl talk stuff. So that's the one thing in my, some days I'm like, Oh, I've gone like days just hanging around guys and never discussing this sort of thing. And it's such an important topic. Like you say it's, it's not related to, uh, to the, uh, to coding necessarily. Uh, I think it is actually, you mentioned it earlier that this is definitely a male. I mean, even though there have been great strides, this is still a male dominated industry. Um, and not even like all types of male, like there's a specific type of male and I happen to fit that, uh, that demographic. And so, you know, it's, it is really important to be both self-aware, but also aware of the industry that, you know, that is actually, you know, it's, it's, it's, it's, it's, it's, it's, it's, it's, it's, it's, that's probably not a good thing. I, I, I mean, it, like in simple terms, you know, I, I can't say definitively what is good and bad because I'm not on the other side of history, but diversity typically, uh, works out to be a positive thing whenever we can find it. Yeah, definitely. And for thing, for reasons, exactly what, like what you just outlined, you kind of crave more relationships with other girls. Yeah. They have just like Coleman. and, you know, girl stuff. So it's just one of the side effects of being in the minority. If you have a message for girls, especially, you know, younger girls who are trying to decide on a career path and they've considered computing or they've considered design, web design, web development, what is that message for those young girls or those people who are considering jumping into this still male-dominated industry? I guess I would say that do it. If, you know, if this is what you want, do it. It's incredibly empowering being in this industry and having development skills like nothing else. And you are guaranteed to run into some situations where, you know, you're going to feel like you're alone or it's too hard. I've definitely been there. And I would just say that, please, like, please keep going if it's not too much. My personal experience is that once I expanded my network, it took time. But once I expanded my online network and I made lots of, you know, lady friends online, it got a whole lot better. So, you know, it can and will get better. It's just tough when you're starting out because you don't have those connections. But you can find them. And we are out. We are out there. And if any young girls ever want to reach out to me for advice, please do because I get asked for advice all the time and it's almost 100%, guys. So, girls, please email me or get on my GitHub AMA or something. So, Rachel, how can people find you online? Oh, they can find me on Twitter. It's my probably most used social network. I'm pretty chatty. I'm pretty over there. And that is RachSmithTweets is my Twitter username. My website is RachSmith.com. And my CodePen profile is probably where I'm also most active rather than my own personal website. And that is CodePen.o slash RachSmith. Perfect. And all those links will definitely be in the show notes. Cool. Thank you so much, Rachel, for coming on the show and talking about all of the cool stuff you're doing at CodePen. Thank you so much for having me. It's been great. Thank you for listening to this episode of Developer Tea. If you missed out on the first part of the interview with Rachel, you can find it in the show notes at spec.fm. Of course, every episode of Developer Tea is always available on iTunes as well as spec.fm. Thank you so much for listening. And thank you to today's sponsor, DigitalOcean. If you're looking for a cloud SSD host option, DigitalOcean is one of the most intuitive on the market. Go and check it out, DigitalOcean.com. Don't forget the special code, DeveloperTea, all one word. That will give you an entire month for free on a one gigabyte droplet. Thank you so much again to DigitalOcean. And thank you for listening to Developer Tea. If you've enjoyed this interview, and if you enjoy the show in general, I ask that you go and leave a review and let other developers know. This is the best way to help other developers find the show. And this actually helps the show go on. This is the best. This is the best way to help Developer Tea continue existing. So thank you so much for listening to the show and for leaving a review. And until next time, enjoy your tea.