A note on quality
This is a “draft” post. If you’re looking for an explanation of what a draft post is doing on a published site, you can find one here.
In short, this post most likely does not meet my high standards — at times, even baseline. It may not be complete, have spelling errors, etc. I have published it because I think in some way, as insignificant as it could be, you might find it resourceful.
- I usually keep away from personal posts on my articles feed, but this is one and I may choose to do more of these depending on how I feel at the time. This, reall, is an opinion piece.
- It’s also a draft post, as must be evident. I’m not going to link to tools like TypeScript and such. Please use a search engine. Where absolutely necessary, I have linked to resources.
- The words ‘ReactJS’ and ‘React’ have been used interchangeably.
It’s no secret I’ve been actively looking for a job of late. I’ve pretty much stopped my work on Celestial until I can find a full-time role, too. No embarrassment in prioritizing to pay your own bills, and small FOSS projects like mine just don’t do that by themselves. Unfortunate, but true.
The market and job titles
The market is unusual right now because of Covid-19. Still, it appears to me the tech industry in general is largely hiring — and some tell me it never stopped bar mid-sized and large corporates.
Perhaps hiring managers are more cautious than usual, and maybe the salaries are lower — but those are different issues to the fact that hiring is still on.
How I (and many in the community) feel about ReactJS
Anything that achieves the mainstream status ReactJS has — and so quickly — surely signals that it solved a real problem and did so gracefully. However, with this mainstream status, we also have developers, old and new alike, writing every single thing in React (or Vue or Angular or any other UI framework/library).
You might have been thinking, “I already know and work in ReactJS, so this has the least barrier to entry for me. Anyway, I care more about the content than I do about decisions like these.” Perfectly valid. No problems at all. You’re allowed to do what you feel is best for you, and I support you!
Smarter people than me have written more about it and you’ll find these to be much more lucid and well-put-together:
Dave Rupert’s post especially struck with me:
The ecosystem is constantly evolving and building off itself, composting old best practices into new best practices. It’s thriving. It’s a biome filled with lifecycles, hype cycles, and major API changes.
In my experience, there’s no casual mode within React. You need to be all-in, keeping up with the ecosystem, or else your knowledge evaporates. I sometimes browse React projects and look at the
importblocks to see if I recognize any of the dependencies; I probably average about ~8%.
Why am I learning it from scratch?
Almost all of my on-the-job ReactJS experience is from the time when it adopted ES6 classes. You had a constructor, lifecycle methods, and a special render method. That was all of React, if you wanted it to be.
…which proves to me it is possible to use ReactJS and be sane at the same time. That’s beside the point, though.
Trying to get back into ReactJS now, I feel like a dinosaur. I must re-learn, and learn new things for the first time.
super method has been deprecated as have a bunch of other lifecycle methods, and the
class way of writing components is on its way out? Frankly, I don’t even know what I don’t know!
Well… React developers.
The current market is near-exclusively looking for React developers. That comes with the baggage of knowing and being familiar with an entire ecosystem:
- state management via Redux or Flux,
- middleware for state management, such as Redux-Thunk or Redux-Sagas,
- …cue ES6 generators.
- static typing via TypeScript or Flow,
- CSS-in-JS solutions such as styled-components,
- immutable data structures via Immutable.js (and more?),
- debugging with ReactJS and Redux Developer Tools,
- new way of parsing/fetching data from an API (GraphQL),
- popular frameworks on top of React such as create-react-app, Next.js, and Gatsby,
- major API changes within ReactJS itself,
- error boundaries,
- context API,
- and so on.
As Dave Rupert said, the only way to be a React developer is to go all-in.
With my job-hunt taking the limelight coupled with the demand for React developers, it follows that my “free” time must be dedicated to immersing myself in the React ecosystem and achieving some level of mastery in it.
On mode of learning
I paid a small amount for a course by Maximilian Schwarzmüller titled “React - The Complete Guide (incl Hooks, React Router, Redux).”
I usually prefer written documentation and tutorials over video learning, but I feel watching and listening may be better suited for the breadth of knowledge I’ll need to cover in a short amount of time.
To echo Dave Rupert’s sentiments, in practice, ReactJS is no longer just a view layer, it’s a whole ecosystem. Reading React’s official docs and calling it a day is not a realistic option.
All criticism aside, I firmly believe in the philosophy of picking the right tool for the right job. React is just that — a tool. It has its uses, but it’s not the catch-all that we treat it as.
If we, as a community, put more thought into what we use in our projects, we may end up making the web a slightly better place for everyone, not just those of us with privilege — of time, performant hardware, and the ability to constantly keep up.
And, I hope this exercise in re-learning and learning will make me a better fit for some jobs and that I’ll be able to land one, too!