My struggle to learn React
I’m going to be honest: I’ve had a hell of a time getting my head around React. More than any other technology I’ve touched over the last 10 years of my career, I just haven’t had it click for me. It’s very frustrating as I really want to learn it, and it’s clear the library has legs.
Thankfully, Dan Abramov reached out to me when he saw me tweet in frustration about learning the library. He’s been hugely helpful at helping me unpack React, its ecosystem, its syntax, and its conventions.
My first conversation with Dan allowed me to do some soul searching as to why I’ve been having such a tough time learning React. Turns out, the reasons for my inability to wrap my head around React are many:
1. I haven’t invested enough time on learning it.
My job has me splitting my attention in 7,000 different directions. I travel between a lot of different worlds: helping sell the suits on design systems, getting designers and devs to collaborate together, helping frontend teams establish sane frontend guidelines, doing a bunch of workshops and public speaking, and writing prototype and production frontend code. And I’m not above playing the new dad card.
But wow, those are a lot of excuses! I’m fully aware that in order to learn React properly, I recognize I’m going to have to Do The Work. I have done some stuff already: I’ve done a CodeAcademy class, completed Wes Bos‘s React for Beginners course, bought books, listened to podcasts, and read tutorials. Hell, I even paid someone to build a side-project app I designed in React so I could learn how it works. Still not clicking. But I haven’t really built real production stuff with it. I have some stuff in the works that I’ll share another time, but ultimately this all boils down to me jumping in the water and swimming. I know I’m never going to be able to dedicate my whole work week to working in React, so that’ll be something I’ll have to overcome.
2. React and ES6 travel together
…and I’m not really up to speed on ES6 conventions. While I was head-down flexboxin’ and gridding’ and Sassing’ and componetizin’, the JavaScript community was promisin’, lettin’, =>’in, and creating a whole bunch of other jazz. Because React and ES6 are very much intertwined, I have a hard time digesting any given block of code. What’s coming from React? What’s just ES6 JavaScript? It’s hard to unpack multiple things at once, like trying to read a restaurant menu in a country that has significantly different cuisine and uses a totally different language. It’s a lot to process.
4. Getting lost in this
-land.
I find myself getting hopelessly lost when dealing with this
and figuring out how to pass stuff around a React codebase. There’s super()
and constructor()
and a bunch of other things that I get tripped up over, despite having completed tutorials and courses. No doubt this is related to truly investing the time to learn the library’s conventions, but for now I haven’t found an intuitive way to think about all this (ha).
5. I haven’t found sample projects or tutorials that match how I tend to work.
media-block
, card
, hero
, etc) and keep specific business logic, content, and context away from that file to help ensure components can be portable and versatile. I know this is possible in React, but again I just haven’t really come across any projects that I feel set things up in this manner. I’d love to see projects that feature a library of dumb, abstract components, which then are consumed by more application-specific components.