React Podcast

112: Kent C. Dodds on Epic React

Episode Summary

Kent C. Dodds spills the tea on his latest course, workshop, masterclass, creation Epic React. He shares what he's learned as a React educator and why *how* you learn is even more important than *what* you learn. When you finish this episode and think "wow, I wish there were 8 more hours of content just like this!", you're in luck. Kent and I recorded a new podcast series for Epic React. You can listen to all 9 episodes, for free, at epicreact.dev/podcast.

Episode Notes

News!

We have a YouTube channel for React Podcast 🥳
Watch the livestream of this chat with Kent and Subscribe for future chats!

Featuring

Kent C. Dodds — Twitter, GitHub, Website
chantastic — Twitter, GitHub, Website

Links

Related React Podcast episodes

Sponsors

Infinite Red

In over your head with a React or React Native app?
Infinite Red can help.
They are React Native core contributors who've been designing, building and shipping apps for over 10 years.
Learn more at reactpodcast.infinite.red.

imgIX

imgIX helps you deliver sharp, snappy images to customers with a powerful image processing and a simple API — delivered on a global CDN.

Get a $300 account credit by visiting imgix.com/reactpodcast.

Get involved

Black Lives Matter

Please join us in donating to the Equal Justice Initiative

Episode Transcription

Chantastic: [0:00] Kent, welcome back to "React" podcast.

Kent C. Dodds: [0:03] Oh my goodness, Michael, thank you so much for having me back. I love just chatting with you.

[0:07] [laughter]

Kent: [0:07] We have talked a lot in this month and a half.

Chantastic: [0:12] We have some secrets, but they're going to be revealed. It's going to be fun and I'm really excited for people to find these little Easter eggs. How you been? It's been probably, I don't know, maybe a year since we talked. I can't even remember what we talked about last, maybe hooks?

Kent: [0:30] Maybe. Was it React Rally? Was that the last time we did an episode together? I can't remember.

Chantastic: [0:38] Yeah, I think so. Maybe we were talking about...OK, if I remember correctly, we were talking about hooks, and your guiding principle at the time was like, "Don't go rewrite your rapid hooks yet. Don't believe any of the articles that are going to come out about these are the best practices in hooks because nobody knows."

[1:00] [laughter]

Kent: [1:01] Yeah.

Chantastic: [1:01] It must have been a year and a half ago or so, because we've had Hooks for two years now.

Kent: [1:06] Yeah, for real. It's kind of weird. With my marriage, I'm like "I can't remember life without you..."

[1:15] [laughter]

Kent: [1:17] But I know I haven't had my whole life with you, so I..."

Chantastic: [1:21] There was a time...

Kent: [1:22] There was a time when we used to not have Hooks. It's been a while.

Chantastic: [1:28] Yeah, it's been a minute. Now I feel that advice has probably had its moment, and we're actually getting to a point where there are some pretty good, strongly established Hooks practices. Even though the docs don't reflect that yet, still showing classes and whatnot, the world has moved on and is using Hooks and has a pretty good understanding of them.

[1:57] I'm excited to dive into a lot of what you've learned since the last time. First in all of that, I want to start talking about your course. Probably by the time this goes live, you're launching this mega React course and I want to hear all about it.

[2:24] Tell me a little bit -- like a high-level pitch -- of what this is. We're going to talk about what it is to you, what it's going to mean to people, all that kind of stuff. Tell me about Epic React. What is it?

Kent: [2:34] Epic React is my biggest effort yet at trying to make the world a better place through educating people. My entire goal of everything that I do is how can I make the world a better place for me, for my wife, for my kids.

[2:52] I do that best with software. I've learned that I'm good at teaching other people how to write good software, high quality software. The best way that I can make the world a better place is by making good instructional material, and scale way beyond myself.

[3:13] I've given a lot of workshops to a lot of people, but I only scale so much. Epic React is basically all of the knowledge that I've accumulated, and been able to distill into a teaching form, and scaled it beyond myself.

[3:31] Recorded it, complete with all the exercises and everything. Created it in a way that's very self-paced. It's not just a collection of videos, but it's actually something that you'll learn this stuff. So much of my life has been dedicated to how can I take the knowledge that I have and transfer it into other people's brains. That's what Epic React is for.

Chantastic: [3:55] Nice. I know that a lot of people know that you've been putting out content they might know you from, "Beginner's Guide to React" or some of your suspense course that came out last year. They might not know that, you're doing workshops, all the time. You're constantly helping companies and people develop in React.

[4:18] It seems through that you've probably learned a lot through seeing people's real world problems and the things that they're trying to solve with React. What has been some of the most surprising things that you've learned, as you've been kind of boots on the ground with a lot of people working in their apps, working in training their companies, etc.?

Kent: [4:43] You're right. It's interesting. When I went full time teacher, I was worried that it would mean that I no longer get exposure to big problems, right? Now I'm working on little demo apps, little educational apps, whatever.

[4:58] That turned out to not be at all what happened. What actually happened is I get more people asking me the hard questions that they face in their apps. I actually get more exposure to the hardest problems, which is been an interesting thing.

[5:13] The stuff that I see in people's code, or honestly the biggest surprise is that I see the same things over and over again.

[5:27] [laughter]

Kent: [5:27] This is where my blog posts come from, and everything else. When I see the same thing a couple of times, I'm like, "I've absolutely got to write a blog post about this." Unfortunately, not everybody reads my blog post. I still see those things, but now I can at least link them to the blog post [laughs] instead about to answer it all again.

[5:50] There's all the testing side of stuff that I'm pretty well known for, and testing implementation details, and so I see that all the time. Then there's the Hooks side of things where people ignore the ESLint plugin. They say, "No, I don't want this to rerun," or, "I just want this to run on mount." Those are really common attitudes.

[6:11] Mostly, those are common attitudes from people who are experienced React developers who've been doing classes. They're thinking about lifecycles and now they're trying to transition that knowledge over to Hooks, where there's a little bit of unlearning that needs to take place there, at least when you're thinking about things in the context of the Hook.

[6:28] Again, that's a really common thing like messing up useEffect, over-applying useCallback, and useMemo. I can just look at my blog, and I remember the number of questions that were asked that caused me to write this blog post. It's been a really interesting experience seeing problems repeated.

[6:52] Especially as I go and teach these workshops, what's really cool about it is literally every time I teach the workshop, as I'm preparing for it, "There was that thing, that was confusing for them," so I'm reworking the whole thing every day.

[7:08] People say, "You just make the workshop once, and now all of a sudden you just deliver it 100 times, you're a millionaire," but no. Every single time I'm giving a brand new workshop [laughs] because I'm solidifying this workshop material. Anyway, it's been interesting. [laughs]

Chantastic: [7:26] It's been years of you actually educating and training people directly with React. I'm curious, why now? You've been doing all this stuff, you've been training, you have a couple of products already that people can learn React from you in certain ways.

[7:49] I'm curious, why is now the best time for Epic React? Also, how is it different from some of the other things that you've done? How have you learned from all of these experiences you've had training to bring this new Epic React thing to life?

Kent: [8:06] That's a great question. I have "The Beginner's Guide to React" on Egghead. I have "Advanced React Patterns" on Egghead. I have "Refactoring to Hooks" on Egghead. I could just make a website, that's like, "Take this course, and then take this course, and then take this course, and then whatever."

[8:27] The reason, now is the time, is because I feel now should have been years ago. The cool thing about Epic React is just like with testing JavaScript, I'm planning on keeping it fresh and updated over the course of the years as long as that's useful, as long as I mean to it, which is probably for a long time.

[8:48] The benefit of doing Epic React on top of, or instead of just making a website that says, "Go take these courses," because it really brings everything together in a nice way to weave people through in a process that will be more effective for their learning process.

[9:11] Also, Epic React is vastly different from any other type of recorded instructional material I've ever made. It might be a little bit more similar to Frontend Masters in some ways, because it is more of a workshop-based type of thing. Even then it's still quite a bit different.

[9:32] One of the things that I really tried to do as part of effective teaching is to make sure that I'm not wasting people's time. I don't mind taking people's time, but I want to take that and turn it into something and give it back to them in the form of just beautiful amount of knowledge. If I take more than I give back, then that's not a fair trade.

[9:58] With Epic React, I've really tried hard to make sure that I can give you something really quickly, that you can apply in your day job. Anyway, it is different from Egghead which is very much that way. I was just like, jump into it. Let me go through it. Now, what do I do next?

[10:17] [laughter]

Kent: [10:19] Whereas with Epic React, it's like "Here's the problem that we're trying to solve, go, and solve it." I give you a very clear step-by-step process to accomplish that with documentation on here are the things that you're going to need to go look at.

[10:34] I expect you to click on links, go Google things, and everything like you're at a regular job. This is practice. This is what we do for reals. Here's what we're trying to accomplish the problem that you're trying to solve. I'll walk you through it and code comments and stuff.

[10:52] Then when you're done, when your brain is in the right headspace to learn this stuff, then you come and watch me do it. This is the key difference from anything else that I've seen. Is it's just like, "All right, I'll briefly describe the problem. I'll go ahead and solve it." Now you know what I know.

[11:15] That's not how that works. I may be able to explain the problem to you but if you haven't struggled even just a little bit with trying to solve that problem yourself, you won't understand the solution nearly as well.

[11:29] I say, "Here's the problem. Now stop. It's a completely different video to watch the solution right here, I want you to go to the Repo, you're running it yourself, you've got tests running to verify you got things right, you have the app, and go and solve this problem." I don't care if you finish, that's not what's important.

[11:47] What's important is that you've struggled with the problem a little bit, so that when you see me do it all the light bulbs start going off. This is all based on my experience in teaching these workshops in person for the last several years where I've realized that the more that I get people to struggle, the more of the light bulbs will start going off.

Chantastic: [12:09] I think that struggle phase is so important. I know for me, personally, I can...I've had those moments where I read through a whole book on a topic. I'm like, cool, I must be like a Rails developer because...

Kent: [12:20] [laughs]

Chantastic: [12:20] I read the whole book and it made sense. [laughs] Then you go to sit down and do the work. It's like, "Where do I start again? What was the...I know, it was like this or whatever," because you didn't struggle for that information it was your brain didn't necessarily think it was valuable. Is like, "Oh, yeah. That's in this book if we ever needed it."

Kent: [12:48] That's the whole point is. That book turns into reference material, which is great. You can go back, but you don't learn it until you're struggling with it. Then you reference that. We were doing things backwards.

[13:01] I mean, it's not entirely bad. You're exposing yourself to what's possible. You run into a problem, you're like, "Oh, yeah. I read this problem can be solved." You go reference it but if we can...This is all part of speeding up that process of consuming this information.

[13:17] Getting it right we just tighten that loop where we say, "Here's the problem." Now, I'm going to give you an opportunity to struggle with that problem. Then I'll give you the reference material. You can get an idea and that is what locks it in place in your brains like, "Now I've struggled with that problem. I'm filled that gap in my brain with that information."

Chantastic: [13:37] [laughs] I love that you've built the course around that because I know that that's going to make it more meaningful for people. That it's one thing to just tell people how to do stuff. I have admired your approach in creating that friction, just enough friction so that people can learn something.

[13:57] It's a delicate balance but it sounds like this is your masterwork in at least trying to achieve that with people. We know when you're not in the room with them.

Kent: [14:09] Exactly. I don't know if this is when you wanted to get into learning clubs that's I feel this is a pretty good segue where I'm not in the room. Maybe we can help pair people up for that.

Chantastic: [14:23] Absolutely. This is something that's totally new for you. I don't think I've ever seen this from you before. You're working to help groups of people go through this material together like a book club.

[14:38] Instead of having to find five friends to go through this, you're going to create an environment where people can find like-minded people to go through this material together. Is that kind of the understanding?

Kent: [14:52] Yeah. Precisely. It's pretty simple. The idea is Discord is amazing. It's the next Twitter or something I don't know.

Chantastic: [15:01] [laughs]

Kent: [15:02] I love this as a social network platform. Discord allows you the ability to make like a mini server, where it's you and a group of 10 other people can be in a server you have video capability and everything. I'm leveraging that capability, and my own Discord server to connect people who want to learn the same thing.

[15:25] Not necessarily KCD stuff, but often it will be naturally it's because I'm doing it, but just they want to learn the same thing. They come together on the KCD Discord, and then they create their own little group, where they learn it together. We know this is based on research that has been done, and also my own anecdotal evidence.

[15:50] Where I noticed that people will learn more when they're learning in a group [clear throat] were in my workshops, they're talking with each other. They're answering and asking each other questions. I was looking at testing JavaScript and seeing these people, and some of them would be active on our community forums and stuff.

[16:15] Most of them are just sitting in their basement. Pulling up their screen and watching me go through this stuff. They're learning tons. I've got to so much good feedback about this, but I just think we can do better. There's something better for people here.

[16:30] I thought maybe you can be in that same environment, but be accountable to a couple people. That accountability is what's key with the learning clubs.

Chantastic: [16:40] That's interesting. I feel like as an industry, we're transitioning into trying to figure out what virtual learning environments or virtual social environments look like because that is something that you can't...When you're doing the online or in-person thing you naturally create these little groups of the people you're surrounded with.

[17:00] Because someone groans and you're like, "I don't understand that either." Can you believe this why is it so hard, and you grouped up into these relationships if you get overwhelmed or bored? You're not just going to peace out because the person next to you is struggling just as much as you and you're helping each other out.

[17:20] I love this notion of bringing that piece of the live in-person thing into a virtual workspace. Narrowing the focus a little bit so that you have a handful of people working together and asking each other questions.

[17:36] Instead of that nervousness of raising your hand in a group like 100 people, or asking a question that got asked two months ago. Then someone just slapping you with a link and be like, "Hey maybe you should read the full history of this general chat log before asking a question."

[17:53] [laughter]

Kent: [17:53] For real. I actually feel guilty sometimes when people ask me a question and I just give them a link to my blog. It's like, "Maybe you should've just read my entire blog."

[18:05] [laughter]

Kent: [18:05] Absolutely. I think when you just ask a question in a discord channel that has 4,000 people in it, then there are helpful people who will be there and try to help but when there are 4,000 people in there, those helpful people can get tired. [laughs]

[18:26] Especially when that helpful person is myself, I can relate to myself very well and I get very tired. By grouping people into these groups of 10, none of them has to be an expert on any of this. We have the club captain, and that's just the person who'll put it together. They just make sure that the meetings happen. Meetings don't even have to happen. You can do all asynchronously.

[18:47] The important thing is that you're in a smaller group, and you get to know each other. You bounce off the "easy questions" off of each other, and you struggle through it together. If there's anything that is beyond any of your pay grade, then you can upgrade to the bigger community. Then the bigger community can help you out.

[19:13] I am doing these office hours, where every Monday and Thursday I'm available to anybody for an hour. You come, join a Zoom chat. They are all streamed on YouTube. I'll answer any questions. You're in a learning club, and you've bounced around some ideas, but you're stuck. Then come and bring it to me, screen share, show me the code you're questioning.

[19:39] People are already doing this. It's been awesome. I think that if you're going to take EpicReact.Dev, you're going to be blown away by how much you learn and how effective it is at helping you remember stuff.

[19:53] If you do it with a learning club, then you'll be blown away, and you'll have nine other friends who are also blown away with you. Maybe you'll start a company together or something. I don't know.

[20:04] [laughter]

Kent: [20:04] Already, we only have a couple learning clubs. Epic React isn't released yet, so they're doing other things. Already people are telling me this is been a game-changer for their learning and retention. I'm happy with this. This is a good thing.

Chantastic: [20:18] That's awesome. With as much material as you've covered in your career, I'm curious what the parameters are for Epic React? What does someone need to know coming into Epic React, and what can they expect to know once they leave, if they've gone through the material, the way that you expect them to?

Kent: [20:37] Great question. Epic React makes the assumption that you have some experience with HTML, CSS, and JavaScript. We don't do a whole lot with HTML and CSS, so if your experience there is not super great, then you're not going to see anything that's going to blow your mind, or that's going to be an inhibitor to your learning experience.

[20:59] It's the JavaScript part, you will want to come in with a little bit of experience with JavaScript. I have a blog post that shows all of the features that I typically use when I'm using React. It's the called "JavaScript to know for React." If you're comfortable with those features, then you're golden.

[21:19] If you're not, then I actually have a free workshop that I did a few years ago that was recorded. I did it at PayPal. You can go through that workshop, and brush yourself up on some of the more recent features of JavaScript.

[21:36] That's the parameters going in. You need zero experience with React, or you can have a lots of experience with React. Either one will learn things. That's all that you need going in. Maybe some experience with Kit because we are working with Kit a little bit, in getting different branches and stuff.

[21:55] Telling you a little bit of experience, you can use an installed app to manage that too. From there, on the outside, the things that you will learn when you're all done. How much time you got?

[22:12] [laughter]

Kent: [22:12] There's so much. I'll just actually read through the different workshops. We have these modules that are self-paced workshops all on their own. When I give them in-person, or remotely like I have been more recently, these are about five to six hour workshops, each.

[22:36] We have React fundamentals, React Hooks, advanced React Hooks, advanced React patterns, React performance, testing React apps, React suspense, and then build an Epic React app, which is actually 4 workshops by itself. That's 11 workshops of just zero-to-hero material.

[22:54] Actually, I'm planning on adding more stuff. We'll probably get some animation stuff in there eventually. We'll probably get some accessibility stuff in there eventually. This is not the end. You haven't even seen my true form.

[23:10] [laughter]

Kent: [23:13] There is an enormous wealth of material in here that I'm just so excited for people see.

Chantastic: [23:19] Nice, I love it. You don't have to be an expert to jump in. This isn't an advanced thing, but you can go in, and evaluate the individual workshops, and then jump-in where you feel like you need to augment your learning, or whatnot.

Kent: [23:35] Yeah, and if you're an experienced developer coming in, you'll probably think I'll skip a couple rungs of the ladder. You'll be surprised how many of those rungs actually would have been a good idea to step on there.

[23:51] This is funny, so with my kids, I tell them, "Hey, you need to go clean your room. They say, "I cleaned it yesterday," or, "It's almost clean." I'll say, "Great, then it won't take that long."

[24:04] [laughter]

Kent: [24:06] If you really think you are just solid rockstar React developer, then great. It won't take you that long to go through this stuff. I do recommend that you go through it, because interestingly, even with my "Beginner's Guide to React," I'll have people who are like, "I've been doing React for four years, and I learned so much from that beginners' stuff."

[24:26] I wouldn't recommend people skip a whole lot, just go through it. If you already know it all, then you'll go through it really fast, but you'll probably learn some stuff that you didn't know before.

Chantastic: [24:38] I always find it really interesting how your environment can restrict you from a level of learning. One of the reasons that it's nice to actually sit down with an expert, and I've noticed this many times.

[24:54] I do trainings, or whatever, I sat in so many apps or code bases at this point, you start to get a sixth sense of how something is going to break, or how something is going to be abused over the course of the next six months as people start to pile on, and whatnot. [laughs]

[25:17] A lot of that stuff comes out in those lower level fundamental concepts. You're teaching this thing, and you'll say like, "I don't like to do it this way because X, Y, and Z." You end up learning a better practice that built from years of experience as opposed to what looks nicer for a Linter, or something.

Kent: [25:41] My goodness, for real, what looks nicer for a Linter. Oh goodness. Often when we learn something new, most people just want to ship-stuff, and I don't blame them at all. In fact, I would suggest most of the time when you're learning something new, try to get as fastest shipping as possible.

[26:06] Your emotional investments in this thing is just begging for you to ship something. If you don't get there quickly enough, then you just can't make it. You won't make it, and you'll just give up. When you're learning something brand new, you're just getting started, then get to shipping something as fast as possible.

[26:27] The bad side of that, or the unfortunate end of that is that, to get something shipped as fast as possible, you have to skip over some stuff. Very often, we'll skip over the fundamentals, and then all of a sudden, we find ourselves appeasing a Linter.

[26:42] The order of the properties in your objects is just as important as don't ignore, or don't skip out on dependencies in your useEffect array. As far as your editor is concerned, those are equal importance.

[26:56] If you don't understand the intricacies behind these things, or the fundamentals, then you don't know that it's a bad idea to ignore the one about effect of dependencies. You should probably just delete that object property ordered role.

[27:11] [laughter]

Chantastic: [27:13] That's interesting. I don't think I'd really ever verbalize the way that Linters have a way of putting those two things that have very different outcomes, if you get them wrong, under the same category. It's just a line item on things that you're supposed to fix.

Kent: [27:30] Yeah, exactly. Honestly, I hadn't thought about it that way either until this conversation.

[27:35] [laughter]

Kent: [27:36] It's totally true. This is why a lot of people come to me after my beginner's guide and say I learned so much because they skipped over stuff. I don't blame anybody, like I said, you should skip over stuff, just get something shipped.

[27:52] If you really want to level up, you've got to go back and do those fundamentals. If you can't look at JSX and understand what that actually means in JavaScript, that you're making a function call, and then you're passing an argument, then you won't be as effective at using it.

[28:07] I gave a talk at React Summit last year. I gave an example in that talk about how I had this faucet. Our kitchen faucet has the neck that you can pull out and direct the water wherever you want. It wasn't going back. It wasn't retracting back into the neck. I was like, "What the heck?"

[28:26] We called a plumber to come and take a look at it. Then the day that the plumber was coming, like a couple hours before they came, I was like, "I wonder how this works." I look under, and there's a weight that's on the bottom there that will pull it down. It had just been twisted up in itself. [laughs] That's why.

[28:41] I untwisted it, and it went right back in. I was so glad that the plumber didn't show up. I untwist that thing and say, "Here's your $50 bill or whatever," for me untwisting this thing. Dive in a little bit. Get an understanding of those fundamentals, how that works. You'll be way more effective at using it and save yourself a lot of pain and stress.

Chantastic: [29:03] Yeah, it's interesting. I feel like this is something that we hate doing, for some reason, as knowledge workers. I'm putting my fingers up for anyone who's listening to this. We're doing this live today on YouTube.

[29:18] Knowledge workers hate focusing on the fundamentals, for some reason. If you look at professional athletes or professional artists or musicians, so many times, they're just repeatedly doing the basics so that they can perform it like a higher level when it's game time.

[29:35] You go out, and you hit 100 golf balls every day or throw 100 free throws. That's something that I feel like a lot of times, we learn once like, "Oh, this is what a component looks like." Then you're like, "OK, cool. I'm done. What's the next more harder problem that's going to satisfy my intellectualism?"

Kent: [29:55] [laughs] What's interesting about this is that it's not just the easy stuff where there are fundamentals either. There are more advanced stuff. The way that I approach teaching all of this is I teach in isolation. You learn it in isolation. Then you learn it again in a practical, real-world setting.

[30:14] For example, react.memo, react.usememo, react.usecallback, or use layout effect, these aren't really what I would term the basics or beginner material. They're not in the beginner material. They're in the more advanced stuff. They do have fundamental principles that you need to learn if you want to be able to use these things effectively.

[30:40] If you want to be the one who's just slapping on use callback, and use effects, and use memo, and react.memo and everything, then sure, go for it. Your app will probably be slower. You probably won't reap the benefits of those APIs anyway.

[30:56] Without having an understanding of those fundamentals -- well, they are advanced topics -- if you don't have an understanding of those fundamentals, then you're not going to be able to use it very effectively either. That's why I teach in these workshops and isolated examples.

[31:12] Totally, all that you care about is just one API. Yes, it's going to be a little contrived, but then I make up for that contrived mess, then later teaching you. "OK, now we're in a real application. We've got this actual use case for the thing that we learned in isolation. Let's see what it looks like in an actual use case."

Chantastic: [31:30] Anytime there's new material out there, I'm excited for people almost speed-run it and see all that kind of stuff. It's so funny. I have never been into video games my entire life, but during quarantine, I got obsessed with Destiny.

[31:56] It's really interesting. There are things that people...Once you have gotten basic knowledge about a thing, you'll speed-run it to make sure that you know all the ins and outs and make sure that you still got that under your belt.

[32:12] I like the idea of doing that with a course like, "OK, I'm pretty sure I got the basics. I'm sure that there's probably something in here for me, anyway." I feel that way about vimtutor. No matter how many times I do that, I learned something new every time. There's some additional options. I'm like, "Oh sweet, that was worth going through it again."

Kent: [32:31] Absolutely. I think this is anything instructional. It's very unlikely that you know everything about these things that you're going to learn, especially the fact that we all are different people with different experiences and have hit different problems, maybe lots of shared space there but there are definitely edge cases and things like that.

[32:58] It's funny to think of somebody trying to speed-run Epic React because it'll just take you so long.

[33:07] [laughter]

Kent: [33:07] Even if you just watch the videos and you watch them at 3X, I haven't added up all the time yet, but there are over 300 videos that an average of around five minutes each. That's going to be a very, very long week or two.

[33:22] Even if you just watch 3X on all those videos, if you do it right and you're actually doing the exercises, I think React is...It's basically a boot camp, is what it is. For many people doing it, if you have no experience with React, you're just getting started, this is going to take you six months to go through all of this stuff. Then you're going to use this for reference material later.

[33:48] You do this with a club. You go through each thing very methodically. You go through and building the app, as well and maybe building your own app to solidify things. This is enough curriculum to keep you busy for a really long time. Good luck, speed-running it.

[34:06] [laughter]

Chantastic: [34:06] Now, I want to ask a question that may sound a little bit ridiculous for this show in particular but I guess maybe even specifically being a conversation between us. At this point, why React? I know that you have been in previous technologies before. You came to React, but it's really stuck.

[34:29] I'm curious, for the person who is thinking about Epic React, putting their money and time on Epic React versus whatever the Epic View, Epic Ember, or Epic Angular equivalent is, why React?

Kent: [34:48] I actually, just last week, wrote a blog post on Epic React called "Why I love React." This is top of mind for me. The quick answer is I like React because it's simple. I need to mention this because people get super mad at me when I say this. [laughs]

[35:07] They're like, "What about Stealth or something?" Stealth is awesome. Don't get me wrong. I think it's great. View is cool. This is great. I'm not comparing these things. React is simple by the definition that it's not complex.

[35:24] Easy and simple are different words, totally different. Easy means that it's retrievable. It's something that's near or similar to something you've already experienced. It's familiar. React is not familiar for most people. You jump into React, and it's like, "Wow, we've got markup in my JavaScript. I just threw up in my mouth."

[35:44] That was my experience, but after five minutes of using it, I was like, "This is the next thing for me." I've been using AngularJS for many years, I was a core contributor. I was doing podcast of the AngularJS. I worked with React for five minutes, and I was like, "Yep. This is it."

Kent: [36:04] [laughs]

Chantastic: [36:04] I can't believe. I've found it. This is great." Some of the things that make it simple for me, or that I think make React objectively simple, is that the state management solution...I know that people love hating on React state.

[36:23] Actually, today there's a bunch of stuff going on Twitter about how React state management and the mess that it's in. I actually don't think that React state management is complex. The things that people complain about are everything else they try to do outside of React to manage their state.

[36:42] React by itself manages state simply. You have some state, you have a mechanism for updating that state, and any time you want to update it, you just call that function within your state.

Chantastic: [36:53] [laughs]

Kent: [36:53] That's it. You get a re-render. You don't think about time at all. Time doesn't enter it. You have this function that rends any time that state updates. Fundamentally simple. No, it's not easy. Building applications is not easy. That's different, it is simple.

[37:09] I also fell in love with React using JSX over templates. When I was doing AngularJS, I actually built angular-formly, this popular forms library. It will probably always be the most popular forms library for AngularJS.

[37:26] [laughter]

Kent: [37:27] Lots of it was actually trying to move as much as we possibly could into JavaScript because JavaScript is an actual programming language, whereas with the template language, you have to build a bunch of features into this thing.

[37:45] If you want to take the knowledge that you build learning this template language and transfer it anywhere, it's totally useless. That knowledge is gone. JSX, it does take a little bit of time to learn how JSX converts into React.creatElement.

[37:59] Once you've built that bridge in your mind between JSX and React.creatElement, which you'll learn from Epic React, or even the beginner's guide, which is free if somebody wants to try that out. Once you build that bridge, then it's all JavaScript from there. You can see JSX as JavaScript.

[38:17] The more you invest into JSX and into React, the more you're investing in yourself as a JavaScript engineer. You can transfer that anywhere, even to the backend. I loved that, and it was just such a shame for me to switch from AngularJS to React just because I knew there was so much that I was just saying goodbye to forever.

[38:38] So much that I had invested, it was really frustrating. I know a lot of people got really fed up with Angular 2 because it was such a big switch from Angular 1 to Angular 2. It was like, "I invested all this stuff and now it's all gone, and I'm staying with the same framework." That was frustrating for a lot of people, it was frustrating for me.

[38:58] Then React Hooks also, this was just an explosion. As I was first getting into React, it didn't have Hooks. When Hooks came out, it just turned the knob up to infinity on simplicity. OK, maybe not infinity, but it just really notched things up on simplicity.

[39:18] Now, if I wanted to share some logic, I don't have to learn some weird pattern that's React-specific like render props, or higher order components. I don't have to do that. I just say, I've got some logic, and I want to use it over here. I'm going to turn that into a function, and I'm going to call it in both places.

[39:38] That's how you do everything with JavaScripts, like any programming language. I've got some logic, I'll just put that into a function, pass some arguments, accept some stuff when it comes back, and that's how I share logic.

[39:53] Just in general, switching from component lifecycles to useeffects where it's now, I have some state in my React app. I have some state in the rest of the world. I need to get these two things in sync. That's useeffect.

[40:04] That's all that useeffect is, synchronize the state of the world with the state of my app. If they're out of sync, then I put a useeffect to make that useeffect put those things in sync. Maybe it's not easy, but it's simple. Simple, is what builds maintainable applications. Easy doesn't do that. Easy can't build maintainable applications, but simple can.

[40:26] That is what gets me super excited about React. Then there's also the fun stuff that I haven't taken advantage of. I can build things on Native, I can build things in the terminal, I can build things with 3D. I can build anything that you can, even a VR.

[40:42] All of this, with just everything that I know about React. React nailed it. They just nailed it with the component model. That's why React for me.

Chantastic: [40:52] [laughs] I love that answer. It's funny because it's so hard. Man, it's so hard to describe that without doing it from experience. It's one of those things. It's like an unanswerable question sometimes for people who are brand new to it.

[41:11] I know for us, we came from different frameworks. It was an immediate, like a light bulb, moment for us. We're like, "Yes, I am so tired of everybody arguing about which API does or doesn't belong inside of a templating language."

[41:28] When like, "I have JavaScript. I have it already. I have a language to do all this stuff. Why do we need to reinvent it in this thing that's supposed to spit that value out in between h1 tags? Why did we do this to ourselves?" [laughs]

Kent: [41:44] There's an aspect of that that's just a familiarity thing. You get yourself familiar with the template language, then that's fine. I can go with that, but I really like the idea of being able to be like, "I'm going to get sick good at JavaScript, and then I'll be able to do anything that I want to."

[42:05] There's another thing that I really love about React now. That wasn't the case back then when I first got into React. It's the size of the community. I love the community for the people that are in it. We have a silly number of awesome people in the community.

[42:25] Unfortunately, because the size of it, it's enormous. We also have lots of not awesome people in the community. We can't really help that. There's not a vetting process to get into community. Although there is a vetting process to get into KCD Discord, enjoy that conversation...

[42:40] [crosstalk]

Chantastic: [42:40] It fixed the one problem that you had with React.

[42:41] [laughter]

Kent: [42:42] Because of the enormity of the size of the community, paired with the fact that the React team has decided to forego what frameworks typically try to solve by building everything. We've got our HTTP library animation. We're not going to do that.

[43:06] That just creates this really big hole of missing things, which you might look at that and be like, "Well, that sounds like a bad thing. I want to just have all my answers."

[43:18] The cool thing is that because there's that huge hole of problem that needs to be solved, rather than having a small team at Facebook solving all these problems for us and just assuming they know what's best, we instead have this enormous community of millions of Dell developers solving all these problems in different ways and coming up with different solutions.

[43:40] There's no one end-all-be-all because the community is so large that not everybody has the exact same problem. What that means is you come into this community now, and it is very unlikely you're going to face a problem. Somebody else hasn't already faced and solved.

[43:56] Whereas either a smaller community and/or a dedicated team that solves all the problems, if they didn't solve it in the way that you like, you're probably not going to try and build it yourself because this is the blessed solution. I'm not going to try and face what or beat the blessed solution here.

[44:17] Instead, I'm going to work around the blessed solution here. You don't have as much innovation in that kind of a world. I'm glad that React decided to go 100 percent dedicated to solving this problem really, really well, the component model.

[44:40] Then they left it to the enormous community to solve all the other ones, and so much innovation has taken place because of that. That's another thing that I love about React.

Chantastic: [44:52] I want to wrap up and know, where do we send people? If this sounds good to people, and I think that you've been such a tremendous educator for React and talking about all the things that really empower people to solve their own problems with React, which, as you mentioned, is simple but not easy.

[45:14] It requires a lot of hand-holding as you go into some of these concepts. This sounds like the place that people want to learn React. How do they do that? Where do they go?

Kent: [45:23] I would welcome you to go to epicreact.dev. It's pretty likely that when you're listening to this, you will actually be able to grab yourself a license. That's exciting. I'll mention, while we're here, that the pricing is still not solidified yet. I'll mention three things about it.

[45:46] One, it will be absolutely worth it. Two, there will be an enormous sale when this is launched. If you have the fortune of listening to this during the launch time, then go get it right now. There will be a big sale. Three, we do have purchase power parity, which, basically, means if the dollar is worth a different amount of money, depending on where you are in the world.

[46:10] There will be a special link for you to opt into that so that you can get an enormous discount. We do this on testing JavaScript. Some people get upwards of 80 percent discounts on things. It is a non-trivial discount. Anyway, go to epicreact.dev.

[46:30] If it's not launched yet for you, then just scroll down to the bottom, give me your name and email. I will let you know, so you don't miss it. Then don't miss the kcd discord as well. You can find that at kcd.im/discord. We have an awesome community there.

[46:46] That's where you can find the different learning clubs that are actively accepting new members, and where you can learn to create your own learning club. Actually, you can learn more about that at kcd.im/clubs.

[47:01] Really, actually learn this stuff. That's what I want you to do. That's what the clubs are for. I'm just so excited for this. I'm going to stop talking, so it can happen.

[47:10] [laughter]

Chantastic: [47:13] One last thing I wanted to touch on is that...You and I both believe this, but the best way to learn something is through teaching. I know a lot of times people don't have an avenue or know how to start in that teaching thing. I think that clubs is a really interesting idea because you can slowly grow into that.

[47:33] You go through the material, and you're like, "OK. I know this. I could lead someone else through this." Grow from there. You start writing your blog posts, and then before you know it, you're the next Kent C. Dodds.

Kent: [47:46] I need somebody to be the next Kent C. Dodds. I'm just kidding.

[47:49] [laughter]

Chantastic: [47:52] All this time, you've been trying to duplicate yourself. It's time for those Kent C. Dodds' to rise up.

Kent: [47:58] For real, I know that it sounds like...I don't know if attitude is the right word, the whole "I want to make the world a better place" thing, but I really do. The more people who are helping me with that, the better. I want people to really get this stuff. I want them to teach it to other people as they go along.

[48:20] Absolutely, I welcome anybody going through this material to write blog posts about what you learned. That would be super awesome. Give credit where it's due. Say, "I learned this from this course." That's it. I don't need it to be huge. It's a really good opportunity for you to reinstate in your mind what you actually learn.

[48:44] That's actually one thing that, as you go through every single one of these exercises, I give you an opportunity to write down the things that you learned. Sorry to keep this going. So much of what Epic React is all about is trying to solidify in your mind the things that you've learned. Otherwise, it's a waste for both of us.

[49:01] A lot of the structure behind Epic React and the workshops and the exercises and forcing you to work through the problem first, a lot of this comes from the book "Make It Stick", and the research that was done in that book. Reiterating what you've learned in your own words is one of the things that really helps to make it stick.

[49:23] You'll find a lot of different things in Epic React that are just 100 percent there to ensure that you don't forget this stuff when you go to apply it and when you reach for it in your real world app, which hopefully will make the world a better place.

[49:39] [laughter]

Chantastic: [49:40] Awesome. That's a great place to end, Ken. Thanks so much for being on. I hope that people check out what you're doing at epicreact.dev.

Kent: [49:48] We got epicreactdev.com too, just in case. [laughs]

Chantastic: [49:55] Nice. Just remember Epic React Dev, and you'll get there by some means.

[50:00] [laughter]

Chantastic: [50:00] Where can people follow your blog and yourself on Twitter?

Kent: [50:05] Kentcdodds.com/blog is where my blogs at. I've got, I think, like 170 blog posts or something like that. Plenty of reading material. Probably write a book eventually. Twitter is kentcdodds.

Chantastic: [50:19] Awesome. Thanks again for being on the show, Kent. Can't wait to have you on again later when you do your next thing, or we can finally talk about testing JavaScript, which we've never done yet.

Kent: [50:30] That would be a cool thing.

Chantastic: [50:31] [laughs]

Kent: [50:32] People seem to like it, and so do I. I'd love to talk about it.

[50:35] [laughter]

Chantastic: [50:36] Cool. Have a good one. I hope that the launch is amazing for you and everyone who gets involved.

Kent: [50:42] Thank you so much, Michael. Appreciate it.