software sessions

Choosing the Right Job with Cassidy Williams

Cassidy walks us through her career and gives us insight on choosing jobs, quitting them, and focusing on what's important to you. We also discuss keeping track of her many ideas, teaching workshops at React Training, and why Amazon was a poor fit.

Cassidy is a developer and instructor at React Training and the Director of Outreach at cKeys, a Seattle based organization that promotes learning electronics through mechanical keyboards. She previously worked at Amazon, CodePen, L4 Digital, Clarifai, and Venmo. However, she's probably best known for promoting diversity in tech, creating cool mechanical keyboards, and making memes come true.


Current Organizations


Notetaking App

Resources for new conference speakers


Theme music is 12:30 AM by Crystal Cola.


Completing tasks by writing them down

Jeremy So one of the things that I really admire about your output is that you seem to be really intentional about how you spend your time. You get these random ideas like making a keyboard that has Scrabble letters on it or making funny videos about development. How do you get that focus? How do you pick something out and make sure you follow through and get it done?

Cassidy I appreciate that you think it looks like focus instead of just like, why is she taking on so much? Because if you talked to anyone close to me, they'd be like: You need to pick something and stick with it and not just jump around so much. But really, for all of the projects that I have started -- Yes, a lot have been completed and so that part is focused, but there are plenty that haven't.

But I will say that I try to be strict with myself by having:

  • A todo list that I try to do every single day
  • A weekly todo list
  • A todo list of things that I can put off whenever, but it'd probably be a good idea to get those kinds of tasks done.

And so between my own lists and a good calendar that dictates how I spend my time -- and I try to be good about that. The whole self discipline is pretty difficult, especially when, you know, I like video games and stuff. And so I definitely have to find a balance there.

But, I'd say for the different projects and everything, I feel like a lot of them I've been just excited enough about, or I'm just like, I'm going to follow through with this. Even if it takes way too long or even if it is just a really slow project that I have to work on for a little bit, then take a break, then work on for a little bit, then take a break and there are definitely some projects where I started it way back in like March of this year, and I'm still waiting for it to be finished because I'm blocked by something, but I'm hoping certain other things go through.

For example, that Scrabble keyboard, you mentioned that one. I was super excited about it, but man, I was delayed for a really long time on that project just because I had to get a license from Hasbro to be able to actually produce it. And so I always try to have something on the back burner.

I really like being able to build things, whether they be physical things or products or just coding on fun silly CSS art or making a silly video or something. But yeah, it's mostly just me trying to have fun with the time that I have and I know that someday in the future I'm going to want to have kids and I'm going to want to settle down and all kinds of stuff.

And so I'm really just trying to take advantage of the time that I have now where I have the freedom and a job that gives me the ability to work on all sorts of different things.

Jeremy So writing things down is really important because, it makes you keep track of things -- like you said, the Scrabble keyboard, it took you a long time because you had to get rights. So that would be something that you really track. I don't know if that's on paper or if that's on some kind of application, but rather than just thinking of ideas and going like, "Oh yeah, I'll get to that eventually." and just sort of forgetting about it.

Cassidy Right, yeah. If I have it written down and believe me, I write all my notes down in Bear, and it's a really nice markdown editor. I also have a little field notes, physical notebook next to me at all times. These things are packed with lots of different ideas. And so, it's not necessarily the most organized thing, but yes, I would say just being able to write it down, it brings the idea to life.

It's not just something that's in my brain. It's something that I've thought a little bit more about. And then once I have started writing it down, I could say, okay, you know what? I like this idea, but I'm putting it off for later. And then later when I do go into the ideas section of all of my notes, I can say, ah, I didn't actually follow up on this one.

This was a good idea. And then I can -- Kind of flush it out and stuff. And so getting out ideas, even if it's just something dumb that I scribble in a notebook while in the car or on a train or something, it keeps those ideas fresh and it kinda gets the creative juices flowing too, because even if one idea isn't necessarily successful, it might lead to the next idea that could be interesting to work on.

Jeremy Yeah. And I think it sounds like that's important too -- that you write it down in the moment so you don't forget because those ideas, they just kinda come to you when you least expect them.

Cassidy Right, exactly. And if you don't write them down, I can't tell you how many ideas where I'm just like, Oh, I'll remember this later, and then I kick myself because I've just totally forgotten it.

And that happens all the time. If we have like a funky dream and we want to tell our friends about it, and then we just forgot what the dream was about that's just how our brain works. And so actually having something where you can write it down, whether it be a digitally or physically I think it keeps your mind working and then it makes your ideas a lot more real.

Choosing a job and deciding when to leave

Jeremy Mmm. For sure. So over the past few years you've worked at a lot of different companies, whether that's Venmo or CodePen or Amazon. When you decide to pick a job or pick a company, what are the main things that you look for either from the company itself or during the interview process?

Cassidy That's a good question because I think I've looked for different things over time and I've started to really realize that. And what I should be prioritizing as I've switched around different jobs because, so for those who don't know, I have jumped around a lot and kind of unintentionally, just, that's how it happens.

I'm on my sixth job in the past five and a half, six years. And so it's been a lot of jumping, but it's always as purposeful as I can be. My first job out of college was at Venmo and I really loved working there -- I thought it was great. I had a role that was a combination of software engineering and dev evangelism and I was really determined to climb the corporate ladder.

And I did as much as I could, took on a lot, burnt out a lot. Just trying to work really hard and show them what I could do.

And Venmo was bought by PayPal. PayPal was spun off out of eBay. Lots of stuff happened and it was starting to be made clear to me that, that a lot of my projects were just going to be cut.

And so I started being more open to the idea of talking to other companies. And a startup called Clarifai approached me and they wanted someone who could lead their developer relations program, who could be their first front end engineer working on the web parts of the product.

And I thought it seemed like a really good opportunity to not only move up the ladder, but also have more of a chance to manage people and have a good experience. And, at Clarifai -- I worked really hard and ended up managing a few people. I got to work with my sister, got to make some really good friends.

And at that point, as much as I enjoyed it, I was kind of getting tired of New York city. And so I decided I wanted to move away. And so I decided to find a role that was less on the dev evangelism side, but just straight technical. And I ended up getting a senior software engineering position at a creative agency called L4, and L4 was awesome.

I got to manage a team of six developers and I was a tech lead on a few different projects and it was really, really fun working there. I loved working there. But yeah, similarly to Venmo, it was bought. And, as much as I liked L4 a lot of things were changing and it was starting to be made more and more clear to me that it was not becoming the company I wanted to work at.

I really loved the work life balance aspect of it and the encouragement of creativity and messing around with things. It was at L4 that I started getting really into mechanical keyboards and laser cutting and just making things. I wanted to do more of that.

But unfortunately, the parent company that purchased L4 -- They were not as excited about that idea. And so, I ended up looking for a new role and my sister happened to be working at Amazon at the time. And so was my husband and I ended up joining Amazon along with them.

And it was not a great idea. You know, Amazon -- some people have really awesome teams that they love, and there were some great people that I worked with, but unfortunately, it really wasn't a fit. I did not enjoy the political environment that comes with a large company where depending on how certain people get along in a company that'll determine how well you can do your job.

I liked the idea of being able to work hard and then you get your job done. But, unfortunately on my team, that wasn't necessarily the case. And I just didn't like it. So I ended up calling up CodePen and I had talked with CodePen in the past about interviewing with them and realized that probably would have been a better fit for me as a product that I use and love.

So I left Amazon after only about seven months. I thought I could stick it out a year, but I was really miserable there. And at CodePen, I loved it. It was my first remote job and it's a small team of eight people and I got to wear a bunch of different hats. I got to lead the conversion of the site from Ruby on Rails to React in a lot of aspects of the site and work on some really interesting things.

Joining React Training

Cassidy And I really enjoyed it. I really get along with the team. To this day, I still talk with them a lot. After I hit my year at CodePen, I was realizing that I was missing a lot of the developer engagement and interaction that I had back when I was a dev evangelist.

And back when I was working a lot more individually with developers. I had started talking to my now, current boss, Ryan Florence. And he and his business partner, Michael Jackson, they've written so much amazing software. They wrote Handlebars and unpkg and React Router and Reach UI, and so many cool things and a lot of stuff that ended up being core to React itself.

I had met Michael at a conference and I had talked to Ryan just on Twitter a bunch, and they had asked if I might want to contract with them, to start teaching React a little bit. And as I talked with them more and more, it just seemed like it'd be an amazing fit to just join them full time.

And that's how it ended up happening. And so now, I'm at React Training full time and I teach and it's awesome. I really love it. Being able to work with developers and see that aha moment when they understand something for the first time. And it's really, really fun.

I'd go on two trips a month and then in between those two trips -- and those trips can be to individual companies or to cities -- whether they're private workshops or public workshops. Or I'll do remote workshops, or I'll work on new curriculum or open source. And it's a really great role because I'm able to -- First of all, interact with developers a bunch, which I love. I'm able to still code, which is important to me and I enjoy. But also, it gives me the freedom to work on side projects and to do all of the silly things that I do, whether it be making a video for Twitter, or work on keyboards, or experiment with new technologies and stuff.

And I think when I look for a new role now it'll be hard to pull me away because it'll have to be something where I have the freedom to work where I want, which I love being able to do that, but also to have the freedom to work on things outside of work and not have it be owned by the large company that I'm working with or -- I just love being able to interact with people, to speak at conferences and to also just work on my own thing on the side too, and kind of just live my life where my job is not my life, it's just a part of my life. And I think that work life balance is something that I didn't necessarily know I wanted until I found it and it's awesome.

Jeremy So it sounds like you're bringing together a lot of things that you previously did, right? You used to work Venmo as a developer evangelist and you really liked that interaction with developers, being able to talk to them, being able to help them and meet with them, that sort of thing. But you also wanted to still be able to work on projects of your own in terms of building software.

And it sounds like this role is kind of the best of both worlds. You don't get burned out on just flying around the country and doing conference talks, but instead it's sort of a mix of doing the work and doing talks.

Cassidy Right. It's a really nice balance and as I've switched around roles it's been to find something that might fit me a little bit better. And it's been a learning experience every single time. And who knows, maybe this new role will be a learning experience for me someday too. But, I think people as they go into a different job, they should treat it as a learning experience.

Whether it be because they want to stay at this job for 10 years or for one year or six months. Because, no matter what, it's something that will be on your resume. It's something that will be a part of your career and, as long as you get something out of it that can help you later in life, that what's really the most important part.

Why Amazon was a poor fit

Jeremy So I want to step back a little bit and go back to your time at Amazon. I'm kind of wondering, during the interview process, or during your first few days at work, were there things that you noticed that were signs that this might not have been a good fit?

Cassidy You know, I knew probably within a week that I shouldn't have joined Amazon and I hate to say it cause it sounds like, like such a negative thing. During the interview, I was very excited and if I'm being honest, I was really enticed by the cool job title and the money. Large companies, they can pay you a lot and they can give you some nice job titles.

My job title there was head of developer voice programs and I was coming in at a level six and I was doing all of these cool things and I was just like -- Oh, this will be great for my career going up the ladder. But when I finally joined the company, I realized a few different things, but the main thing was, I couldn't deal with the politics of the, the whole politics of the organization. I knew immediately just how certain people treated each other. And, and again, I'm not saying this happens at all of Amazon. I really want to stress that it was really just my organization, the way certain people treated each other.

And how they would say, okay, well, don't talk to this person because that person doesn't like that person. And so if you talk to them, then we might not get this part of the product shipped. There's just things like that. I thought that was so silly and it bugged me that, that kind of conversation was a driving force behind actual work happening.

And there were aspects of the job that I did like. It was a neat role where I got to work with my sister a bit. I did get to interact with external developers and I got to experiment on new features that they wanted to bring to the Alexa SDK. And there were definitely some really cool aspects, but because of that whole politics discussion, that really kind of tainted my view of a lot of what was going on behind the hood.

And, I unfortunately saw a lot of people who they were being treated unfairly because of these kinds of politics decisions, or because one person didn't like another person or, because of some sort of bias that a certain person might've had.

And so, um. Yeah, that's as politically correct as I can, as I can really talk about it. But, yeah, it was, it was not an ideal fit for me for a lot of reasons, but it was grand majority that for sure.

Jeremy Yeah. And I think that's really tricky because, I think in a lot of cases you'll have an interview with a company and during the interview it seems like they have everything together and things are great. And then you get in on that first day of work and you're like, Oh wow, this is not quite what I imagined.

Cassidy Right. Yeah. And, I think what it came down to for me was I had to realize for myself what I prioritized in my job because if I decided to just like ignore the politics and just sit with it, I could be still working at Amazon today and just kind of cruising, doing the job -- Occasionally having a late night and then, going home and, just kind of ignoring it. But because, in my work, I really like to have some sort of fulfillment. I want to be proud of what I'm producing, but also I just really want to be able to be free to work on the things that I want.

I want to be able to, not have to worry about if someone doesn't like X thing, then this could really damage some other thing that's completely unrelated. Whether it be in my work or just a side project on my own and I don't know, little things like that, it kind of opened my eyes to it.

When I was working at L4, I really realized how much I enjoyed doing the side project thing, managing people. Messing with a laser cutter, as silly as it sounds, they had a laser cutter in the office and I loved it. And, then when I went to Amazon, even though they had all of these things, it was kind of expected, no, no, you don't do that.

You work on this team and this is all you do. And I would get messages super late at night at like one or two in the morning saying, Hey, you need to reply to this email so that the director knows that you exist and that sort of thing. It didn't foster that kind of work life balance. And, some companies are like this, not just Amazon and several companies that are like this, where if you have a side project, then, they own that side project. Or if I, for example, if I wanted to go into game development, if I wanted to work with someone on a game, then it has to be an Amazon employee that works with me on said game.

And so there were just things like that where to someone who doesn't do a lot of side projects or someone who doesn't care about the making of silly things outside of work or someone who just wants to go into work, go home and that's it -- Some people thrive in that environment.

I have a lot of good friends who do and it would be a great role for them, but for myself, it, it just wasn't, it wasn't a good fit.

Jeremy Yeah. Like you said though, that really taught you what was important to you and that really helped inform your decisions going forward.

Cassidy Yeah. It taught me that I shouldn't be going for the big title. I shouldn't be going for the big bucks. I should be going for a life that I want and a role that will allow me to do that.

How to leave a company

Jeremy Yeah. And so the next thing I would like to ask is, you've moved from company to company -- When you make the decision to leave, how do you form your exit strategy? How do you pass on your work to whoever's going to still be at the company and make sure that transition is as smooth as possible?

Cassidy Oh, that is a good question. I think, I think it kind of varies from company to company because, I'd say that a grand majority of the time, quitting a job is a business deal. It doesn't have to be personal, but unfortunately I make things personal and so I tend to stress out about it. I'm just like, Oh my gosh, they're going to be so mad at me when I quit. I have to, I have to figure out how to fix this.

They never are. Truly, almost every single time someone had said, well, we're really sorry to lose you, but you're welcome back if you ever want to come back. That's been pretty much every single quitting experience I have had from one degree or another but leading up to it, it's so stressful because you don't want to make anybody upset.

You don't want to be in trouble, you know? It's, it's this whole mental game. But for myself, when I'm deciding if I'm going to leave, I tend to honestly, I just make a big pros and cons list. I remember, for when I was deciding if I was going to leave Venmo, I made a giant pros and cons list.

If I stay at Venmo here's the pros and cons. If I go to Clarifai, here are the pros and cons. And I ended up sharing it with a ton of people and asked for feedback. Certain people said, okay, you wrote this down, but you don't actually care about this. And I would say, ah, good point. I didn't need to actually take that into account.

And yeah, that's pretty much how I frame most of my quitting decisions. It's usually some kinds of pros and cons list. And sometimes they are a lot more detailed if it's really a tough decision. And sometimes if I'm just like, Nope, I want out like I was with Amazon, it's more about saying, okay, pros, I get to leave.

Great. Okay. At that point I just have to figure out how I'm going to word the quitting email and depending on the company, sometimes I've just gone and found my manager in person. I've said, Hey, I want to talk to you. Here's the deal.

I'm going to be leaving. And then sometimes, with a couple of the jobs I've had, I've just sent a really nice professional email and sent it to my manager. And then that was that. And so it definitely depends on the company, but that's my general process for doing so.

Jeremy Yeah. And I think a lot of people have a similar worry or anxiety about like, you know, I'm going to let all these people down and people are going to be mad. And like you said, I think in the end, I think people understand.

Sharing your knowledge with your team

Cassidy Right. And, I think at any company, whether you like it or you don't like it, it's kind of like when you, borrow someone's apartment for a weekend or something, like leave it better than you found it.

And I try to approach that with jobs and be just like, okay, well I might not have made the largest impact in the world, but I made this company or this project or this team better than I left it better than when I found it originally. And, I think as you're doing your job, you want to make yourself invaluable.

You want to be the person where everybody's just like, Oh man, we need this person on the team. But you should also, uh, there's a term called a bus factor where if you were to be hit by a bus would the entire team or company, be screwed. If so, that is not great.

You need to have a plan in place. I think as you're working at a place, you should make your knowledge known, whether it be just writing up documentation of everything you do or having someone where you pair program on occasion or, or you give lunch and learns, kind of making sure your knowledge is shared so that both -- people can see that you are the expert at the thing that you do, or do you know the most about the thing that you do, but also if you were to leave, it wouldn't be the end of the world. I think that's an important thing to do. Just for both, for the team's sake, but also it makes sense.

It makes leaving so much easier because then as you leave, I can kind of be a clean break and you can just say, okay, everyone, you know that I have this documentation, use it, and if you have questions, I'm here for two more weeks, you know?

Jeremy Yeah. Basically, even if you know you're not planning on leaving -- Having that sort of trail or building of that knowledge, either in documentation or amongst your own team and that way it just makes it easier to make that clean break.

Cassidy Yeah, well, and it also, honestly, it makes it easier to get a promotion too, because then the company will see like, Oh, this person's a team player.

And then also people can vouch for you if they do peer reviews or people can say, Oh yeah, they contribute a lot to the team. They, they really are someone who cares about this team there, there's all kinds of both selfless and selfish ways to do it. But, overall sharing the knowledge that you have with your team will always be valuable to you, both for the clean break and also just for sticking around and having documentation for others and for yourself if you ever have a brain fart that you need to recover from.

Jeremy Which that would never happen.

Cassidy Of course! Never, no.

Working at an agency (L4 Digital) and asking the right questions

Jeremy And so I guess another thing I'd like to ask is, when you worked at -- was it L4 Digital?

Cassidy Yes. Uh huh

Jeremy So that was an agency where you worked on other company's projects, right? And you were kind of jumping from project to project. How, how is that different than your work at CodePen or your work at React Training where you're building something for your company.

Cassidy It was interesting and I think that there's a lot of mixed feelings about agency work and some people love it, some people hate it, and there's not a lot of in between.

I definitely am an in-betweener there were definitely some clients where I was just like -- Wow, this is terrible. Why do I have to work on this stuff for them? But then there were others where I was just like, okay, that wasn't so bad. And that's that. It's cool because you get a variety of different projects there.

There were some projects that I took on where each were a full six months, and then there were some that were really short, that was only like a month long where they just said, okay, we just need someone to build this thing. And then I built it. And then. Got to move on. And so it's really good for getting a variety of projects under your belt, and it's really great for building tech leadership skills because you get to say, okay, well, I'm the lead on this project, go -- and your team can trust you with that. I really enjoyed that aspect of agency work. I will say if I were to ever go back to an agency, it would have to be a company that really cares about the developers themselves. Not so much about the bottom line, but about their own developers.

And, if there's a bad client that's treating their developers badly, they cut that client out and they protect their developers rather than the money that they get. And I think that that was something that I think L4 did really well, where if I had a bad client, they had my back.

And it was, it was awesome. And, I will never forget some of the people who stood up for me when a client was being a jerk. And, I think that really makes all the difference where if you go to an agency where you just go from project to project and then hope that you have enough work for, for the next year and focus more on the money that you bring in rather than on the people you choose to work with, that's when it's not as great.

But if you work at an agency where it's all about just, good people working on projects and the company has your back and then you can trust the people there. I think that that's the dream agency to work for.

Jeremy Yeah. That's great. Cause I mean, it's sort of the impression I get is when you join another company's project in a way that that company becomes a part of your team. And if they're not a very good team or not a very positive team then that really just ruins the experience for you. And it makes a lot of sense that you would want to make sure that if that becomes a problem, your company has your back

Cassidy Yeah, because you want to maintain your good company culture.

You don't want a bad egg to come in and then you're just like, well, it was good while it lasted. You do want to keep that solid company culture going. And I think that there are a lot of agencies out there that do it well. And I've heard stories of agencies that don't, but I think that's something that you can tell right away in an interview just by, by asking those kinds of questions.

Jeremy Oh, so like when you're interviewing for the agency, trying to figure out like how, how far are they willing to go to kind of protect or to help out their employees.

Cassidy Right. Yeah. And for example, at L4, one of the things that I did that was, you know, looking back, it was probably a little crazy bold of me, but I wanted to know where, all of my onsite interviews had been men and I said, as much as I really like talking to you, you've all been really nice -- can I talk to a woman because I just want wanna get a feel for that. And they're just like, Oh, uh, yeah, sure. And, and they found one of the QA developers and she came in and I was able to ask her honestly, I was just like, okay, what's the culture like here for women?

Because I've noticed there were not a lot in this interview loop. And she was able to reassure me and say, Oh, that was just a fluke. Oh, I promise they're awesome that I would treat them all like brothers and they're great and everybody here has your back, whether it be a bad client or a bad egg in the company, which there haven't been hardly any bad eggs like, like she was really, really reassuring.

And she was the reason why I said yes to the job because, I was able to ask her those questions honestly, and she, she answered them really honestly. And I think being willing to ask those questions up front, when you're at a job interview, you're interviewing the company just as much as they're interviewing you.

So being able to ask those questions, I think is really important upfront, whether it's an agency or a product company.

Jeremy Yeah, I mean, that's a really good point that, when you're in the interview, to be able to ask, Hey, can I talk to somebody who's not a part of this process? Just so I can get what they think

Cassidy Right.

Jeremy Kind of break out of whatever standard process they have, whatever script they have, and really get to talk to people.

Cassidy Yeah, exactly. And it can really make a difference. There have been several people I know where they've realized, Oh no, I should not work here because they've asked those kinds of questions. They've gotten those kinds of red flag answers. And I think that's really important because a, that can save you a lot of paperwork and that can save you a whole interview loop if you ask those right ones early.

Preparing for an interview

Jeremy For sure. When you're gonna prepare for an interview, do you ever reach out to people within the company beforehand to try and get a little bit of Intel or anything like that?

Cassidy It kind of depends on the company. Typically, no. Typically I kind of go in blind and hope that they like me. With some companies, for example, really large ones like Google or Facebook you kind of know what they're going to ask you is going to be an algorithm based question.

They're not going to ask about your personality or anything. It's, it's just going to be okay. Write your white boarding answer to this, to this data structure question or something. And so for, for large companies, not so much because there's not really any use in that but for smaller mid size companies, depending on how well I know people in the company, I might reach out.

LinkedIn is great for that and Twitter is great for that. For example, when I was interviewing with CodePen, I had privately DMed, a person to be just like, Hey, is this generally how this will go?

I get a little bit of a feel for it, and then I go from there. It definitely depends on the size of the company and what I gauge the interview is going to be, but typically I just kind of ask that straight up after the first recruiter call or initial call where they say, okay, here's what the role is. Do you want to move forward? This is the process. I'll ask as many detailed questions as I can so that way I can properly prepare. Yeah, that's kind of my general approach. I haven't worked for a lot of companies where I need to find some third party to answer questions about it so much. But that's just mostly because I've kind of gone in blind for most of my interviews.

Jeremy I guess I was also thinking more in terms of trying to figure out what a company's culture is, but I guess that might be kind of tricky because, you know, teams, especially if it's a big company, teams can be so different.

Cassidy Right. Yeah. For example, my sister and my husband worked at Amazon and they had very different experiences. And so for a large company like that, yeah, there is not really a use in doing something like that, but, but yeah, I guess for smaller ones, sometimes. Again, the companies that I've worked for, Venmo was right out of college and I was just like, yeah, I'm going to do it. I liked the vibe and I didn't even consider that.

And then with Clarifai, it was so small where I was just like, you know what? I think I was the 17th or 18th employee there. I was just like, it's small enough where I can help form the culture, and that's kind of kind of how I approached it.

I think L4 was the first time where I've ever actually asked that kind of question, and it was just in the interview itself. Yeah, otherwise, I haven't personally done it, and that's just been because of me and the occasions that I've interviewed, but I could totally see that being really valuable for someone.

Teaching at React Training

Jeremy I want to bring us back to your start at React Training. Had you had previous sort of experience running trainings or I kind of wanted to get a feel for how is your start like? You know, you come into the classroom the first day, what was that like?

Cassidy Yeah. So, I've taught before. I have an online class for React and I've taught HTML and CSS workshops before. And I've given a lot of tech talks that are kind of workshop style. So I've done a lot of the speaking before and a lot of my, "interview process" was with the team.

And I say, I say it like that because it's such a small team that it was very different from other companies I've worked for. They looked at a lot of my tech talks and they had me explain certain tech topics and stuff. I think they kind of just wanted to see how I could teach and that sort of thing.

They saw my GitHub, they saw my CodePen, they saw that I could code, but, they were saying how a lot of people can code, but not a lot of people can talk about code. And so that's more what they wanted to assess in me. But actually going into the classroom for the first time, my first workshop was a remote workshop and I tagged teamed it with one of my coworkers so that way I could kind of see their teaching style and they would say, okay, you take this next section.

And the way I learned the curriculum was really we have an online course that's coming out soon. And, so I said, Oh, well, I'll help edit the videos for the online course. And as I do that, I can take notes on all of the different content and stuff.

And I'll make sure that I can teach to the online course and then see how you approach certain problems. And so that's kind of how I first got into it. And, because I have spoken at quite a few conferences and stuff before, I kind of just treated it like a talk that I was giving at a conference.

And I think that that has helped me because now I'm six workshops in or so, and now I can pretty much give the entire curriculum by heart if I needed to. And I have my notes with me just in case I go off on a tangent and need to come back. But, it's definitely a very different environment because you never know what questions people will ask. You kind of have to figure out all of the different ways to explain a topic that I'd say for every topic, there's probably five to 10 different ways to explain it, and you have to kind of assess the room and say, okay, okay. Based on this room, this is probably how they need this part to be explained or, or based on the level of experience, that this group says they have I might need to go a little slower in this section and that sort of thing. And, and it's all about, being able to adapt that kind of technical curriculum.

Jeremy Yeah. So one of the things I think is a little interesting about the class is it looks like you run the same class regardless of the level of students, at least on the website. And I'm kind of wondering how do you get a feel for either what the room is like or what the level of experience is like and how do you sort of tailor that, you know, to each class that you run.

Cassidy Yeah, and that is changing by the way, where we've, we realized this year that, Hey, we should have like a fundamentals and then an advanced course instead of just everybody learns the same thing. But there are definitely some sections that are easier to grasp and some sections that are related to more non React based web development where if they've used a lot of backbone or jQuery, this, this part will make a lot more sense to them. Meanwhile, this part will blow their minds.

I've taught, one of the groups was a lot of backend developers and they kind of struggled a little bit all the way through. But then as soon as I got to reducers, typically reducers are the thing that slows every single group down. But with this group, they were just like, Oh, wait, this is like MapReduce with Hadoop. We get this. And they just like powered through it. And so, it's really, it's just as I'm teaching, I can kind of sense, okay, are people squinting? Are people nodding their heads? Are people not sure where I'm going with this? I try to ask questions a lot. Just say like, okay, does this make sense? Or what questions do you have? Or if I phrase this way, is this more helpful? And, and that sort of thing. And those first few sections kind of determine both the speed and how I will approach the more complex sections.

Jeremy And for someone who, let's say is looking to take the course, is there anything you feel like they should maybe do to prepare, or is it just come with what you know.

Cassidy It's really come with what you know. Whenever someone does sign up for one of our courses, we send an email saying like, Hey, make sure you know these basic JavaScript fundamentals. And it's like: Make sure you know how to write a function and an if statement and like let and constant and that sort of thing.

And so we don't say like, come with nothing, don't worry. You, you are, you are expected to know a little bit of something. And so we, we do get that to you. But, besides that, we do really try to go from the ground up where any developer should be able to generally do it. And I even tested the curriculum on my sister and her boyfriend where her boyfriend knows React a lot, but my sister's a backend developer and so I gave it to both of them and kind of figured out, okay, here's how I need to adjust the curriculum based on the different types of people that could be in the room. And so, yeah, it definitely varies on the group, but you just kinda gotta be patient and flexible when you're teaching.

Jeremy And like, in your experience, you mentioned like reducers was something that a lot of people don't understand, but, in the case of the people who had worked with Hadoop, they, they got it.

What do you typically find are the most difficult things for people to learn?

Cassidy Oh man, probably, well, hooks in general, I think is a really interesting topic. It's something that is pretty new this year. And so as a result, because it's new this year, some people are just like, well, is this even needed?

And so, kind of understanding why it's needed. And, one of the things too is, is that we do in the workshop is we build one of the react hooks. Just from scratch, from the ground up. And then we could say, okay, this is how it works under the hood. It's not just a black box. This is how it works.

And this is why it's important to write it this way and not the other way. And we try to get at those kind of fundamentals. But a lot of times the questions that we get are like, this feels magical to me, and I don't understand why this works, or why was this decision made? And so, I think really just emphasizing why certain React things are written the way they are is probably the hardest for a lot of people to grasp. But just things in general. I'd say the things that people get the most excited about are probably the Context API. And then just how useState works. The things that are probably the most challenging to understand are the dependencies array and useEffect.

And then, just useReducer and how big and gnarly they can get if you don't code them right.

Jeremy Yeah. And so for people who are learning React now, there's been a lot of change in the last year or so. When they're looking for, say, tutorials online, are there certain concepts that you think that they should avoid or things that no longer really apply if you're starting now?

Cassidy You know, I still point people to, for example, my old React course that I made online, even though it has class-based components that don't use hooks at all and stuff. I think a lot of the fundamentals are very similar, and it's not necessarily wrong to learn class components, but because React is moving to a much more functional programming based world I do think that it's valuable to start learning React now with the new stuff.

Start learning functional components first with hooks first and really take that approach to things because it will save you a lot of rewriting in the future. And if you're starting a new project, do it with functional components and hooks and not necessarily with class-based components with render props and lifecycle hooks and stuff.

When Cassidy uses React

Jeremy And when you're deciding to work on a project, what's the thought process for deciding when to use React versus when not to?

Cassidy Basically if I have to do anything that's more complex than a static website, I tend to use React. I try to keep things as raw HTML, CSS and JavaScript if I can, like my personal website, I built it that way. Whenever I do just a small prototype, I tend to do it just with those.

But, when it comes to something that's more dynamic where it takes in a user input or it has multiple routes, or it has forms or some kind of interaction that's when I start realizing, okay, as much as I could reinvent the wheel, I could also just use React and get the project done.

I think everyone has a bar for their own level of complexity and you kind of need to determine for yourself what bar that is.

Myself, I try to stick with a no library type of world for as long as possible.

Jeremy Hmm. So basically, if it's pretty much a static site you'll just use HTML and CSS. But anything more complex, you'll just go ahead and go and use React.

Getting started with conference talks or teaching workshops

And for people who are interested in giving conference talks or in teaching a workshop, is there any advice that you could give to them in terms of either preparation or in terms of just learning how to do it, that sort of thing?

Cassidy Yeah. I would start with meetups. So many cities just around the country in the world have meetups every single week, multiple times a week. Just constantly, I think in my inbox, I probably have five meetup invitations just for this week alone. Um, and that varies on the city of course.

But, I would say just apply to speak at meetups and practice your talks there. And once you've got something solid that you're proud of start shopping that around to different conferences and conferences put out calls for papers all the time.

And, there's, for example, one Twitter handle that I like to follow is @CallbackWomen where all it does is tweet out different calls for papers for conferences to accept talk submissions. And, there are some conferences, for example, Cascadia JS that happened this past weekend, and they're already starting to prep for next year. They specialize in bringing in first time speakers. And so there's a few conferences out there that are really great for that.

I think there's one in London called, I think it's called You've Got This, and it's a conference dedicated to people who are early in their time in tech and yeah, I think if you want to really get into speaking at events, start small and then just start going with it start growing and don't be afraid to ask for help.

A lot of seasoned conference speakers are very happy to let you pitch your talk to them or practice your talk for them. I'm actually doing a thing on Friday where a bunch of people in my Patreon Discord group, we're doing a mini conference for each other where people can practice their talks and we can all give them feedback and stuff.

So, I think be willing to ask for help, but also, don't be afraid to apply to a bunch of different places.

Wrap up

Jeremy Very cool. So I guess to wrap up, how can people follow you and check out React Training?

Cassidy Yeah. So, if you look up Cassidy Williams, there's myself and a Scooby Doo character and I am not the Scooby Doo character.

My handle's Cassidoo on pretty much everything, GitHub, CodePen, Twitter, LinkedIn, all that jazz. And then React Training is just and then their Twitter handle is @reacttraining and their LinkedIn is reacttraining.

So, kinda stick to the brand and yeah, you can follow me. You can follow them. And, we'll be putting out online courses soon. So if you aren't able to make it to an in person workshop, more online things are coming.

Jeremy Nice. Well, I just want to say thank you so much, Cassidy, for coming on the show.

Cassidy Thank you so much for having me.