There are three things I’d like to bring up.
- Hating React because your struggling with it.
- React’s purpose, and why its very popular
- The purpose of FCC.
So first lets start on hating react because your struggling with it. There’s something to be said about judging something you don’t understand in general, and not just with frameworks. The hate could stem from not knowing what your doing, the actual difficulty of the framework, or the actual difficulty of the use-case. For example, you could use jquery to handle basic UI updates and love it. But if I asked to create a Google Drive clone, odds are you would start hating the difficulty of the use-case. Is that jquery’s fault, nope but then the use-case is beyond what jquery is designed for.
Following this topic, we could build a hello world app and find React is complete overkill for the job. So does this mean React is a terrible framework? Nope, the framework isn’t meant for super simple use-cases. So hating the framework isn’t because its bad, it could be many reasons, from what your doing to how your using it. If you feel like things are wrong, you might be approaching it wrong.
So what is React’s purpose. To quote the doc:
Now you might have to change your thinking about how websites “work” when using React. Going back to the previous example of building Google Drive, the complexity that React covers and scales to is that of Facebook, because Facebook built and uses the framework for their UIs. React builds the UI, by controlling a lot of how we build it (using jsx). Jquery works by providing basic functionality to update the DOM (among other things). Different approaches to the same problem create different advantages and disadvantages. For starters, jquery’s approach is more “native” in that you get more or less complete control over how things happen. React abstracts away a lot of the lower level actions, but allows you to focus on the what instead of the how. Your React code determines what is changing, rather than how we are changing it. In complex use-case you will have a lot of whats, and thus you will end up lots of hows. So abstracting away the “how” is key to all of the big web frameworks. (React, Angular and Vue) This way you can focus on bigger problems than how will you handle UI updates, and complex user interactions.
Regardless of how you build websites, a lot of companies utilize React, and thus are looking for React developers. Static website jobs are becoming less and less common due to Wordpess, Wix, and others. As such, front-end web development has shifted to more of an application delivery platform, with more focus on mobile-web, and stuff like Chromebooks. As such, complex UI is and will become only more common, so learning React is a good way to get going even if you don’t end up using React in your job.
Finally I want to directly address this attitude and FCC’s purpose.
I’m truly struggling with it and am forgetting anything I’ve learnt yesterday because I hate it
I don’t want to come off as trying to be offensive, but the whole point of FCC is to struggle to learn something. If you find yourself not remembering, or caring what your using at FCC then you need to stop and ask yourself why are you even going thru FCC. If you answer I just want to get a certificate to get a job then I will tell you right now the certificate wont do anything to get you a job besides listing it on a list of accomplishments on a resume.
The whole point of Free Code Camp is to struggle to learn something, because if it were easy, then it isn’t worth learning.
The key thing here is the learning part. Just because you get a certificate doesn’t mean you learned anything. You can copy-paste your way through the entire curriculum, but you get nothing by doing such besides that piece of paper. The value you get is the experience you gain when you fail and overcome.
- You don’t know what HTML is, you build a web page.
- You don’t know what React is, then you build a dynamic web page with React.
- You don’t know what web development is, then you build a full stack MERN app.
Most companies will hire you if you have experience dealing with X Y and Z. You only gain experience by using X Y and Z. A big part of that experience is struggling with problems, dealing with issues, running into wall after wall, and yet being able to overcome those so you can provide insight to them later. If you don’t struggle, you don’t learn, if you don’t learn then the certificates mean nothing.
The fact your struggling is the first sign of learning, but getting around to why your struggling is the next step, the key step. You could give up here (and copy paste your way thru the course) but then your cheating yourself the value of FCC. Stop with the challenges, and challenge yourself to find why you don’t get React and see the reasoning as to why the framework is so popular.
It’s not a fluke that is so popular, and it isn’t taught at FCC just so you can not use it in the future. Only once you really understand React, then you should decide if React is a terrible UI lib. Until then your just cheating yourself from gaining experience.
Finally I want to point out that the only way you don’t complete Free Code Camp is you give up. As long as you have time, grit and an internet connection anyone can finish the courses. But what you get out of the courses is mainly about time and grit. The more of those you have the deeper you can go into the topics Free Code Camp touches, and the more you “get” out of Free Code Camp.
Good luck, keep struggling to keep learning.
PS. I’m not a React dev, I’m an Angular dev and I hated learning it, since the framework is massive compared to React. But, I forced myself to see the potential, and now I understand why there’s so much to learn, and the thinking behind it. I’m not saying Angular is better than React, only that they cover different use-cases, and focus on different problems with developing applications. They are different tools for similar jobs, with some overlap. Knowing how and when to use a tool is vastly more important than knowing that 1 tool can do the most jobs.