Interviews With Experts Bonus 0 exercises
    interview

    Lydia Hallie on JavaScript, React, and the Future of Web Development

    Lydia is a self-taught developer passionate about deeply understanding the tools that she uses as a developer. This passion has led her to read through the Ecmascript spec (which she doesn't necessarily recommend doing) to understand JavaScript a deep level. She's used that knowledge to make videos visualizing what JavaScript does under the hood with Closures, the Event Loop, and more.

    Lydia also talks about React 19 and how she likes the direction that it is going getting closer to the platform. Examples being using meta tags directly as well as no more forwarding refs.

    The conversation finishes with Kent and Lydia discussing where the web development landscape will change in the future and how AI will impact that landscape.

    Resources

    Loading interview

    Transcript

    00:00 Hello, everybody. I'm Kent C. Dodds, and I am joined by my friend, Lydia. How are you doing, Lydia? Hi. I'm doing great. Thank you so much for having me on this podcast. I'm very excited. Yeah, absolutely. So happy to have you. And

    00:14 I have known, let's see, I'm trying to remember, I think I've known you for like six years or something, like quite a while. I remember, I think the first thing I saw from you was a blog post that you wrote, like early days when we were still all blogging on Medium

    00:31 and stuff. Yeah, the good old days. Yeah. Actually, I think it was a very, very popular blog post. Do you remember what that might have been? Yeah, I think the title, I haven't read it ever since, but I think the title was something like, Advice from a 19-Year-Old Software Engineer

    00:49 or something like that. Yeah, where I explained kind of how I didn't go to college, but taught myself how to code and how I kind of lived my life, I guess, teaching myself how to code and not get too demotivated by everything. Yeah, no, it was like a miracle that became

    01:06 so popular and it really changed my entire life from that. So I'm very happy that a lot of people liked the article and shared it, I guess. Because yeah, like you, I think many people initially knew me from that article, which is amazing. I like that.

    01:20 Yeah, it was very inspiring. I love hearing from people who work really hard, I guess. That's like the common thread for people who inspire me are people who work really hard. Some of them are privileged and they work through their privilege. Others are way underprivileged

    01:38 and they work through that as well. So yeah, the common thread is people work hard and you definitely have in your career. I would actually love for people to get to know you a little bit more about your background and also what you're up to right now. Can you give us a quick intro to yourself? Yeah. So I'm Lydia. I never know what to say about

    01:57 myself. I'm a Dutch software engineer, I guess now. Yeah, so I started programming mainly in JavaScript and React back in 2017, 2016. So React was still relatively new. I still had to use React.create class and everything. I kind of saw the whole evolution of that.

    02:15 I mainly did a lot of kind of full stack engineering for many startups. Eventually, I kind of got into DevRel a bit more because I was just coding so much that I didn't really network with people. And I was like, OK, I've got to use my 20s to also connect a bit and get out there, I guess. So I did some DevRel for Vercel, which you might also know me from.

    02:33 I was in some of the keynotes and some of the presentations. And right now I'm kind of focused on just creating my own course and my own in-depth JavaScript content, kind of the course that I've always wanted to have. But there was nothing really out there to quickly understand JavaScript on a very deep level. So that's kind of just been my

    02:53 summer of 2024, just focusing on that. But yeah, I'm sure after this, I'll go back to engineering because during my DevRel-ing days, I definitely missed that the most. I love just being in my IDE and kind of just, you know, it's like a different world that I love to be in when I'm coding.

    03:11 Yeah, yeah. Well, that's awesome. I love hearing about some of your stories. I have a bunch of questions about it. So the course that you're working on right now, does that have a name? Not yet. Well, I think I'll just call it something JavaScript Visualized because that's what

    03:25 I've been calling everything I've kind of been making in that aspect. I might come up with a better name. I don't know. But probably JavaScript Visualized. OK, great. Well, I look forward to seeing that once you have something put together

    03:39 for that. That is super cool. Going deep on JavaScript, I think is great. And also, I just like, I don't know, I have to say this, I guess now, because like, it's blocking my brain from the other thing I wanted to ask. But I was just thinking, well, you are no

    03:57 longer at Vercel, but you're still wearing black. And then I was like, but I'm actually also wearing black. So I guess you can't. No. Luckily, black has always just been my color. So when I joined Vercel, I felt right at home. I don't have to change anything. No, yeah, it was always very funny when we

    04:13 just went out as a team to conferences and we're all like goth. We were just wearing black. It was, yeah. But I try to add a bit of color in my background now. Yeah, yeah. You know, it's a bit less Vercelian, I guess. So you mentioned that you're a Dutch developer, but that's not where you're originally from,

    04:30 right? Aren't you from, are you from the Netherlands or? Yeah, I'm not from Sweden, if that's what you're going to say. A lot of people thought that. I used to live in Sweden for a couple of years. Oh, you live in Sweden, yeah. That's kind of where I started. Yeah. I started my software engineering days there. So some of the articles mentioned me going back to Sweden, but I'm Dutch, yeah.

    04:50 Oh, okay, okay. It's close. I like Dutch people a lot. I love Amsterdam. I've been there many times. So yeah, that's great. Yep, I was definitely one of the people who thought you were from Sweden. Yeah. No, it's my mistake. I should have, I guess, mentioned that better in the medium article.

    05:08 No, it's fine. It's fine. But your English, you have no accent. I know quite a few Dutch people, and of all the Dutch people I know, I think you are the one that sounds the most American. I don't know if that's an insult, but ... No, no, I appreciate it. I mean, I could speak in this accent. Maybe you're used to more

    05:26 like this. This is like a Dutch accent, more like, I don't know. But no, to me, well, it's weird because when I speak Dutch, Dutch people ask me, are you English or American? Because my Dutch accent sounds American. So wherever I go, there's always something like, oh, where

    05:41 are you really from? You sound kind of strange. But yeah, no, I'm currently applying for my American visa, so hopefully not having an accent might work in my favor. We'll see. Yeah. Hey, that's exciting. I wish you the best of luck with that. That's great. Thank you.

    05:55 All right. Well, I want to ask you a little bit about the JavaScript stuff that you've been learning, or I guess deepening. You've been doing JavaScript for almost a decade now. Still learning. Yeah. In the last couple of months, you've been really going deep on JavaScript, and

    06:15 you mentioned to me that you've been reading the ECMAScript spec, which is like, wow, that's great. So what are some of the things that have really caught your attention in doing that? And maybe even before that, why? Why are you reading the spec?

    06:32 Yeah, I like to torture myself. No, to me, there were always questions. I've been working with JavaScript, and I kind of knew intuitively how things worked. Eventually, it kind of just becomes your second language, and you're like, okay, I expect these results, and it

    06:47 works like that. But whenever, I don't know, maybe it's a personality trait, but I never feel comfortable doing something that I don't 100% entirely understand. If anything else goes wrong, I want to really understand how to fix it and what could have possibly gone

    07:04 wrong. So to me, I just wanted to go back to the source. So in the years prior, I read a lot of the Chromium source code, the V8 source code, just all the JavaScript engine host environment stuff, which also helped me so much to understand how things are actually

    07:21 implemented and how it interacts with the operating system and everything else. And that's also pretty easy to read. If you're interested in knowing how Chrome works or how Node works, I definitely recommend doing that. But from more of a spec perspective,

    07:37 or is it kind of a tongue twister saying that? I also just wanted to understand how ECMA scripts should be implemented, because of course, that's just one implementation. And reading the spec to me was, of course, a lot easier, because it's kind of just, you

    07:53 know, an implementation should adhere to doing this or like having this algorithm, having these properties. And understanding even the simplest things like that a function is really just an object with an internal call method, like that's all it is. And of course, throughout the years, I know that functions have been called a callable object. But what does that

    08:12 really mean? And I feel like just reading the spec, I know, like explaining this doesn't really clear things up. But to me, just seeing how implementation should adhere to that spec, it made it so much easier for me. And yeah, so I've been publishing some videos to YouTube

    08:30 about like promise execution and, you know, like closures, execution context. And I feel like a lot of people are, to my surprise, a lot of people agree that it actually helps them understand JavaScript better to see it from that more spec internal perspective.

    08:46 So I'm happy that I'm not the only one that has a brain wired that way. Because I know it's not for everyone. And of course, like, that's also not the type of content I want to create. I don't think anyone can create content that's like good for everyone. But I'm happy that I'm able to help people that may have already had like years of experience,

    09:06 but just, you know, like they're experts, but just a tiny bit more has personally helped me a lot. And I don't know, I'm happy that I'm able to like provide that and actually find so much joy and you know, creating resources on that, which yeah, it's working with JavaScript

    09:21 is always fun. But I yeah, weirdly, I really enjoy it. So I think, yeah, I'm happy that I can do that. Well, I love that. And I think for the longest time, I've said that for you, you go down to level up, where like, whatever plane of abstraction you work on, if you go down a

    09:41 level of abstraction, then that will make you better at using that abstraction better. For sure. And so, yeah, for the React developers watching this right now, getting a deeper understanding of JavaScript will make you better React developer and then understanding the lower level spec

    09:58 of JavaScript will get you better at JavaScript too. And I think that that is a really powerful thing. And in fact, in Epic React, the very first lesson that we do is completely free of React. We don't do anything with React. We just start with creating DOM nodes. And

    10:13 then we bring in React gradually over time. And I think that is really a valuable way to learn so that you can kind of draw lines around what parts are the abstraction and what parts of the platform and whatever. So I think that's really awesome that you're

    10:31 working on that. And you mentioned that like, they're experts, but they're just like missing one little bit. And I 100% agree with that too, that we all have holes in our knowledge

    10:43 that are just like naturally going to be there because we're not just here filling up a bucket of knowledge. We're trying to like do something with that knowledge. And once we get to enough knowledge to be able to make something work, then we got to move on to the next thing.

    11:02 So I appreciate teachers like you who are willing to go really deep, fill that whole bucket of knowledge, and then share that in a consumable way for people, because not everybody wants to just read the spec. No, please don't. I highly advise against it. It'll affect your mental health. Yeah.

    11:21 Now I feel like, and also what I want to make clear in all my videos and courses as well, is you don't need to know all this to be the best JavaScript developer out there. You can still be excellent at your job without knowing all this. But yeah, if you're the type of person that, yeah, I don't know, that it helps understand, then it might be more beneficial

    11:41 than you thought it might have been. Yeah, that made no sense, but it helps for me. I followed it. I followed it. That's good. So as far as React is concerned, you've spent your summer just like laser focused in on lower level JavaScript stuff. But you have

    11:58 been working with React for a long time, and you, being at Vercel, you actually had quite a bit of time to play around with React 19 and what is coming in the upcoming version of React. At the time we record this, it's not officially released. At the time people

    12:14 watch it, hopefully it will be. But yeah, I want to know some of the things that you're really excited about with React 19. What are some of the things that you think are going to make the biggest impact on the community? I think overall, just getting closer to the

    12:30 platform, which I think is kind of touched on during the talk I gave at React Conf, is just the tiny things. The fact that we no longer have to import forward ref. We now can just use these meta tags directly in our components without having to import head or

    12:46 doing stuff with frameworks. It's small things like that that just make React so much easier to work with. At the same time, maybe more difficult to then compare what you were just explaining, first complaining DOM, and then seeing how React abstracts things away, because

    13:00 I feel like that might be a bit more technical in that case. And just overall, the user experience through transitions and actions. At the same time, I feel like a lot of the features that have been released in React 19 are maybe a bit more focused on framework authors, like

    13:18 the start transition or the use hooks. It's less of a release for individual React developers maybe, and maybe it's more focused on, okay, frameworks can now use these React features

    13:34 directly without having to have their own patch or canary bundled in there. Overall, I think it's exciting that we've gathered all this feedback from the community through frameworks for Remix and Next.js, and the React team listening to that feedback and

    13:51 then implementing it is also just exciting. Yeah, 100%. One thing that I'm excited about is a future where you can be working in a React component in a full application setting, like working in product code, and not know

    14:09 which framework you're actually using, because it's all just React stuff. We're just using form actions here. Oh, I'm just using a client component. I'm using a regular anchor tag. We don't need link things anymore, and we don't need some React helmet thing or whatever.

    14:26 We're just rendering the link element right here. Lots of really awesome things that the React team has. I really like that React really focuses on the problems that are well understood

    14:40 and solves those problems, and then lets the ecosystem work out different ways to do things. Also, even at the same time, they don't just latch on to every community solution as well.

    14:57 If they did, then we'd have CSS and JS built into React, which would probably have been a mistake. And so I think that one thing that I really appreciate about the React team is how sensitive they are to the long-term impact of their decisions, and they're willing to put in

    15:18 the effort, the long-term effort, to make the user and developer experience better. For sure. Yeah. No, and you definitely see that in this release and the overall talks that were given at React Conf from the meta team as well. Yeah, they're a huge inspiration, and I'm so happy

    15:34 that we get to be in the React ecosystem that's provided by these amazing people, and of course, also the overall community. Yeah. Yeah. Yeah. Absolutely. It's cool. Cool community to be a part of. And it's also just so massive. So there are so many people working on solutions to these

    15:51 problems, which kind of makes things interesting because there's a level of competition, but I would say mostly friendly competition. But yeah, it's an interesting dynamic because we have

    16:10 people who are just trying to build stuff, but now they have all of these decisions they have to make between which framework do I use, which library do I use, because React hasn't just taken a definitive stance yet on a particular approach to the problem. But the side effect of that

    16:28 challenge is that you get the most level of innovation in this ecosystem because there's just so much you can innovate on, whereas for frameworks that just say, no, we're going to own everything, and now it's just a little group of people over here who are working on that thing. And of course, there are contributors from outside of that little group, but

    16:48 when there's already a way to do things that's been decided on, then if somebody outside of that group is like, well, I guess I'll just do it that way instead of innovate and find a different solution, which I think is kind of interesting. And I think that's played out in the way that

    17:05 React has evolved over time. Yeah. No, it's been amazing also to see what people have been building, even with the latest versions of Remix and Next.js and more stability for server components. It's just a whole new kind of mental paradigm shift. I don't like using that word, but I feel like it's

    17:23 inspired so many more people to be more creative also with server-side features and adding that to your apps. And of course, now we also see kind of more the native side to things. Yeah, overall, I feel like React's definitely going the right direction, and it's always exciting to see what

    17:40 new things people come up with. At the same time, I do feel the decision fatigue sometimes, not to be negative about it. I often start with frameworks like Astro or something just to have a very simple kind of like, I just want to write MDX or JavaScript without really dealing with that.

    18:00 I probably shouldn't be interviewing you, but what do you recommend people that are almost just starting out with React? I often try to emphasize with them, it's like, I started out with React, really, there was just one approach. And sometimes I try to teach people that haven't programmed before, and I'm like, you should be using Next.js or Remix or React. But it's really

    18:19 kind of difficult to explain, like now we have server components and client components to people who haven't really programmed before. How do you think people should approach that? Also from like an educator myself, I mean, not with React, of course, not like you, but it's, yeah, I'm just

    18:38 interested actually. Yeah, yeah, it is tricky. So one of the goals for Epic Web in general is to have the right material on there that can get somebody who's never programmed a day in their

    18:52 life before, all the way up to full stack developer, which I think is a long journey. And so like it starts with some pretty basic stuff. Of course, I don't have any of that stuff right now. But in the future, I hope to have some of that more beginner stuff. But I think for,

    19:14 like everybody's going to be a little bit different. They have preferences on where they want to work on in the stack. But to discover where you want to work on, I do recommend that people learn JavaScript. And the reason for that is it's a pretty

    19:30 approachable language. It's imperfect, but like the syntax, I think, is simpler than a lot of other languages that people could be learning. And it's more forgiving. Well, maybe not. Forgiving

    19:46 is not quite the right word, but probably the biggest benefit is that it runs everywhere. And you can write it and run it in your browser, which everybody has installed already. And so it's a really approachable language for that reason. And I would say for somebody who's

    20:07 just getting started and they just want to learn something, that working with a framework is probably a really big leap. That said, with AI and stuff now, maybe it's not so tough. You just have the AI help you as you're going through and building something. But the principle, I think,

    20:26 is you need to have something where you get some quick wins. And so a visual thing or something that you can interact with is really helpful. And use dopamine hits, kind of. Yeah. You need to have some sort of success. Otherwise, you're like, man, this is too hard.

    20:45 I guess it's not for me. And so starting with HTML, CSS, and JavaScript, I think, is a pretty good starting point. My son, actually, he's 10. And I set him up with Cursor and just showed him

    21:00 how to use the Composer. And he's just telling it to make games. And he's misspelling words and stuff. And it still figures out how to make him something with just an index HTML file with inline JavaScript. And I think it's super cool. That's a really good place to start, because then

    21:18 you see the code there. Maybe you want to make some changes. And eventually, maybe he'll move over from just telling the AI to do everything over into actually making the changes himself

    21:31 a little bit. And then eventually, he can get into, well, I want to do something that saves the user's progress so they can come back. Well, OK, now we're going to talk about local storage. Well, I want to make it so that they can go into a different computer. OK, well, now we've got to

    21:50 talk about database persistence. So it can kind of naturally evolve out of use cases. That's such a cool thing to do as a 10-year-old. But also, I feel like then learning which questions to ask, I think that's also a great way to kind of teach yourself how to program, because you need to understand the problems that you're trying to solve.

    22:10 And still, I feel like with AI, you still have to be pretty specific. It's like, change this component. So an AI-based way of learning how to code is actually maybe not as easy as people might think it is, because as you said, you still need to ask

    22:27 the right questions, which is difficult. But that's really cool. Yeah, I just installed Cursor AI. It's been amazing. It's the best thing. Yeah, yeah. I found that I am not very

    22:42 loyal to my AI assistants. No, yeah. I've gone through quite a few of them, but it all comes down to the level of user experience and what they can offer from that experience perspective.

    22:57 And so, I'm using Cursor today. All the videos on Epic React, I use Codium. The videos on Epic Web, I was using GitHub Copilot. And so, I'm bouncing around. But I think the principles

    23:13 are the same, like use the AI assistant, learn how to ask it the right questions, learn how to review the code that it generates. These are skills that software developers are going to need to have for a long time in the future. For sure. Yeah, I've just been using it. I have a codebase

    23:31 and I have questions about the code. I have the Chromium codebase, so I haven't used it to generate code just yet. But yeah, I'd also be a bit skeptical, but that's probably just a boomer thought. Sometimes you have these old people and you're like, I'll just trust the tech, it's fine.

    23:46 But now I see how easy it is to fall into that mindset of, surely computers can't do that. Then they can, and it's like, oh, right. Yeah. Well, they're only getting better too. Cursor is way better than Copilot was two years ago, and Copilot is also better than it was two years ago

    24:03 too. Like an exponential curve is going up. It's only getting better and better. We'll see what it looks like when people are watching this video. Yeah. Hopefully good. So, what are your thoughts on React and the future?

    24:20 And not necessarily just with AI, but yeah, sure, with AI. How does the web development landscape change in the next couple of years? Personally, for years, I've had this thought

    24:34 that React would be more of a hybrid between web and native will only be bigger. I almost feel like the more into apps and web we go, I see that having that real distinction between both doesn't really make sense. And I feel like, especially now also with React, they moved certain hooks and

    24:52 certain parts to React DOM instead of React. And that already kind of shows like, okay, people need to understand what is React. What is the React core? What is the renderer? What does it really do? It's really just mapping something to something that the host platform understands,

    25:07 either a browser or then native. And adding server components or anything now to web and maybe also native is extremely exciting, especially with AI, because we need that to render any AI response or anything like that. So, having all these features be available in both web

    25:24 and native are, I think it just puts React and then React DOM and React Native in such an advantage over any other frameworks or languages, like being so available in both platforms with hopefully

    25:38 similar features, depending on the framework that you're using. And being so close to the platform, like the browser or JavaScript itself, it makes it super approachable for everyone. So, I hope that a lot of new developers, younger developers, 19-year-old self-taught developers that hopefully

    25:55 don't have to write a Medium article, but can just use AI to build amazing applications with React, with AI, with all the new features now. Yeah, I feel like it'll just be so much easier for everyone

    26:09 to get their idea to an actual product. And I feel like that's the biggest kind of mental step that a lot of people still have. It's like, I have this amazing idea, but you just don't feel equipped to actually launch it. Or you might still have these kind of like, okay, well,

    26:25 is it really good enough? Even on tech Twitter, you often see like, oh, the time to interactive is 0.002 milliseconds. We want that down to 0.001 milliseconds. Hopefully people don't worry about that too much. Just try to ship. Now with AI, it's so much easier. Don't overthink too much.

    26:43 Use React, and then you'll be assured that it works on all platforms the way that you intended to. Yeah, I don't know. I'm really excited. Yeah, and especially also with React Compiler and all the advancements there, it's just getting closer to be even more user-friendly. Not having to think

    27:03 about memorization yourself, which is a big annoyance, to be honest, as a React developer. Because I don't want to have to think about the code I'm writing. I really just want to focus on the product and not necessarily have to think about how React would memoize something or render something. Hopefully, React is smart enough to do that. Luckily, they're now working on it.

    27:23 I believe it's not out yet by the time that this will be out, but yeah, it's exciting. Yeah, yeah. I'm cautiously optimistic about the compiler, because JavaScript can be kind of weird. Yeah, it can be kind of funny. But I think that this is a net that they can probably crack.

    27:44 For me, as long as the compiler is an add-on and not a requirement of the framework, then I'll be a lot more comfortable. But if there are features that are like, well, you can't use this without

    27:58 the compiler, then I'll start to feel a little less comfortable about that. But we will see. At what point would you feel comfortable with a compiler? How can we make it Ken's approved?

    28:10 Yeah. I think it mostly is a valuable part of React to me is that I can write a React application without any build step at all. Not that I would want to, but that I can. And when you have that

    28:29 constraint on your design, then it simplifies the design a great deal. And so, Remix actually has this same goal, especially the upcoming version of Remix. You will be able to do things without

    28:47 any build tools of any kind, which I think is very useful, a useful design constraint. And then you add the tools as optimizations, which everybody should be using if they're making a serious application. But it just drastically simplifies the design when you have that constraint.

    29:06 Would have been nice if browsers just had a React renderer built in. So it has to go to JavaScript. Just please. So I do appreciate what you are saying. In the next couple of years, React is still very relevant.

    29:21 I've been saying for a long time that React is the last framework you need to learn. And it's because I am very confident that React will remain the biggest front-end development framework

    29:41 forever, for as long as we have front-end development frameworks. Because I'm pretty confident that nothing will be able to topple it before AI is just doing everything. And AI might be using React in the hood. Certainly right now it is.

    29:58 A lot of tools are built to help you just put together React applications with AI or with React. But eventually, maybe the AI will just build its own framework for your app and it will just be fine. But at that point, you don't need to know a front-end development framework anyway.

    30:20 And so, yeah. I completely agree with you that the future of web development, React will still be dominant and still be highly valued. And who knows when AI is just going to take over and do all of the things for us. But until then, having React knowledge will be

    30:40 just really, really crucial for anybody building web applications. For sure. Yes. So, well, Lydia, this has been a fun chat. Was there anything that we didn't get to talk about that you were hoping we could get to? No, I think we covered everything. Yeah, we're good. Super. Well, thank you so much for giving us some of your time today. And I appreciate you and

    31:02 everything that you do. What's the best place for people to connect with you and follow what you're doing with your JavaScript course? You can follow me on Twitter. I don't tweet too often, though, for Lydia Halle. I'm also on YouTube. I think my handle is still TheAvocoder, which was my username back in the day, but it's still that. Or just LydiaHalleJavaScriptVisualized.

    31:21 I'm sure you'll see me. That's where I'm mainly active right now. Yeah, super. All right. Thanks so much, Lydia. And thanks, everybody, for watching. We'll talk to you later. Bye-bye.