Shawn Wang talks about how learning in public was the single best thing he did for his career.
You can learn in private, or you can learn in public. 99% of developers work and learn privately in the shadows, so why shouldn't you? Something magical happened when Shawn started creating resources and sharing what he learned in public. More advanced people began to help him by correcting him when he was wrong. By learning publically, he was able to both teach and learn at the same time!
"You can learn so much on the internet for the low, low price of your ego." If you keep your identity small, you can remain open to new ideas. If you make what you know a part of your identity, being receptive to new ideas and accepting that you were wrong becomes challenging.
Go beyond writing blog posts, they are educational, but their lifespan is limited. Write the resource that you wish existed while you are learning something. Write documentation, create cheat-sheets, these things not only provide immense value to people who are learning, but they also connect you to the authors of the technology who didn't have the time to create those resources. People start to perceive you as an authority on the subject when you make these things, which makes people also want to hire you for your expertise on the subject.
If you want to learn from professionals, then make it worth their time! Kent talks about how he'd record "tech chats" with developers and upload them to Youtube. Having an audience opens up the doors for opportunities!
Kent C. Dodds: Hey, everybody. It is your friend, Kent C. Dodds, here, and I am joined by my friend, Shawn Wang. Say hi, Shawn.
Shawn Wang: Hey, everybody.
Kent C. Dodds: Thank you so much for joining me, Shawn. Shawn and I go back, what, a year or two? Actually, I don't even know how we started. I think it was just Twitter. We just started chatting Twitter and stuff. Shawn is an awesome individual. I love his energy and just the positivity that he permeates throughout the entire community. Has some really awesome ideas around learning and around creating resources for people. Also does some really cool stuff in the React community, specifically, that I'd love to talk with him about. So I'm excited to have him.
Kent C. Dodds: But before we get into all of this, Shawn, I want to let our listeners get to know you a little bit. So if you just want to take a little bit to say who you are, what you're interested in, not necessarily tech related, but can be. We just want to get to know you a little bit.
Shawn Wang: Cool. Hey, everyone. My name is Shawn. I'm from Singapore, but I've been in the US for about 10-ish years. I'm actually a career changer myself. I used to work in finance as a trader and hedge fund analyst. Burned out a little bit. I started building internal tooling, then realized that we were sort of short on engineering talent and then just decided to become an engineer. Did that through a bootcamp, which I've talked about elsewhere, then started getting heavily into React in 2017.
Shawn Wang: In my spare time, I help to moderate the r/reactjs subreddit. We just hit 100,000 subscribers two weeks ago.
Kent C. Dodds: Congrats. That's cool.
Shawn Wang: Thank you. It's 100,000 people I don't know, but we're all passionate about the same thing, which is very nice to discuss stuff. We're both instructors on Egghead.io. I think I just have the one course out, but I'm trying to do more. I sing as one of my hobbies. If I was good enough, I would do that full time, but I don't. I am not.
Kent C. Dodds: I'll have to find a link to your Babble [crosstalk 00:03:18] on YouTube. That was fantastic.
Shawn Wang: I sing the theme song for Babble. Babble has a theme song, just FYI. I'm a pretty vanilla guy when it comes to hobbies. I think the description is, "Basic." I'm pretty basic. I think I've just decided to own that, just be comfortably basic in your pop culture case [crosstalk 00:03:46].
Kent C. Dodds: I don't think that you're ... Maybe I'm defining vanilla guy or basic guy differently from you, but I think you're a very interesting person, and you do some really awesome things for the community, so thank you for that.
Kent C. Dodds: I want to talk about a bunch of things with you. The first thing that you push a lot and people really resonate with is this idea of learn in public. I feel like this has made a really positive impact on the community. Can you talk about where did this idea come from, what inspires you to learn in public, and what benefits have you seen in your life by doing this learn in public thing?
Shawn Wang: Just to be clear, I wasn't consciously doing this. It was the sum total of when I looked back at what I'd done in React and what had worked really well for me and seemed to work so well that it seemed like a career hack. The occasion was I was going back to my bootcamp to do a commencement speech type of thing, like advice to young ones, even though I'm not that old. Actually, I just came up with it on a random afternoon. I was writing my speech, and I didn't know what to title it. I was looking for something short and punchy, and it just came to me to call it Learn in Public. I wrote that up and posted it on Twitter, and it just got an outstanding response.
Shawn Wang: Basically, what it is, is that you have a choice when you're learning anything. You can choose to learn in private or you can choose to learn in public. A lot of people don't really even realize that's a choice. The default is private. The default is you get your Egghead course, you do your Kent C. Dodds life workshop session, whenever that's happening, then you go home, and that's it.
Shawn Wang: But you know, as an instructor, a lot of the people that you teach disappear for the rest of your ... You never see them again. That's so strange, because you've just invested that time to learn. What are you doing to make the most out of it? I think a lot of people, obviously, they make projects, and they try to apply it at work. But a lot of people learn in private, and that's fine. That's the default, and a lot of people do really well that way.
Shawn Wang: But one thing I tried to do is produce learning exhaust. It's kind of similar to Brad Frost's idea of creative exhaust. As a side effect, kind of like React has side effects as part of rendering, just as an uncontrollable urge of your process of learning something, you have to produce some output. It could be a blog post. It could be a video. It could be a talk. It could be whatever, and we'll talk about that. But just having some artifact of your learning instead of just a distant memory, that can solidify your learning so much more.
Shawn Wang: Now, let me get to the benefits. There are three main constituencies. The first and most obvious is that you help other recent beginners as well because you're the world's most recent expert in that particular thing you're learning, and you have the beginner's mind. So you have the one thing that experts do not have, which is you can talk to beginners because you were one yourself. You use the uncomplicated words, or just know how to call out the things that are not obvious, because experts are just dealing with that all day long.
Shawn Wang: The second thing is you're helpful to your future self. That's the second constituency. It's just you. That experience of randomly Googling around and finding your own answer or blog post is unmatched in [inaudible 00:07:55]. Thanks, past me. To that effect, I have a dev blog that I just keep with my notes, and it's just for me. That's totally fine, and that's also learning in public.
Shawn Wang: Really, the most leveraged thing, which came ... That's the third constituency. People more advanced than you. I had no appreciation for that. I was just doing my thing. I could not see how it could be helpful to people who know more than me, to put out my notes. Obviously, they know this. First of all, it's a chance for them to see what the public perception is and test the messaging. It's a chance for them to correct you and, in the process, correct people. You have this back and forth and, in the process, educate the general public. In the process, a lot of people ask how to find mentors. It's not a job description that you sign up for, like, "If I buy you a coffee, will you mentor me for the rest of my life?" No.
Shawn Wang: Dan Abramov is a mentor for me for React. I started writing about React, and he obviously hates it when people get stuff wrong, so [inaudible 00:09:16] and corrects you, and you thank him for it. You do that enough, he's mentoring you. There's no formal business card that says, "Mentor for Swyx."
Kent C. Dodds: You never would reach out to Dan and say, "Hey, Dan. Fix all of my problems." It just happens organically.
Shawn Wang: Yeah, obviously, if he's interested, if it's an interesting problem. It might be a completely uninteresting problem. Then you should ignore it. But if it's an interesting problem, and if it's shared by many people, then yeah. His leverage is that he gets me as a foil to just beat up and whatever.
Shawn Wang: One thing I like to say is that you can learn so much on the internet for the low, low price of your ego. I don't know why that quote has resonated with people. Paul Graham of Y Combinator talks about keeping identity small with regards to what you think you know, what your opinions are. If you call yourself a React developer, you're incentivized to think React is the world, to think that it will take over the world, there's nothing wrong with it. But if you keep your identity small, and you consistently question what you think you know and what you believe in, you'll be hyper aware to changes in the facts based on other circumstances, or where you're just plain wrong.
Shawn Wang: When people find that you're receptive to criticism, they generally are nicer. That's something that I found, especially talking on Reddit, where everyone's pseudonymous. It's really easy for shouting matches, like you see in Hacker News, to spiral out of control. That's just because people don't listen to each other. We don't have that basic respect. But also, your identity is just tied up in that thing. If people are criticizing the thing, they're criticizing you. That's absolutely not true. You should welcome criticism, because that's someone who's not in your bubble telling you something that they think is true. They could be flat out wrong, but whatever. You need to invite that conversation or you'll never have it.
Shawn Wang: So learn in public. Three audiences. It's awesome. That's essentially the sum of what I think has helped me the most. Obviously, I'm also a big fan of yours, and I would recommend everyone watching this podcast to go watch Kent's Zero to 60 talk, which is the How to be Kent C. Dodds manual. You're an inspiration, so much so that Joel Hooks of Egghead compares me to you in terms of ... He didn't know this, but I was trying to model myself after your early days. It was a huge compliment when he compared me to you in terms of the way that I learned in public.
Shawn Wang: But your thing is different. Your thing is learn, build, and teach. Definitely, in my bastardization of it, those are also forms of learning in public. Teaching [inaudible 00:12:37] very effective, especially when I've had to do workshops and talks. It's on me to do research and just be right as far as possible. But then also, just stop and ship when you think you've done enough. So a lot of ideas tied up in there, and I hope that wasn't too much.
Kent C. Dodds: No. It was awesome. I am such a huge fan of this concept. Like you said, my mechanism for learning is consume, build, and teach. It's very, very similar to the idea of learning in public, where you solidify what you understand by trying to teach it, because you have to do all of that research, like you said. But one thing that you have suggested, that was something that never really occurred to me, was to create the resource that you want to have exist for the thing that you're trying to learn. I would always say, "Write the blog post for the thing that you were learning last week that you wish existed when you were trying to learn it."
Kent C. Dodds: Something that I've noticed you do is you make the resource today for the thing that you don't know yet, and you're still trying to learn that thing. You open source it so that people can contribute to that resource. So you create this place, or a mini community, where people who do know the information that you're trying to learn can contribute that information. As a side effect, you learn, and one of the main motivations is, "I want to learn this thing." But the reason people are motivated to teach you is because you've given them a platform, or a place, to reach more people than just you.
Kent C. Dodds: I have lots of thoughts on this, but I wanted to ask you about that. Maybe you can tell us about your React TypeScript cheat sheet and your concurrent mode. What was it? The fresh concurrent mode thing that you have, and some of these things that you've done. Can you tell us about those?
Shawn Wang: That's exactly right. Again, none of this was conscious. But then, looking back, you can see why these are some of the more popular things that I've done, the very act of learning in public and putting out these resources.
Shawn Wang: This is the 201 of learning in public. Learning in Public 101 is, just put stuff out there, learning exhaust, whatever it is. It can be a blog post, but blog posts have limited life span. They're not very structured. You see that a lot. This is my objection with things like Awesome Repos. Sindre Sorhus has these awesome cheat sheets and whatever. I took that, and I was like, "What if there was some twist on that, where," ... Awesome has bit rot. Things get less awesome, and you never have a process for taking them off.
Kent C. Dodds: Yeah, because you'd feel bad if somebody took your awesome repo out of that.
Shawn Wang: For things that are evolving quickly, I invented the fresh format. The only rule is it has to be fresh, and it has to be chronologically sorted, because it's evolving quickly. That's what I started on March 1st last year, because that was when React Suspense was announced, Concurrent React. As you go along, you put in resources there and make that resource for other people, which you're going to need as well. So that's the resource I go to for all of my Concurrent React talks. Anyone who does research on Concurrent React will find my cheat sheet. It's a guarantee.
Kent C. Dodds: I have. It's not documented anywhere except in your repo. It's a really helpful resource.
Shawn Wang: That's actually the wishes of the React team. I'm pushing the limits as to what they will allow, and that's [inaudible 00:16:39]. Seriously. They do not want this documented, because then people will start using it at work. Woops.
Kent C. Dodds: I know. I know.
Shawn Wang: But you and I live on the edge, and we're fine with that. They care a lot about the messaging, and that's been a huge part of the success of React.
Shawn Wang: But I call these things friend catchers, and that's from Patrick McKenzie, who is another internet personality, advice guru kind of guy. A friend catcher is a thing that you work on that just catches you friends, but it's helpful to you and helpful to everyone as well. That's the very spirit of open source, which is not code, but just knowledge. A blog post has a half life. It just decays in value over time. But building these resources which are fresh and which have leverage in terms of they have some curation and opinionated structure, it just tackles this very specific thing which is missing from the world, is extremely valuable, and people will find you. That's how you build your network.
Shawn Wang: I've provided value to Ryan Florence. I've provided value even though I don't have any popular libraries of my own. But being able to build these resources for them, which they don't have time to keep up on, is a career hack as far as getting your name out there and being considered an expert. I'm considered a React TypeScript expert, which is absurd. I don't know anything. I mean, I do know stuff. And you get taught stuff, because people will find that you're wrong or stuff is missing and, again, are really worked up about it. I think it's called Cunningham's Law. The best way to learn on the internet is to just be wrong about it, and someone will tell you, right?
Kent C. Dodds: Oh, yeah.
Shawn Wang: You get the brunt of that.
Shawn Wang: I don't mean that in a malicious way, like intentionally publish something wrong and then [inaudible 00:18:34] you're lazy. You have to have done the work and be authentically like, "I've done the work. This is the best that I think about. Come at me," because I have a small ego. That's the best way to learn, because people will come and teach you. I've been taught TypeScript for free by the TypeScript team, by people who have used TypeScript at Airbnb, and Uber, Palantir. It's insane, the reach you can do if you're just genuinely learning in public.
Shawn Wang: The two successful ones ... Really, the two major efforts that I've had are the Concurrent React cheat sheet as well as React TypeScript cheat sheet. That one seems to be at the coincidence of two big trends, which is React's adoption, which is, by the way, still growing at about 100% a year according to my guesstimation. Between 70% to 100% a year, which is insane, at the current size.
Kent C. Dodds: That is crazy.
Kent C. Dodds: That is bonkers.
Shawn Wang: Your thing to learn in public can be whatever you're interested in, because it's self serving. I don't do this as an act of altruism that I'm donating my time to people. It's definitely me first. I want to learn, and this is the best way to learn, because I cannot help but to help other people. That's just how this thing works. If there are any trends that are going on, like GraphQL ... I've got nothing in that arena except for the Babble macro that we can talk about.
Shawn Wang: That's the spiel. That's the friend catcher, build resources spiel.
Kent C. Dodds: I love that concept of the friend catcher. I had a link to something that I found from Patrick about friend catchers.
Kent C. Dodds: This is the reason why I started podcasts. I really wanted to talk to the Angular team. So I started Angular Air, and then I was able to just chat with them for an hour. That was cool. Can you call up the React team and just say, "Hey. Can I chat with you for a moment?" That's not something that they have time to do, but if you can give them a reason that's more than just we're helping people out, because they could help people out all day long and get very little done ... But if you can give them a reason to teach you, where you increase the impact of their time, then you're in a really good position to learn a lot.
Kent C. Dodds: Whether that's podcasting, or if that's writing the definitive guide to X, or whatever it is, you're going to encourage people to be motivated to teach you the things that they know. That's not to say that it's not also very valuable to dive into the source code and learn that way. Building things is really useful. But finding a way to get the people who know be motivated to teach you the things that they know, I think, is a fantastic approach. Thanks for sharing that.
Shawn Wang: Do you know that your ... You had a podcast on YouTube. I hate calling things that are on YouTube podcasts, but it's like a video podcast, right?
Shawn Wang: I think you had one that was just ... I don't know. You've had a few. Your one-hour session when Dan just joined the React team, and [inaudible 00:22:48]. That is the only documentation of React's event system that exists in the world. It happened because you were brave enough to just ask, and it just happened. There's so much you can learn if you just provide that resource and then share it to the world. I'm sure you don't even remember it, because you've done [inaudible 00:23:13].
Kent C. Dodds: No. I remember that. I used to do this thing a lot more, it's called Tech Chats. I did two with Dan. I've done a bunch where I'm like, "I want to learn about continuous delivery versus continuous deployments versus all these things." So I had real professionals in the industry talk with me about this. I said, "We will talk, it will be recorded, then we will share it on YouTube, and people will watch it." They loved that.
Kent C. Dodds: In fact, with Netlify, I, just this last week, posted a blog post about serverless functions. You all at Netlify have been just fantastic resources for me in learning all about that, just super, super helpful. You probably are that helpful for everybody, but I like to think that you're especially helpful for me, because I'm providing resources that help the rest of the community, so you want to make sure that I get it right. So this idea that, by creating the resource that you want to have exist, just motivates the people who want that resource to exist to help you make it the best resource possible. In the process, you just learn a ton.
Shawn Wang: I want to throw a special shout out to anyone who can draw. If you can draw, please draw. That is the hack. I can't draw. I have no visual skills to speak of. I don't think-
Kent C. Dodds: Same.
Shawn Wang: The people that can draw, can draw really simple charts, and it just makes things look so much more approachable. If you can visualize something that is complex, it's code, it's text heavy, and just put some graphs, diagrams, or funny pictures around it ... Julia Evans does that for [inaudible 00:24:55] commands. There's one more. I forget. Lin Clark. She's the cartoonist [inaudible 00:25:03]. But obviously, she does a whole bunch of stuff on Mozilla. You can get so much reach with just cartoons, because people love that visual medium that simplifies things.
Shawn Wang: Sorry. That was a little bit of a digression.
Kent C. Dodds: No. I'm so glad that you mentioned that, because there are probably a lot of people listening who can draw. We have this idea somehow, in our heads, that software developers are not artistic, and I think that's just total baloney. Even the singing that you were talking about. You sang the hallelujah and praise of Babble fan recording song. It is so good. That's not really something where we're learning something, but it's part of building this community.
Kent C. Dodds: I think most people are interested in building the community, helping inspire, and whatever the case may be. We all have talents that include code, but also include these other different things. If you can take a talent that you have and turn it into a teaching opportunity, or community-building opportunity, then I think people should go for that.
Shawn Wang: Mark Dalglish, from Australia, he's your favorite Twitter guy. He does memes, and that's kind of drawing. It's just funny. It pokes a little bit of truth. There's always a grain of truth in something that's funny. It's hilarious. It's really great. It's definitely entertained me to no end.
Kent C. Dodds: Like you said. He's my favorite Twitter guy. If I could only follow one person on Twitter, it would be Mark. I should have him on the show.
Shawn Wang: You should have him on the show. It would be hilarious.
Kent C. Dodds: Yeah. It would be great.
Kent C. Dodds: We're getting pretty close down to our time here, but is there anything in particular that you think people should really look into, or something, like a final message, that you'd like to share with the people who are listening?
Shawn Wang: Yeah. Well, I kind of spoiled the plot a little bit with the friend catcher thing, because I really want people to take that away. It's easy for people to start with blog posts, and you should definitely get started if you've never done anything in public. But where you start to get real traction is in building these resources for yourself, for the community, and for experts to teach you. Be that canvas and build that resource, especially on emerging topics. I guarantee you, whatever you're interested in, there's not enough documentation of it. There never is, right?
Kent C. Dodds: Mm-hmm (affirmative)
Shawn Wang: So I want people to take away from that. That is your learn in public call to action. I feel strongly that everyone's learning is enhanced by that. But then also, your career is enhanced by, eventually, through a motive of your own, becoming an authority on it just by having done it for a while. Then people want to hire you for that. It's absurd. It just works. That's how I got to Netlify. I think that is an emerging field in terms of developers who can also make the field more accessible.
Shawn Wang: Scott Hanselman of Microsoft, he has this concept of dark developers. I don't know if you've heard of that.
Kent C. Dodds: Yeah. We had him on the show. Actually, I interviewed him just last week, so people will hear from him, absolutely. But he didn't talk about this, so I want to hear about it.
Shawn Wang: It's just the fact that 99% of developers are dark. It's similar to dark matter in the universe. You know they're there, because their NPM downloads are there. You can see that millions of people download React, but where are they?
Kent C. Dodds: Yeah. That's true.
Shawn Wang: It's just a fact. I come from Singapore. How many Singaporeans do you know that are this active in web dev? There are two that I know of, but there just aren't that many. When I went home to Singapore and I talked to people in the local tech scene, "Do you contribute to open source?" A really basic, "Have you sent in a poll request to any large projects that you use?" Directly, personally relevant. All of them said no. That's just not part of the culture, and that's the norm.
Shawn Wang: I think, in the US, maybe, we're a little bit more open to the open-source culture, but it's definitely not something that's shared worldwide, especially in Asia. You just vendor the code and then everything else you just build from scratch. I think people should just do more in public, and there's no way in which we can overshoot on that goal. I love these things where you can just be flat out uncompromising. No nuance. Just do more of it. It will be good for you. There's not many things in the world you can say that about. I love that kind of authenticity.
Kent C. Dodds: Absolutely. I think a key element to that, if you want to be successful here, is, you mentioned this, check your ego at the door. For the small price of your ego, you can learn a lot. Don't worry about being always right, and be willing to be corrected. That's how we learn. That's wonderful.
Kent C. Dodds: Thank you so much. I really appreciate you giving me some of your time while you're traveling and doing all of the fun stuff you do for Netlify. If folks who are listening don't know you already, what's the best way for them to connect with you?
Shawn Wang: I'm only active on Twitter. It's the only developer network of significance. So twitter.com/swyx, S-W-Y-X. It's four letters. Then, for those who don't want to be on Twitter, I respect that too, I'm on reddit at @swyx as well. My e-mail is [swyx@netlify 00:31:42]. I've got no qualms about giving out e-mails. I think that most people should follow up with others, because any question you have, I'd be more than happy to answer.
Shawn Wang: I forked the AMA thing as well, and trying to do what you do as an AMA. I don't have as much volume though. [crosstalk 00:32:00]
Kent C. Dodds: You'll get there. It takes a long time, but eventually you're like, "Oh, snap. I've got 500 questions on here."
Shawn Wang: I listen to you every day for three minutes. It's insane.
Kent C. Dodds: Yeah. That one's fun.
Kent C. Dodds: Hey, cool. Thank you so much again. We'll look forward to getting this out to the world. Thanks, everybody, for listening. I hope you take the opportunity to make a friend catcher, or whatever it is that you want to do to continue your learning. It's one of the coolest parts of the software industry. Thanks, everybody. We'll see you later.
Shawn Wang: Bye.