Truly disliking React but want to complete the course

Hi everybody, first post here.

I’ve been doing the curriculum for nearly 1 year (full time jobs get in the way). I have backend experiences with Python, Lua and Go but wanted to “make websites”, at least and definitely want to complete the curriculum this year.

Problem is, while jQuery, Bootstrap, CSS and JS in general were easy and at times challenging but in a “damn, I want to solve this!” way, React (and Redux) feel like a mysterious framework that hides a lot of particulars and where there are 12 solutions to the same problem, each time. I’m utterly disliking it and don’t plan to use it at all in future but I do need to pass it to complete the curriculum, obviously. I’ve no designing skills and won’t probably ever design a really pretty website, the styling in between the React code is even more confusing for me; I’m used to have css files separated from the others and refer to that for any styling. At least this way I know where to look for issues with styling but React is different. It feels so “wrong”.

I’m truly struggling with it and am forgetting anything I’ve learnt yesterday because I hate it. Yes, hate is perhaps a better word as I’m feeling like I’m using a wrong tool, one I just need for the curriculum and then I will throw away.

I’m at the point where I’m looking for solutions to go through the tasks and am not actually learning any React. I’m not going to use it for the projects later in the Front-end Libraries Certification, for sure. I don’t like this choice but I see the only viable ones would be either to give up on the curriculum or copying and paste working React code from somewhere just to get this certification. How can I enjoy React? Do you think I’m good with sticking with jQuery and plain JS for my career?

Thanks in advance

This was me, nearly three years ago:

I am now a professional web dev that was hired ostensibly for my React skills.

But I HATED React for ages! It took me a long time to figure out how state and props were passed between components, and I had to pick up Redux on the job while diving into a complicated codebase.

But once it clicks, it’s really a joy to work with. I’ve toyed with the idea of building a side project or two in Vue, which is seemingly easier, but I really just enjoy React so much it’s my go to front end tool for everything.

However, had you told me I’d be an employed React dev 3 years ago and would end up singing its praises, I’d have laughed in your face (or cried).

Stick with it, if only for the sense of completion, but I’ll be surprised if it doesn’t grow on you eventually.

4 Likes

If you plan to be a frontend dev, probably not. Unless you’re planning to retire in a few years from now.

React (Angular, Vue) takes a bit to get used to after jQuery or vanilla JS.
If you struggle with React concepts try Angular or Vue (I’ve heard that Vue is more beginner friendly). After you’re comfortable with one framework it will be much easier to pick another one, so you can learn e.g. Vue and then learn React.

1 Like

Yea, if you want to do frontend you can’t really get away from React or similar. Companies want applications. For a variety of reasons it is convenient to do so in JS. Just using JS (often via jQuery + plugins et al) was the only option for a long time, and there are good reasons the current frameworks won — building anything mildly complex becomes nightmarishly complicated very quickly without them. And by complex, that could be something as common as form-driven UIs (this is why Angular exists!).
For frameworks, maintainability, consistency and reduction in overall complexity of codebases is the goal. Of the major frameworks, React has by far the smallest API, and it’s just JS (even JSX), imo it’s the best to use for learning, but it does tend to use quite specific patterns of JS that can be hard to grok.

Re CSS, you can just use CSS exactly the same way you understand, React says absolutely nothing about CSS: it is just some JS that renders HTML, you can style that HTML exactly the same way as before You can use one of the various CSS-in-js solutions, which is what you’re talking about, and there are specific good reasons why you might do that, but it is no way mandatory.

Future? Possibly web components will eat into framework market share, but the API isn’t great and they’ve been bouncing around for years and years. And WebAssembly would allow front ends to be written in any language, but the first few serious attempts at frameworks have tended to ape React- and Elm-style patterns (Yew for example)

2 Likes

But what about if apart from having a priority to find a web dev job, also you know you will be building stuff (apps) for yourself in the future?

I heard that while Angular might not be easier than React, you can build an App more fast since you don´t need additional stuff like with react (webpack, etc)

pd: Another one which is lost and angry with React complexity :frowning: (and don´t mind not getting the complete certificate)

Angular dev here.

To be clear there are basically two version of Angular. Angularjs (version 1+) and Angular (verison 2+, current version is 7). These two frameworks were created at Google, and follow similar design choices, but past that they are two totally different frameworks. Angular (without the js) is the newer version, where as Angularjs is the legacy version.

As you said Angular(js) doesn’t require webpack, since it works as a client “lib”. But the new Angular does use a complex build system (usually the frameworks cli), and has a similar build process as React and Vue. Angularjs is also going to be deprecated sooner rather than later since the framework is getting rather old, and the newer version (Angular) is getting all of the new fancy features.

So I don’t recommend learning the legacy Angularjs, unless you require it. Use the newer version if you want to learn/use Angular. Also, the speed at which to develop is generally slow on Angular mainly due to the increased complexity and scope of Angular applications, than the common React application. But were talking about two different frameworks with two different use-cases. React is a ui lib, where as Angular is an application framework. Angular’s more verbose for increased scalability, and performance (two of the main reasons why it was re-built from the ground up)

ref on Angularjs end of life support: https://blog.angular.io/stable-angularjs-and-long-term-support-7e077635ee9c

1 Like

You don’t have to use React to get the cert, it’s just preferred because the testing suite works with it, I think.

From the random quote generator page:

You should use a frontend framework (like React for example) because this section is about learning frontend frameworks. Additional technologies not listed above are not recommended and using them is at your own risk. We are looking at supporting other frontend frameworks like Angular and Vue, but they are not currently supported.

There are three things I’d like to bring up.

  1. Hating React because your struggling with it.
  2. React’s purpose, and why its very popular
  3. 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:

A JavaScript library for building user interfaces

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 programming or what JavaScript is, you build a calculator, and Simon game.
  • 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. :wink:

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.

6 Likes

You´re right, that´s good to know.

1 Like

That is very uplifting, thanks for it. I personally doubt I would end up loving a technology that I first hated, as it has never happened to me and it is not how I am. I tend to make strong assertions about a technology in the first phase of learning it, positive or negative, and it is very hard for me to change them. Surely not a great way to learn but that’s how I am.

But thanks for telling your experience. Perhaps React will be the exception :slight_smile:

1 Like

You raise a lot of good points, thanks. In order:

  1. I’m not hating React because I’m struggling with it. The JS algorithms were also a lot of struggle but it was FUN, I loved how each of them stated a problem and I had a specific state where I was and had a specific state where I should end up. It was like going through a labyrinth looking for the exit. The purpose was clear, the struggle was just to understand the “how” to get from one state to another. Same with Bootstrap, CSS and jQuery. Each has a specific use case that I understand and can make use of immediately. I did struggle with jQuery projects too but, again, they were also fun. I understood that deep down jQuery was to be used to manipulate the DOM and so I knew its role from the beginning. The only struggle was to learn the syntax and using what and when.

  2. Coming back to React, its purpose doesn’t interest me. It’s bigger than I will ever write. I suck at designing, all my side projects are functionally working but aesthetically ugly. I see no use in React other than building bigger UIs, which I cannot do right now. It uses a lot more code than I am used to, it is 10 lines of js to output 1 of html. It is tedious and repetitive. I am having absolutely 0 fun writing it (I’m in the middle of React + Redux challenges), for the first time throughout the curriculum. The few solutions that React exposes are more advanced than I need, they solve advanced issues that I have not encountered. I don’t see a purpose for me in React, right now, right here, whereas I did with all the other technologies in the curriculum. The “hate” part comes then from not needing it, nor wanting to work in the way React forces me to work. It is an opinionated piece of software and I am disagreeing with the few opinions I have learnt so far.

  3. That is the reason why I’m forgetting it each time, I’m not interested, not having fun and not agreeing with React so far. The struggle is bigger than it should be because of this.

1 Like

Note that this is extremely unlikely going forward. And the purpose of it is not to make it easier to design, the design side stays exactly the same whether you write HTML then manipulate it via JS (a la jQuery), or whether you declare what the HTML should look like then allow the framework to manipulate it (a la React). I get why you dislike it though.

1 Like

You could try Codecademy’s React course. It was a lot more clear for me. Sometimes FCC changes too much from one exercise to the next. I found it easier when I was only supposed to change one line, then read, then change/add another line (to the same code), then read, etc, slowly building an app line by line.

I was very anxious making my first React app locally. I used create-react-app and still do for all my React projects. I would recommend trying it out once you finish studying.

1 Like

If your like me and you don’t like designing, then that’s fine. Your sites don’t magically become better looking using React. Design is design React does nothing for design, it only allows you to break down problems, by giving you the flexibility of being able to “programmatically” handle your UI.

Now if you don’t want to learn how to build complexUI’s with React then that’s fine too, no one says you must learn React to be a front-end dev, but at the same time, most front-end jobs use React.

Coming back to React, its purpose doesn’t interest me . It’s bigger than I will ever write.

Is this your opinion or your goal?
If its your goal, then odds are you will probably focus on back-end technologies as a career which is totally fine, but it also means don’t spend time learning what you don’t need or want.
Free Code Camp teaches full stack development if you go through the entire curriculum from start to finish. If you don’t want to be full stack, then don’t go through all the curriculum and instead focus on the areas you care about. Don’t waste your time learning things you don’t want to ever use, copy-pasting your way through the curriculum is a terrible way to go about things, but no one says you must finish everything in FCC. There isn’t 1 path to becoming a web developer, FCC just teaches the most common path out there.

The opinion that you wont need React will only be true if and only if you skip out on jobs that use it. So if I have an opening for a full stack dev with a MERN stack, you won’t accept the job simply because you don’t like React. If your fine with this, then good, focus on what you like and learn those skills.


Now your idea that React opinionated approach to development isn’t a good, or is hard, isn’t a new idea or opinion.

Learning React isn’t easy, and its approach did shatter some peoples expectations of how to build the web (css, html and js are separate!). But again, you don’t get 128k stars on github by being unpopular. Now does it mean its for everyone hell no!. Remember I am not a React Dev, I’m an Angular dev and yet I haven’t even tried to recommended to even try to look into Angular because I know your problems wont be solved by it. There’s also the huge community of Vue that doesn’t want to use React either. There’s also more legacy frameworks out there such as backbone.js and legacy Angular.js that handle alternate ways to build things.

So, if you want to see the purpose of React, go out and build a highly UI complex web page, or even think about trying to build one. If you know enough of React you would at least understand how you would approach and break down the problem. I’m not saying you will know 100% how to do it right then and there, but with React the path is clear from concept to implementation (elements on the page become components, the business logic is handled by Redux, etc).
Now if you don’t believe you want to ever build something as complex as a complex UI web page, then that’s fine stop trying to learn it. You shouldn’t learn what you don’t want to do, and waste time you could be spent learning something you do want todo.

Finally, I want to point out that deciding if you like something or don’t like something while struggling with it is tough. It’s like trying to get perspective on something while your in it.
I went to college for a CS degree and learned a number of things I did not have fun with. namely data structures, and database design. Both had teachers that talked thru slides and had tests where 50% of the class failed. I felt dumb, the classes felt boring, the topics felt out-dated, and made me with wish went into IT instead.
Once out of school, the two classes I wish I paid more attention to, and spent more time on where databases and data structures. Simply because I ended up relying on these almost daily, the topics weren’t as hard as I thought but were very important, and I saw the value in knowing them because I had to know them.

So your welcome to move along from React and spend your time on what you want to do. I just recommend spending a little time trying to get perspective on the topic. It’s easy to keep your head down and grind away and only see whats in front of you (React syntax is pretty funky), but if you take pause and look around and try to gain some perspective over all that you have learned and try to see what you want to do, it might be a way forward, or away from where you want to go. Your welcome to always check out Vue, React, or focus on more backend technologies as a career.

Good luck on whatever you choose :smile:

That what bothers me with “skipping React” in the curriculum. I like the idea of being a full stack developer, I’ve started FCC because I was ok on the backend side but knew next to nothing on the frontend one. Therefore I do want to learn the frontend technologies. React unfortunately for me is extremely on request in my area, I’d bet 75/80% of job offerings for frontend or full stack roles include React so I feel that skipping it would make me an uninteresting, job-wise, full stack developer. Sure, there are companies that don’t use it and where a good knowledge of JS will suffice. Yet I’d be limiting my chances quite a lot, unless I move away from where I am.

I am not planning it anytime soon but, more importantly, I don’t believe I can, not on my own at least and not without completely devolving the designing aspects to somebody else. Which could very well be the case when working for a company.

In any case, thanks for the points raised, I am taking a few days off programming altogether in order to better assess what I plan to learn and what I truly like or dislike. All your advice here will be invaluable for such a reflection :slight_smile:

Good luck to you :slight_smile: