Finding fulfillment through humor in tech with Cassidy Williams

In this episode, I talk with Cassidy Williams, a senior software engineer that works for the fully-remote company CodePen.


We also talk about:
  • working remote for a small startup
  • how to find fulfillment in your career and through side projects
  • how to port an application from one technology to another
  • how humor can make tech a more welcoming place
  • and how she interviewed for CodePen
Cassidy Williams
About Cassidy
Cassidy Williams, who is widely known on Twitter for her tech humor, tells us about her career and hiring experiences.
Book your awesomecodereview.com workshop!

Read the whole episode "Finding fulfillment through humor in tech" (Transcript):

[Improve this transcript on Github.]

Michaela: [00:00:00] Hello, and welcome to the Software Engineering Unlocked podcast. I'm your host, Dr. McKayla and I open the doors to software companies and thought leaders around the world. Today I speak with Cassidy Williams about how it is to work remotely for CodePen, porting an actively used software from one technology to another, how and why she brings humor into tech and how she handles all her side projects. I'm super thrilled for this awesome first episode. I hope you enjoy it. If you like it, support my work by spreading the word. Tell your friends about this podcast, share it on Twitter, LinkedIn, Facebook. I promise you. I will do a happy dance each time you do it.

Today, I have to pleasure to be talking to Cassidy Williams. She's a senior software engineer at CodePen. Cassidy is a super interesting person. She's not only a developer, but she's also a little bit of a comedian. Her jokes on Twitter really make me laugh. But overall Cassidy and her achievements are really impressive. She worked for Amazon, Alpha Digtal, Venmo, Microsoft, and many more. And if that's not enough, she has quite a few side projects. And in her free time, she builds hardware keyboards. Well, Cassidy also works for a really interesting company: CodePen. CodePen is one of the largest communities for designers and developers, it's actually a social development environment where you can showcase your front end code. So there's plenty to talk about today. Thank you Cassidy for being on my show.

Cassidy: [00:01:30] Yes. Thank you for having me.

Michaela: [00:01:33] Cassidy, so you live in Seattle, it's actually a city that gives, um, access to it gives you access to a lot of high tech and top-notch companies, why did choose to work for CodePen? And also, why did you choose to work remote?

Cassidy: [00:01:46] Yeah. So that's a good question. So I, I originally moved to Seattle from New York city. I was, I was living there for a while and decided to go for a change of pace and so that's how I ended up here out West. And, um, I really liked my time over at L4 Digital. That's where I first worked when I moved to Seattle. And then unfortunately it was bought and L4 Digital is no more. Um, so it was, it was fun working there while that lasted. And then I, uh, hopped over to Amazon after that. And. Um, Amazon was a great learning experience, but it was also - I learned both what I liked and didn't like, and I really learned that I was not a huge fan of of very large companies.

And so that's why I ended up leaving Amazon and switching over to CodePen and CodePen is kind of like the opposite of Amazon. Really. It's an incredibly small company. We're only eight people. And, um, I would be working remotely instead of working from an office. And I always thought it would be fun to be able to work remotely because I would be able to have just the flexibility of working from anywhere, whether it be from my own house or in a library and a cafe, or even a coworking space if I went for that and, um, Yeah, it's, it's just been awesome so far I've been, I've been really happy working at CodePen. I've been working on this product that I've been using CodePen for years. And, uh, the fact that I get to actually work on it now and, and build things that I would actually use myself as a developer is really exciting. Um, and yeah, that's, that's, that's kind of how I ended up at CodePen.

Michaela: [00:03:17] Yeah, that sounds really exciting. So you're working for code ban remotely. Is everybody on the team remote?

Cassidy: [00:03:24] Yeah. So technically. Two of the people we call 'Bend Oregon', our global headquarters kind of as a joke, because two people live there. They, they rent a coworking space together. But besides that, uh, the rest of, most of us all mostly work from home from our respective homes. And, uh, it's kind of fun because, uh, The designer, Claire at CodePen. She lives in Seattle as well. And one of the cofounders at code pen, he's moving out to Seattle too. So we've got a nice little contingency here in Seattle, but yes, it's a fully remote company.

Michaela: [00:03:57] And so do you think, or do you miss some times, uh, to be with your coworkers to hang out over the water cooler or next to the water cooler and, uh, Just talk.

Cassidy: [00:04:07] Yeah. We actually have a meeting on occasion which we call just water cooler time where we just chat and hang out with each other on, on the video chat, which is, which is fun. Sometimes I do miss being able to, to gab with people, but, um, Not as much as I thought I would. It's been really nice because I can kind of do work at my own pace and move around wherever I need to. I have an office in my home and that's kind of where I try to stick and do all of my work. And then when I leave the office, I'm done working for the day.

So I can kind of have that separation. And what's kind of nice about it is because I'm not talking with coworkers all day and kind of gabbing over the water cooler or distracting people with jokes or something. Um, because, because of not doing any of that during the day, I have a lot more energy to do that in the evenings.And so I've been. Uh, just hanging out more with friends and at meetups and doing a lot more outside of work without being exhausted at the end of the day, I'm a much more motivated to be social and to hang out with people after work. Um, which I see, I see that as a plus because there were definitely times in my life where I would really want to hang out with people and I would do it, but then I would just be so exhausted at the end of the day from all of just the interaction and stuff, and I'm a pretty introverted person. And so it's, it's, it's nice being able to work from home to have that separation. And, um, I, I can go be social if I want to, by going to a library or cafe. And if I kind of just want to just be on my own and get the work done, I can, I can do that at home.

Michaela: [00:05:48] Yeah, I can relate to that. I really liked the quiet time at home. You can be so productive working remotely. And uh, and then if you are in your work motors, you're in your work motors, right? You are in the flow and you're doing what you need to do. And then you have a social time or interactive time at different times at different times.

Cassidy: [00:06:10] Yeah.

Michaela: [00:06:10] So CodePen is a really small, a relatively small company with, uh, eight people. So I imagine that you have a lot of ownership and a lot of responsibility. Do you feel that you have of impact by the work that you do and, um, what exactly is your responsibility at that company?

Cassidy: [00:06:26] Yeah. And so it's because it's small, you really kind of wear a lot of hats and you really have to know what you're doing and, and, and own that section of the product. A big part of my responsibility is actually converting the site over to React. CodePen was originally built with Ruby on Rails and jQuery way back in 2012. And it was a great technology for its time. But, uh, at this point now, uh, it's, it's kind of outdated. And so we've been slowly but surely migrating more and more of the site over to React and yeah, it's mostly been converting the site to React. We've been adding a lot of, uh, graph QL and Apollo to the code base and moving away from just other state management stuff. Again, it's, the site is kind of in a hodgepodge where again, it was originally built in Ruby on Rails and jQuery. Yeah. And then CodePen started to introduce React into the code base in 2016, I think.

And that's when they launched, uh, Both the projects editor, the CodePen products editor, where it's much more advanced projects rather than yeah, just HTML, CSS, JavaScript, and, uh, and multi files and stuff. And also the dashboard and those were built with React and Redux. And, um, around that time, that's when Redux was really having its heyday and Redux is definitely still relevant now, but it's not one that, it's not a technology that I've ever really enjoyed. I'm sorry to all of those who love Redux - it's not my cup of tea, but, uh, it's, it's still pretty popular and we, but we've decided that we're moving away from Redux and moving into a GraphQL and Apollo for state management and, and also just for getting API data and everything.And it's been awesome because it really empowers the front end to get exactly the data that it needs and to make the right calls and be really modular about it. And also just gives us a really good interface for making really extensible and cool components. And it's a really awesome technology in general. Like there's a lot less configuration and if you want to edit a component, you don't have to jump around between reducers and actions and, and that sort of thing. It's, it's just all in that one component, which is pretty fun. But anyway, that was a very long winded way to say. I do a lot of things at CodePen but it's mostly the engineering side of things and mostly front end, but, I dabble in backup a little bit too.

Michaela: [00:08:55] Yeah. So I actually watched the talk that you gave recently about those whole transition phase at CodePen that you worked your way through from starting with Rails and then JavaScript. And as you said, Redux, and now you're actually using Apollo and GraphQL. So for a relatively new company, that's a lot of change, a lot of technology change.

Cassidy: [00:09:21] Yeah.

Michaela: [00:09:22] And as you said, I mean, you're making the change slowly. So in your talk, I saw that parts of it are actually still in Rails parts of it, are, you know, in React, parts of it are now in Apollo or something like that. So how do you handle that all? When you interviewed, what was the tech stack that you actually said I'm comfortable with that or, yeah. What were, what was the interview experience and what did you want from you to demonstrate your skills?

Cassidy: [00:09:50] So my interview experience, this is kind of a funny story. I actually interviewed with CodePen before I joined Amazon. Um, and again, Amazon was a great learning experience and, uh, It was, it was a company that I really decided it just wasn't a good fit for me. And there are some good teams there are some bad teams there. Unfortunately, I was on a team that was a little bit both, but anyway, I interviewed with CodePen at the beginning of 2018. Um, Is that right? Yeah, time flies, I, intervewed at CodePen at the beginning of 2018, ended up going to Amazon and then about six or seven months into Amazon, I reached back out to CodePen and I said, Hey guys, can I re-interview with you again? And that's kind of how I ended up, uh, getting, getting to CodePen there. And, and so when I was initially interviewing with CodePen, they were still very all in on Redux. And so my interview, it was. It was technical and also non technical in that they were asking me what I was familiar with. They were asking about my side projects. They were asking what I was comfortable with. And then they gave me a coding assignment and the coding assignment was to just implement part of their site in a React and Redux. And, um, it was, it was a fun interview because I was able to kind of mess with code. Like they, they gave me access to part of a repository to mess with, um, which was really cool and trusting of them. And I thought that that was a really good culture indicator. Um, but yeah, I was using React and Redux on there. And then by the time I actually joined later in August, they were just like, yeah, we're not using Redux anymore. and I was so happy, it was awesome. But that's, that's kind of how the interview went. They were, they were asking what I was comfortable with, what I could build. And then when I actually did build it, then, uh, they went over the code with me and, and I would talk about here's how I implemented it. These are the decisions I made and that sort of thing.

Michaela: [00:11:52] So even though you didn't really, you, aren't a fan of Redux and React, you were familiar with those concepts. Or did you learn to, you know, because you wanted the job at CodePen and you knew that that's what it takes. So you learned actually, um, what you have to do and you interviewed there?

Cassidy: [00:12:10] Yeah. So I already knew the technologies 'cause I'd used them at previous jobs. Um, and, and don't get me wrong. I love React. I'm just not a Redux fan. And, uh, and so I was aware of the technologies and I had used them on different client projects and across different side projects and applications. I was experienced with it. And I was, if I had to do it, I was going to do it. But man, when I got to CodePen and they said, we're not doing it, we're doing this other technology instead. I was so happy. Oh, I was very, very pleased that we got to do something else. 'Cause I, I didn't find Redux to be very intuitive and that might just be how I, that just might be how my brain thinks and, and other people I'm sure that they think that something like Apollo and GraphQL is not intuitive at all. And Redux is the way to go. And that's, that's kind of just how the world works and how brains work. But yeah, I was, oh, I was so pleased when I learned that I didn't have to do Redux at this gig that I was able to, uh, pick up a brand new technology and really learn it a lot and dive in deep. And the entire team was kind of learning Apollo and GraphQL when I started to, um, and the first project that I worked on was actually the company's first project working with Apollo and GraphQL. Yeah, we were all learning together and, and it was great too, because we were able to say, okay, we've had this experience we're in and, and just went from there and ran with it.

Michaela: [00:13:37] Yeah. I can imagine that if you're starting at a company and they all have the same goal of learning that technology, it really is also a bonding time. Right. You can help each other out quite a lot. And you're somehow starting at the same level, which is really nice as well. Right, so, yeah, everybody's sort of unfamiliar with that and in a new territory and yeah, I think it can be a very interesting experience to get to know your teammates and, and the company as well.

Cassidy: [00:14:04] Yeah. Yeah. And we, we try to do a lot of pair programming where we have a video chat going and we'll work on the same code base and commit something and then say, okay, now it's your turn to code this and then talk through the code. And so being able to learn together and code together and build together has been a really fun and a solid learning experience for all of us.

Michaela: [00:14:25] Coming back to the bonding experience, as a remote company, do you sometimes get together in one place and, you know, just have face to face meetings or just have quality time with each other?

Cassidy: [00:14:37] Yeah. Uh, we've, we've gotten together as a team twice since I've joined. And I do think that that's kind of unusual for CodePen to do it as so much within a year period, because I'm going to be at Codepen for a year this month, actually, which is kind of fun. But, uh, when I first joined, um, it was very good timing because that's when they were doing their first like big company, uh, I shouldn't say offsite because it's not like we're ever onsite. So I guess our big company onsite together and the entire team is getting together to talk about, um, just the future of CodePen, things that we want to build and technologies want to use. And literally that, that week I joined was when they were doing, uh, this company gathering. And so it was, it was great timing. And then, um, later. We had another company get together. That was significantly more casual. Cause one of our teammates was getting married. And so we, we all flew out for the wedding and we were able to get together and see each other in person, just in a much more social setting there.

Michaela: [00:15:38] Yeah, that sounds like a good opportunity to, to bond and to be together right. And enjoy some time together. So what I also saw on your team site was actually that there's a quite high ratio. I think it's half, half right of women in -

Cassidy: [00:15:52] Yeah 50% Women.

Michaela: [00:15:54] Yeah. Do you feel, I mean, you have worked at other places where I think, Amazon and all of those companies don't have those ratios. Do you feel that it's different? Do you see it? That it makes a difference?

Cassidy: [00:16:07] It's awesome. It's something that I've - the different companies I've worked for. Some have had better diversity than others, but, um, what's great about CodePen is everybody just really respects each other. And then if they don't like something they're very willing to call it out. And it's, it's a very solid culture in that regard. And, um, one of the, one of the other female devs. Uh, Rach Smith. She is based in Australia and she is an amazing engineer. And I would, I would venture to say probably the best engineer at the company, or if not, among the best word, we all know what we're doing, but, um, what's great about that. And, and what I saw was when I first joined the company, she had recently had a baby. And she was kind of working part time because she, you know, had a baby and, um, she was like feeding her kid breakfast. Like spoon-feeding him food while also talking about advanced technical topics on the, uh, video chat. And it was the most amazing thing. Cause I was just like, man, she is. She's able to balance all of that. And everybody is totally cool with that. And nobody ever questions it because she's a good engineer. And, um, it was something that really kind of threw me through a loop in a good way. I, I hadn't really seen that sort of a thing before where people generally respect you in general, if, uh, when you're a woman in tech, but, uh, There are, there are plenty of experiences that I would say almost every woman, woman has had in this industry that has not been great. And, um, the fact that I haven't had any of that at all at CoedPen has been amazing. And I do think that it is because we have that ratio and, uh, the founders are really good at just saying it's good to have people around who aren't like us, because then we can get a solid perspective on certain concepts that we just don't have because people aren't all just a homogenous group. They are the exact same type of people, both geographically and, uh, gender wise and also ethnicity wise too. And then it's also good just for learning from each other too. Um, the we've had meetings recently where, uh, some of the guys were asking questions where they were, they were perfectly valid questions, but they wouldn't have ever had the answer to those questions if they didn't have so many women on the team to be able to explain their experiences, uh, in terms of social media and that sort of thing. And so it's, it's really cool having a team that is so equal in general and, and very inclusive. And, and I've been, I've been really happy to work at a place that is, is so inclusive and so open to talk about all sorts of issues and, and good and bad things.

Michaela: [00:18:56] Yeah, that sounds like a really wonderful environment to be working in. I also think that if you experience, like, for example, that a woman, you know, can do both at the same time, I mean, spoon feeding a kid and still, you know, talk about, um, it's suddenly, uh, it's a no brainer. Obviously you can do that. Right. But right. If you haven't seen it before or somehow people that are starting to question that, right? And it's like, is it even possible? Can you concentrate while you're doing that. Even though multitasking, isn't the best thing to do. Spoon-feeding and talking about about tech is possible, you know, it's like driving the car and talking is possible. Right. So,

Cassidy: [00:19:38] Yeah, exactly. And that's, that's just how life works and, and it's, it's awesome that they're so open to that. And I do think that companies in general are being more and more open to that sort of thing, but, uh, being able to actually see it firsthand has been a really cool experience for me.

Michaela: [00:19:53] Yeah, I can imagine. So one of the things that I really like from your profile as well, or from what you show publicly to others is all the jokes that you, that you do. Right? So, um, sometimes I'm really cracking about what you put on Twitter and personally, I think that that's also a way of making tech a more welcoming place. So for me, when I see that it's somehow lowering the barrier, it's like, it's not, everything is so serious, you know, we can laugh about it, about ourselves, about failures, you know, maybe also about daily life things. Is that, um, is that one of the reasons why you're doing that by making those jokes? Why do you spend time on making videos, for example, and, you know, What's your point behind that?

Cassidy: [00:20:40] Honestly, I just, I really like jokes and anyone who's subscribed to my newsletter, which, by the way, I have a newsletter - subscribe. Um, I've been doing that newsletter for like two and a half years now. And every single week, I make sure I put a joke into it. And I've, I've, I've always just been a really big fan of jokes and humor and stuff. And the fact that, uh, I can make people laugh and kind of have that just lower barrier to entry because they're just like, Oh wow. This person who is an engineer also has the same issues that I have and can laugh about it. Like it, it, it does kind of make it a lighter and more fun experiences. And ever since I started making videos, I kind of started doing it as. A joke. And I was just like, oh, it'd be funny if I made this, I'll try it a few weeks ago. And then I was, I realized people enjoy the content. And I was just like, well, you know, what, if I can put some smiles on people's faces, I might as well keep going.

And, uh, I I've gotten several emails and private messages and even just, replies on Twitter where people are saying, "Hey, I just wanted to let you know, my, uh, younger brother has been learning how to code and he was getting really discouraged cause he was having a hard time with it. But then he saw your video and saw that you had a hard time with this too. But You could laugh at it. And now he's just so much more motivated" and people say, "Oh, you've really made my tough day so much better" or "I had this issue yesterday. And so. It was a really relevant joke. I was able to laugh about it with my team, and now we're kind of, we're motivated to do this sort of thing". Just those kinds of messages just really make my day. And, and I, I want to be able to bring that kind of lightness and humor to development because it's, it is, it is a very serious concept sometimes it's a very logical and dry thing to code, uh, at times when you're not being creative and making something fun, a lot of times it's just like, okay, how do I solve this problem that's basically a math problem, but I have to apply it to code and make a computer do it. If you, uh, if you do that all the time, some people thrive just, kind of looking down at their keyboard coding, and then, uh, that's all they do. Um, but for myself, I know that I, I appreciate being able to laugh at myself and laugh at, uh, the issues that I continuously have. There have been so many times where I'll be on Stack Overflow and I'll realize the question I'm looking up is a question I asked two years ago and little things like that. It's, it's a career that's worth laughing. Maybe not laughing at, but laughing with. Because we're all going through such similar experiences. So being able to make jokes to kind of make someone's careers or days, or, or even just a couple minutes, just that much better. It's it's. It's a privilege to be able to do, uh, the fact that people are very open to that in this community is awesome because I can keep doing it and, and have a ball on my own and, and, uh, bring happiness to others too.

Michaela: [00:23:36] Yeah I think humor is a really powerful thing and it's also a really nice way of connecting with each other or connecting with. Well, the human side of each other of each other, or failure and fears as well. Right? You can, you can discuss that somehow in the, not so serious way in a, not so deep way. Right. You can consume it easier and you know, you're not opening a can of worms, but you're just slightly talking about it in, in a more digestible way, I would say. At least that's how I understand it. So. Yeah, you said it can be sometimes a little bit of a dry topic as well. So when you're at your computer and you're coding and you're at a problem and you're facing that problem and you don't know how to overcome it, what would be your first strategy be to, to look that up? Are you Googling it? Are you searching on the web for it or, what's your approach here?

Cassidy: [00:24:32] Yeah. Yeah. So when I, when I first see something I do, I do definitely try, had to just make it myself. And if I can't do that, I'll see if someone else has run into it. And so I'll Google it. I'll check on Stack Overflow, that sort of thing. So when I have finished Googling and I don't have any success with that, um, I have a notebook or something next to me. I always have some kind of pencil or pen and paper next to me, and I start drawing out the problem. Um, and like right next, right next to me right now, I'm looking at it. I have a little note where it's just like, okay, here's how I architect it. And it's just a little architecture diagram. And then I kind of try to go with that. And then if, if that doesn't go well, that's when I just start asking questions. And so I'll reach out to my teammates and if they can't help me or if they pair with me and also can't figure it out, I'll start asking the internet. I'll start asking my own questions on Stack Overflow. And that's my general approach. I do try to, uh, Do things myself, as much as I can, but I kind of have a general rule where if I spend X amount of minutes on a problem and I still can't solve it, that's when I just have to start consulting others, whether it be the internet or teammates, because, uh, it's very easy to, uh, have that pride and be just like, no, I should be able to solve this. I will solve this and then you don't solve it. And then that's, that's when it starts to get particularly discouraging. And so being willing and open to ask those questions and to, uh, acknowledge that you don't know how to solve a problem, I think is very important. And that's something that, uh, Honestly I've it's, it's, it's been a learning experience when I first started in my career, I was not good at asking questions and I can openly admit that now, but then I was much more like I have to be able to do this. I have to be perfect. I need, I need to be able to know that I know how old I'm doing, but now I'm incredibly quick to say, okay, Hey, Rach or hey Chris, I have no idea how to code this thing, but here's what I've tried. What do I do do? And then they could say, Oh, you just forgot this. And then I can, I can keep going on with my life. And it's great because I have that direction. And I think, uh, where I to give advice to some junior engineer, who's just starting out, I would say. Man just, ask your questions soon, because as soon as, as soon as you get those questions answered, you can move on with your life rather than just banging your head against a problem and taking a lot longer to solve it because you didn't ask those questions.

Michaela: [00:27:01] Yeah and you're learning right. When you're getting the answer you're learning. And also you're bonding somehow with your teammates. So because it's a remote company, how do you reach out to your colleagues? You have like tools that you use at CodePen, uh, to talk to each other, or would you old school pick up the phone and talk to them?

Cassidy: [00:27:19] No, we're not that old school. So we, we use Slack for pretty much everything and you're kind of expected to be on Slack when you're online for the day. And, um, if, if someone is not on Slack after certain amount of time, you just kind of consult another team member and we try to make it. So not everybody is so siloed where that there's only one person that can answer a particular question. We kind of try to share the knowledge. And share the wealth of knowledge, uh, around each other a lot. And so you can always ask someone else or, or have someone else ping you. Um, and we also use Notion for almost everything. Notion is a really great tool for note taking for building wikis, for building spreadsheets, anad documents, and calendars, and a bunch of other things. And, and CodePen is pretty much run within Notion. We do all of our all hands documents in there. All of company announcements are in there and onboarding and stuff, but also project planning, Kanban boards, sprint planning, project planning, product planning. All of our documents are in Notion and you can mention a team member in Notion that way. And so I'll often mention someone in a ticket and then if they don't get to it relatively quickly, that's when I ping them on Slack. And then almost always, they get back to you on Slack relatively quickly. And, um, we always try to have kind of a variety of tasks going. So you're never fully blocked because when you're remote, um, especially if you're on different time zones or something, you're never really sure when someone will be online, um, outside of their normal hours or, or if they're saying, well, I have a doctor's appointment today, but then I'm going to be on later, that sort of thing. And so, um, it's always good to on a remote team, have multiple tasks that you can be working on. And so if you end up getting blocked on one, you can work on the other until someone else's back. And, um, we we've handled it pretty well. I don't think I've ever been at a point where I. I'm just like I can do zero work and I'm just sitting here for an extended period of time. There's always something to do. Um, and, and yeah, we've, we've been able to manage that pretty well. Mostly Slack and Notion have been our main communication devices.

Michaela: [00:29:33] So you said, um, you're sharing knowledge so that people, so several people can work on the same thing. When you're saying sharing knowledge. One of the things that comes to my mind is code reviews. Do you use code reviews at CodePen? Do you do code reviews?

Cassidy: [00:29:47] We do. Yes. And so, uh, and that's something that's relatively new to CodePen. Like it was something that we, honestly, they might've started it around the time that I started at the company. But, um, they, they used to be just like, we trust you if you write code, just push it. Uh, but now we're, we're a little bit more. We're a little bit more cautious in that regard. And we actually do the code reviews now. And so we, we use GitLab internally and, um, write our code. We push it in and it's on a branch and we make a merge request, um, uh, or a pull request. And then it's down to just people to look through the code and approve it. And, uh, you, we kind of make it where you have a list of approvers. And as long as someone on the list has proved it, that means they've code reviewed it, and they're confident that you did it right. And then that's when you can merge it. And that's, that's generally our rule of thumb where if an approver approves it, then that means this other engineer or a - even designers or whoever has looked through it is happy with it and has set it to merge. So, um, yeah, we're, we're pretty, we're pretty new at code reviews, but we're decent at them where we, we will never push code just because we want to push code. We'll make sure that the team is aware of what you're pushing.

Michaela: [00:31:06] And do you see benefits of using code reviews at CodePen already?

Cassidy: [00:31:12] Oh, definitely. I think, I think code reviews have really prevented a lot of different bugs where, um, we didn't even, we wouldn't have even realized they were bugs unless someone else was looking at it. So yeah, code reviews definitely helped with that. And we've also been working more and more on just testing in general, we have unit tests which goes through mostly our utility functions and specific components that kind of have one function in general. And, and we make sure those work individually, and we also use Cypress for integration testing and that will say, okay, go to this page. Does the header render great. Does the sidebar render great? Does. This or that render does this value, do this when you click on that, that, that sort of thing. Um, and so we've been, we've been implementing tests a lot more and between all of the testing and then continuously running those tests, whenever we push to GitLab and then doing code reviews, those, those checks in place have really helped us just push less bugs and, uh, ultimately just be better at engineering what we want to build.

Michaela: [00:32:18] And who makes those decisions to, for example, have now code reviews or, you know, double down on tests and things like that, or even which technology choices you're going to make. Is that a team decision or is that something or is that something that's more really from the founders of the company? How is that decided?

Cassidy: [00:32:42] Yeah, so that, that's a good question. And it kind of depends on the thing. Typically it's a team decision. For example, we were looking into, I forget what library recently, we were looking into some library recently and, and one teammate was very for it and another teammate was not. And so someone else was like, okay, I'll experiment with it and then I'll report my results. Then after experimenting with it, they're like, yeah, we're not using this library at CodePen. And, and that was that. And so we were pretty good about, uh, having those kinds of team discussions and making it so we all have input on that. It's not just the founders making those decisions, um, which has been really nice to, uh, to see and be able to have that level of trust with each other. And I think in terms of product direction, that's more on the founders where they'll say, okay, these are the general things that we want to be at, uh, or, or the general things we want to build by the end of the year. And then in terms of timing and figuring that out sort of thing out that that's when it starts to be a whole team situation.

And, um, we, relatively recently, uh, started a new project planning process where before it was a little bit more ad hoc, but we're trying to be a little bit more methodical about it. Where if someone wants to work on a project, or if two people want to work on a project, we have a doc that we write and it's, it's not super long. I, I, Coming from Amazon and Amazon, they are very into documentation and they'll say, okay, if you want to build this, write a six page document explaining why we're, we're not so much like that, but we'll say, okay, here's what I want to build. Here's the business reasonsw why, here's the dev reasons why here's why I think we should. And let's discuss it. And then we'll have, uh, just a mini team meeting about it and discuss what we want to build and what we don't want to build. And that comes from the team that can come from the founders. But, uh, in general, uh, we're, we're pretty good about working on everything as a team and being able to say, okay, this is, this is what I want. This is what I don't want. And, and, and that sort of thing.

Michaela: [00:34:45] So at CodePen, you have several hundred thousands of users and. I guess you try to align the features that you built with the user base that you have, and then also to well, make it attractive for new users as well, to hop on to your platform. What exactly, what are the steps that you would do to understand whether or not a feature is actually worth your time and how do you get these inspirations? Is that part of your job as well? Or as you said, is it really something that the founders. Well think about, and is it their responsibility?

Cassidy: [00:35:24] Um, it's, it's not, let me think. That's kind of a founder thing. Um, one of our teammates, Marie, she's the head support person at CodePen. And, uh, she does a lot of, uh, like data science and research on the side, in addition to, uh, her regular support of answering emails and making sure users are dealing with bugs properly, and then doing bug reporting for us, she, she wears a lot of different hats.

Um, but. What she'll do is for example, the founders will say, "Hey, we want to know generally, why do pro subscribers stop subscribing?" Let's just say, and she will do the work of talking to people who have deleted their accounts or unsubscribed. She has, she's a queen of spreadsheets. And is it, and has built. The most complex formulas ever in these spreadsheets to be able to say, okay, this is the general reason why these are the general sentiments around this new feature. This is, this is how a users are perceiving this or that. Um, this is what people generally want, uh, that sort of thing. And she's really good at documenting that and everything. And so I would say. Even though the founders kind of make the decisions about where the product is going. I'd say Marie, and then other team members, but definitely Marie do a lot of the work of figuring out what the return on the investment would be and what users like. And don't like, and that sort of thing.

Michaela: [00:36:48] And do you do something like AB testing as well? So do you have like some hooks within your product that you can see, you know, where they are clicking, what they're doing, how they're using your product that you have.

Cassidy: [00:37:00] We've done. We've done certain kinds of that. We have, we haven't been very active about, um, about like tracking clicks and everything. We, we, uh, mostly just because we haven't. We, we started using some technologies for it that worked decently, but weren't a good fit. And so I feel like if the perfect technology came around, we would be doing that a lot more. Um, that being said, if. If we do want to track a certain feature, we do have some tools that we use internally. And I honestly don't remember all of the names of them, but our lead design person, she is also really awesome at just user research and user experience. Um, and, uh, she's doing a lot of research and stuff on the side, outside of work too. So she she's really good at that sort of thing. And so when she is trying to decide between a couple of different designs, she will work on that and, um, then actually interview people and see, okay, what do you like about this? What don't you like about this? Um, watch them interact with the site, uh, with certain changes implemented and, uh, She makes decisions based on that. And then we as engineers kind of take her designs and run with it and make them come to life a little bit more.

Michaela: [00:38:14] Yeah. So one of the things that you talked about was these changes that you're actually making on a technological side. So as we discussed, you're moving away from Rails and from Redux to this Apollo GraphQL set up, and right now you're working with all of those different technologies. How does that feel? And, um, what's your plan there to really convert the the product into a more consolidated state?

Cassidy: [00:38:45] That's good question. There's, there's a lot of different, uh, plans and everything, but luckily it's, it's been going pretty well. Um, mostly because we, the sites already implemented whenever we make major changes, those are kind of separate from conversion projects. And so we have projects that are more just convert this chunk to React, but then we also have. Convert this chunk to React and add this feature to it or something like that. And we try to make it so each of these little projects kind of build up to, uh, setting up the site for success for another project down the line. And so we have kind of a mini timeline going, uh, at all times of of what projects will be going on next.

And so, um, one of, one of the things, for example, that we implemented recently, In React was the homepage. The homepage was very, very, uh, Ruby on Rails driven. And if you saw my talk that you mentioned you, you saw that. Um, and, uh, what's great is that talk, even though I gave it only a couple months ago, it is out of date now because the homepage is now completely in React now. And, um, what was exciting about building it and React is once, once that was done, we had, uh, a new grid system for, uh, showing items like pens and projects and posts and that sort of thing. Um, we built a new grid system for that in doing that with the homepage. And we were able to then take that to the explore pages where if you wanted to explore popular pens or pens from people that you follow or, um, posts that are picked by the, the team.

Um, those things is where the next chunk that we implemented in React. And what was great about that is we were able to pull in the grids from the homepage and use those as generic components in the explore pages. And then as we were doing the explore pages, we were able to say, okay, let's actually start moving away from Ruby on Rails, routing and move into React routing. And we started with reach router and then. Uh, because of that project, we were able to determine, okay, this was cool, but we're going to move over to React router. Cause there's a lot of hooks and stuff coming to, uh, React router that we were excited to use. And so we were able to convert a lot of that with that project, and that led us to be able to convert another chunk of the site to using both React router and the grids. And anyway, all this being said, we were able to use all these different technologies that we've been building to implement the site in React faster and faster and bigger and better. And, um, right now the, the part of the, that I'm working on it is using all of those different little projects to enhance the current one that I'm using.

And, uh, Yeah, it's, it's been, it's been fun. It's been interesting. And, uh, I think a lot of users aren't even realizing the benefits that they're getting from all of this conversion of the site is significantly faster than it used to be and it's only going to get faster and we're kind of slowly, but surely moving to a more, a SPA - single page application - type of experience. And, um, it's. It's only going to get better from here on out. And, uh, there's a lot of really cool things pipeline that I probably shouldn't talk about before we, before we get closer to, uh, to actually building them. But, um, I'm sure I'm really excited for where CodePen is going just in the next few months, if, if not, uh, the next few years. And, um, there there's a lot in the pipeline and so keep an eye out.

Michaela: [00:42:21] Yeah. So what I get from what you explained right now is that you moved actually to this new technologies, because it allows you to build the site in a much more modular way, but also to increase that speed after of the web application and to have a better and more. Well a more modern user xxperience where you have this single page application. Yeah. Just parts of the side can refresh themselves. Right. Instead of off having to refresh the whole, whole site, is that, is that the main motivation for those technology changes at CodePen?

Cassidy: [00:43:00] Uh, no, I mean, it's, it's a really large bonus. Um, really a lot of the site is we're working to make it because like you said, it's becoming more modular. We're trying to make things so much more modular that when a lot of the new features that are coming soon, that I can't talk about, when a lot of those features start showing up they will be significantly easier to implement. Um, the way the site was built a year ago. Um, there a lot of it, so much of it was in Ruby on Rails and jQuery that a lot of the modern things that we want to do in a lot of the new features and aspects of the site that we want to build, just honestly, weren't really possible. Like we could do it, but it would take a lot of work and then maintaining, it would be a pain to, to work on. And so in doing all of these things, we're, uh, kind of setting the stage for a lot more new features to come in. In addition to the speed and the better developer experience, it's going to be a lot better for users because more new features and more, more exciting things are going to be able to come, uh, more often, a lot faster. And, uh, just overall it'll be a much better experience.

Michaela: [00:44:15] Yeah. Sounds very exciting. Yeah. I recently read an article about how Slack actually modernized their UI and they also did it piece by piece when it just replaced, you know, the old UI with, with pieces of the new UI and they found it really interesting, um, because it's somehow, tackling the problem of, should you rewrite your code right. Should you rewrite from scratch and how you're going to approach that. And, um, so when I saw your talk and how you actually approach it with CodePen, it really reminded me on how Slack rewrote their UI, just to modernize that, give a better user experience.

Cassidy: [00:44:55] Yeah, it's good to do it. It's good to do a piece by piece because it, otherwise it'll just take too long if you do it piece by piece then. Yeah. Especially if you make like small styling changes and stuff, that can be progressive. And then users, aren't just like, Whoa, everything's different. I hate that. We can do things that make it slowly, slightly different. Um, While also changing the technologies and, and so making the site look better, feel better. And then also under the hood, just work a lot better too.

Michaela: [00:45:26] Yeah. Yeah. And as you said, I think that some of the changes are maybe nonfunctional, so it's harder for users to really understand what's going on. And so if they have gradually smaller changes and smaller adjustment, they can also feel that it's better. Right. They have this feeling of it's a, there's a progression, you know, and there are good things to come. So. Maybe one of the last things I wanted to talk with you before we are ending is just side projects and how you handle that. I saw that you did a lot of hackathons, for example, then you have, you have your, your jokes and Twitter. That probably take also quite a chunk of your time.

Cassidy: [00:46:10] Yeah. Less time than people think

Michaela: [00:46:14] it comes naturally, right?

Cassidy: [00:46:15] Yeah. I'm hilarious.

Michaela: [00:46:20] Um, how do you handle that? How do you handle that and how do you integrate that with your, with your work environment? I also saw that you are actually have been an evangelist before, right? Where I think being more public is more of your role. Is that right? Still something that's part of your job description at CodePen, or is it really something that you say it's all in your free time.

Cassidy: [00:46:41] Yeah, so, so speaking at conferences and meetups and hackathons and stuff that used to be part of my job and, uh, and I loved it. I, and I still do love it. Speaking at events is a really good time because, uh, you kind of get to see that aha moment when developers finally, uh, understand how something works and, uh, both to entertain and to inform it's, it's really, really fun. Uh, to, to do that. And. I kind of moved away from it being a part of my job for awhile, mostly because it, it was really just kind of life consuming.

I was traveling a lot on weekends as I was speaking constantly when I was, when I was really kind of in, I don't want to say my heyday cause I sound so ancient, but kind of a, when I was, when I was really in the heyday of, of speaking regularly. Um, there, there were some points where I was speaking every single day for two weeks straight, both on the weekends and on the weekdays. And I was just burning out constantly. And it was, it was rough because I was doing it because I liked it, but I was also kind of obligated to do it because it was a part of my job. And so now, because it's not as much part of my job, I'm able to speak at events that I want to speak at, not just because the company wants me to speak at them and, uh, I'm able to still like kind of plug CodePen because I work there and stuff.

So it's advantageous for the company, but also I'm able to kind of do it on my own time and determine my schedule where instead of speaking every other week, uh, and traveling every other week to a conference, I travel maybe, three or four times a year for a conference and speak more locally and, and, and kind of have a little bit more balance in that regard and then, uh, with regards to side projects that are not speaking or being silly with jokes or something like that, the keyboards, and then just coding projects and stuff in general, that's something that, um, I just really love, I love being able to build things and that's, that's kind of why I like coding and why I chose this profession to begin with. Um, I love being able to build things with my brain, with my hands, and then in general, and I've, I've said many times if I were to ever retire from software engineering, I'd love to be some kind of woodworker or carpenter and just build things. I love it. And so I kind of got into keyboards, um, and anyone who follows me on Twitter will know that I am into mechanical keyboards and probably talk about them too much. I got into them when I was living in New York, but I didn't really have time to experiment with them much. I was more just learning a lot and watching from the sideline saying, yeah, keyboards are cool, maybe someday. And then when I moved to Seattle, I dove in deep and it turns out the community here in Seattle is one of the biggest in the world actually.

And it's a blast and these sorts of things, they are, they seem silly, but they're, they're really important to me because I'm able to kind of give back to communities and also kind of just exercise some creativity and do things that I'm interested in. And I love being able to mess around with my keyboards. I'm looking at them now as I speak, they're there and I, I there's memories attached to them. As I built certain keyboards, I was at a certain time in my life. There's stories attached to each one of my keyboards and it's fun because I get to build something, it's creative, I get to make it aesthetically pleasing, but it's also functional. I get to actually use these things in my work and get pleasure out of typing with a different type of switch when I, when I switched around with them and, uh, and programmed the electronics to do exactly what I want, where I can add my own little macros and then functions and stuff into my boards. And so that's kind of where the keyboards come from, but in general, uh, for side projects and having the freedom to work on things, and it kind of all comes down to, I love being able to build and be creative and work on things. And luckily with the flexibility of my remote job and, uh, just. My company in general and kind of the way I've, I've set up how I want it to work and how I want to play, uh, for lack of a better word.

Um, I've, I've been really blessed to have the opportunity and the privilege to, uh, have that flexibility, um, in my work life balance and, uh, just in what I want to do. And, um, What I would say to anyone out there who is still listening to me, ramble. Um, if you're right interested in some kind of side project or some kind of thing, kind of figure out why. Um, I was really building side projects initially, because I was like, Oh, if I have a lot of these, it'll help me climb the career ladder. And now that I'm at a point in my job where I'm very content with where I am in my career. I don't need to be a CEO. I'm very happy being a developer, doing developer things and coding. Um, I build side projects because I genuinely get enjoyment out of them. And so I work on side projects, not because they're good for my career, but because I'm genuinely interested in a certain type of technology or in learning a certain thing or in just being creative with something.

And kind of getting to that point was. Oh, a weird transition for me, I guess. That's what maturity is. Being able to determine, uh, what you're working for, uh, with purpose rather than, uh, Just kind of trying to get to the next big thing. Um, and so between building keyboards, learning how to laser cut, messing with different technologies, even trying out game development, um, just a bunch of fun things that I really like to experiment with between all of these different things. That's really how I've, uh, I've made time for those things, because I care about those things and I've set up myself at work so that way I can make time for those things. And, um, There was this song that came out. Um, I forget when it came out, but I know that it was in, it was in a very obscure movie that some people love. Some people have never heard of some people didn't like called 'A Prairie Home Companion' based on the radio show and the song lyrics that really stuck with me. Um, It's a, it's a song called 'The Day is Short'. The chorus is, "the day is short, the night is long. Why do we work so hard to get something that we don't even want?" And, uh, But those lyrics. When I, when I heard that, that really stuck with me, I want to work for something that I want to do. I want to work for something. So that way I can have the flexibility at work, to have kids someday and, and be at a place where I can be spoonfeeding my kid. And also talking about advanced technical topics.

I want to be at a job where I can work on a bunch of different, interesting hobbies. And things that are just interesting to me and fun to me without having to stress out about, uh, getting my job done for someone else at a company. Um, and I've, I'm getting closer and closer to that goal of, of having all of that flexibility. And it's really, really exciting. And, um, I think. To all those out there, figure out what you do want and figure out what you are working towards, not just to have that certain position. So that way you can say, yay, I've made it, but figure out what really does make you happy. What really does motivate you to get up in the morning and to do your job and how can you tailor your career experience to work towards that. So that way you can really just not only enjoy your job, but also enjoy the things outside of your job too. And, and, uh, know that your worth is not just in your work, but in, in your whole self and bring your whole self to work and have that ability to bring your whole self to work. And also, uh, Be able to be your whole self outside of work and not constantly be stressed about what's going on at the office. This kind of turned into a really big philosophical ramble, but that's that's, I hope that generally answered your question.

Michaela: [00:54:47] Yeah, it answers my question. I think I can relate to so many things that you said. I think it's really this drive that you have for projects or for things that just give you fulfillment, that gives you joy, that you value that you just really like to do. But I also think that even having this, um, as an end goal or as a goal is already too much. Try out some stuff, you know, have, have a project, have a side project, and then if you figure out, actually that's not for me, you can drop it and it's it's okay.

Cassidy: [00:55:19] Yeah, it's good to experiment with your life.

Michaela: [00:55:22] Exactly. Yeah, it's good. And don't be afraid because you're not sure if it will stick, it will show itself if it sticks or not. And I think it's just, I think the most important thing is to get over that fear of trying out the different things, try it out and see, and then also. Be relentless with just letting it go again. It's okay. Yeah, we tried, for example, I don't know, blogging, or you tried public speaking and you figure out it's not for me. Let me move on to something else and try it out. And I think we cannot know before we tried it or, you know, we experienced it.

Cassidy: [00:55:58] Yeah, there's a, there's a gal, uh, Rebecca Garcia. And she gave a really good talk once that stuck with me. And she said, when you're building not only your personal brand, but just also like your career for yourself, it's just as important to know what you like as it is to know what you don't like. And, uh, sometimes it can be as simple as for example, I loathe C++ that language has broken me. I do not like it. And so I avoid all projects and all jobs that would involve me getting close to C++ that's just, that's just me. I'm not saying everybody should dislike it. That's just who I am. And I think that, uh, having that list, whether it be. As simple as a programming language or as big as, I don't even know just a type of work that you want to do. Let's just say you dislike consulting or you love consulting and you just like product work, something like that. It's good to think about that and be aware of that so that you can, uh, you can be fulfilled in your career and, uh, not just WORK for the paycheck so much, and it's okay to work for the paycheck, but you might as well try to have some fun while you do.

Michaela: [00:57:06] I think you can optimize that by little steps. And I think that's the most important thing that you, you have this, maybe this bigger goal, and maybe you don't even know exactly what your goal is, but just. Observing your surrounding and thinking, what little thing can I improve today to, you know, make it much more enjoyable for me? I think that's, that's the right approach to, you know, tweaking it a little bit. And then over the time it's this compound effect that you're actually seeing you're in a place that's much more enjoyable. Then a year before.

Cassidy: [00:57:37] Right, exactly. Those are those little tweaks really do matter. And, um, especially when, just like, it feels rough. There there's so many crazy things happening in the political world right now. And on social media right now, there's so many things. It's, it's good to kind of figure out how you can improve your life or your work or something just a little bit incrementally over time, just to kind of maintain a sanity, maintain, maintain your ability to get up and go to work in the morning without being too stressed about it. And, uh, and without just completely disliking what you do. Um, I think that's a really important thing. Yeah.

Michaela: [00:58:17] Yeah, I agree. I agree as well. And I think that's a really good, uh, end for us for this podcast. I'm so happy that you have been on my show, Cassidy. Thank you so much. It was really a good talk with you. Uh, many insights into your work with CodePen, but also how your brain works, what you enjoy your side projects and, uh, yeah. Thank you so much for your time.

Cassidy: [00:58:40] Yeah, thank you so much for having m, this was a fun time.

Michaela: [00:58:41] Wonderful. Thank you.

Michaela: [00:58:44] I hope you've enjoyed another episode of the Software Engineering Unlocked Podcast. Don't forget to subscribe. And I talk to you again in two weeks. Bye!

Copyright 2022 Doctor McKayla