The hardest thing about React?
Well, it’s different for each person, but I daresay everyone struggles somewhere along the way.
Being part of the React community for a while, you start to notice patterns. The common themes. The perennial struggles.
There are the nuts and bolts problems: immutability is weird; JSX isn’t always intuitive; “thinking declaratively” is a hard-won skill.
Then there are the bigger-picture problems. The struggles that consume entire swaths of the community.
The big one, I think, is being stuck in tutorial hell, seduced by step-by-step guides that offer to teach you what you want to know.
I say that as if tutorials are bad or something, but they’re not. Not really. There are a ton of great ones, and they don’t mean to lead you into a pool of quicksand.
They’re fun! They’re alluring! The good ones actually teach you things! At the end, you feel like you’ve learned something. But a lot of the time, that feeling of knowledge is fleeting.
Without practicing the thing – without typing out the code yourself, persevering through typos, and getting it running on your own – the knowledge doesn’t stick.
And merely following paint-by-numbers tutorials isn’t enough. Ultimately you’ve got to build a few of your own projects using those skills, but it can be tough to know what exactly to create.
Coming in at #2 has gotta be learning too much at once. React, sure, but also Redux and GraphQL and AWS Lambdas and maybe TypeScript and a little CSS-in-JS and a bajillion other things at the same time. This is a close cousin of #1.
In an attempt to be comprehensive and “real-world”, a lot of learning resources try to cram in too much stuff. And since it’s so common – seriously, full-stack tutorials are everywhere – it starts to feel like that’s the only way to learn things.
It’s hard to resist biting off more than you can chew when every other tutorial offers the same 15 course meal.
The theory is that learning everything at once will be faster. You’ll be able to build entire apps! Front to back! It turns out to be the opposite, though.
Now, this next problem affects everyone to some degree, but especially the more experienced devs among us. Number 3 is that there’s so much complexity and tooling in modern front end development.
And if you’re more experienced, you run into the “beginner again” problem. (Alex Hillman has a great post on this that is worth your time)
Devs who’ve been at this a while are good at what they do. After years of working in the field, they’ve built up a lot of knowledge, and confidence in that knowledge. It might’ve been a while since they’ve had to struggle with new language syntax, or tooling, or new ways of thinking about problems.
But this new front end world looks absolutely baffling, and it’s awfully humbling to go from feeling like “I got this!” to “This is hard. This is bad. I am bad. The world has moved on and I am stuck here.”
That feeling of starting from scratch can be enough to make a person give up.
In all of these problems, the solution is more or less the same: pick small chunks, learn one thing at a time, and give yourself tiny wins along the way – by writing actual code.