Jonathan Snook, on his learning curve when joining a new organization that uses React:
When people talk about learning React, I think that React, in and of itself, is relatively easy to understand. At least, I felt it was. I have components. I have JSX. I hit some hiccups with required keys or making sure I was wrapping child elements properly. But overall, I felt like I grasped it well enough.
Throw in everything else at the same time, though, and things get confusing because it’s hard at first to recognize what belongs to what. “Oh, this is Redux. That is React. That other thing is lodash. Got it.”
Most of the time React is merely a piece of an app's overall puzzle. There are so many other pieces that make up the entire thing it can be an overwhelming experience.
I'm not new to building apps. In fact, the vast majority of my life I've been building apps. But learning React this year has been one of the more haphazard experiences of my career. It is not straightforward.
It isn't that I think React itself is poorly made or documented. In fact, out of the box you can spin up a simple Hello World React app about as quickly as any other technology. But, as my boy Snook points out, it never ends there. Any somewhat mature app built on React has many, many other parts to learn.
He points most of them out in his blog post but I'll reiterate here some of the things I personally see that could be overwhelming to people jumping in...
- Build routines
- State managers
- Component hierarchies
- CSS pre-processors (like SASS)
Any one or all of these things could potentially be new to a web developer coming into React. And, equally so, an app developer.
The only way to avoid being overwhelmed would be to take one bit at a time. Understand that what you're looking at isn't a single thing but a collection of many new things and that each of them will become natural to you over time. If your team is large enough, perhaps there are pieces you won't need to worry too much about. But if not, you're essentially diving into the "full stack" and will eventually become familiar with that entire thing.
I will say, lastly, that it has been very fun. React sort of combines the things I like about building apps with, say, Swift (typing, "stricter" rules, reusable bits) and the things I like about building things for the web (HTML, CSS, app runs on literally everything).