Question: I'm serving as a tech lead for a student group's charity project. We're building a website which puts a bunch of homelessness resources in one place. There are two goals to the project: create a useful website, and let students learn as they build it.

The group is comprised of all levels of college CS student. Most have never done web dev or worked with any of the associated technologies. People get uneasy when I mention using a JS framework.

I want to make sure they get out of it what they came in for -- which by all reports is learning -- but I'd prefer that they enjoy it and don't quit (which would be totally fair, cause they are volunteering their time). 

The group has been asking why we should use a framework. I say 

* testing
* reusability
* dealing with state

They feel that learning multiple things at once could be bad, and that this would be overkill. Honestly, I'm not sure if it would be overkill. It could be. But learning vanilla JS is certainly less valuable than learning React.

Am I being dense? More importantly, would the project better reach it's goals by using a framework, or not?

Answer: 
You have to understand that the learning curve for learning a JS framework like `React` is more complex than simply learning **Vanilla JS**. Learning an arrow function for example is much easier than learning an arrow function plus functional components, state, props, hooks and third party Redux. However, if you are allowed to segregate students based on their aptitude for learning new stuff then you might consider the more advance ones assigning them learning this stuff. You might also assign others in doing simply testings.

Also, I don't know if you tried [SvelteJS](https://svelte.dev/). `SvelteJS` is much closer to vanilla JS and use normal CSS (no JSX) and the learning curve is definitely lower than learning React or even VueJS.
Yes
===

To make JS learn-able, you need to use a library to clean it up. For example doing a foreach of an object in JS has many problems. However using a library can make it much simpler.

No
==

Using a complex library will make learning more complex.

Conclusion
==========

Only use libraries that make it simpler, but do use them.