
Ask HN: Learn JS, react, etc or Elm - canes123456
I started working on a POC for a start up idea we had. However, most of my experience is with Java development and very little front end development.<p>My initial plan was to use react for web front end. There a few reasons why I was choose react&#x2F;redux. The final product would need a solid JSON API for mobile apps and an IoT type device. A SPA for the web lets me reuse the same API for all the interfaces. This POC also requires a decent about of data visualization and there seems to be a number of good data visualization components being built for react. Finally, react native could make build mobile apps easier.<p>The problem is that my lack of web development experience is really making react development hard. I decided to actually learn the basics to get a better foundation to build on. But the number of basics I need to learn seems huge as a dive deeper. ES5, then ES6, HTML5, CSS, SCSS, React, Redux, webpack, flow, etc. Also, I dislike javascript so I am not sure if I want to do all the development in javascript.<p>Something like Elm seems complicated but if I mostly just need to learn Elm it seems more straightforward. Should try to learn Elm instead? Will I still need to learn as much web basics as with React? Is the number of library and online resources big enough?
======
acemarke
A couple thoughts.

First, it's worth considering the relative sizes of the communities. There's a
_lot_ more JS developers out there than Elm devs, and probably still more
React and Redux devs than Elm devs too. That also means more examples, more
tutorials, and more info.

Second, you don't have to tackle everything at once. Don't touch SCSS until
you have a good grasp on standard CSS. Don't worry about Flow until you have a
_really_ good handle on Javascript. Don't try to pick up Redux until you've
got a good understanding of React. And, with tools like Create-React-App, you
can start up a React project without having to worry about Webpack or Babel
until you're ready to look at how they're configured.

I'm not saying don't try learning Elm. Elm has a lot of interesting ideas and
benefits. However, given your relative inexperience thus far, I'd avoid it
until you have more experience with front-end dev in general.

Moving on to some specific suggestions: The standard advice is to focus on
learning React itself first. Once you have a good understanding of how React
works, you will better appreciate why a state management library like Redux
can be useful. Don't over-complicate the learning process by trying to learn
many different things at once.

You should start out by reading through the official React docs and tutorial
at [https://facebook.github.io/react/](https://facebook.github.io/react/), and
I'd encourage you to use the official Create-React-App tool (
[https://github.com/facebookincubator/create-react-
app](https://github.com/facebookincubator/create-react-app) ) for setting up
projects. It creates a project with a solid build setup, with no configuration
needed on your part.

Past that, I keep a big list of links to high-quality tutorials and articles
on React, Redux, and related topics, at [https://github.com/markerikson/react-
redux-links](https://github.com/markerikson/react-redux-links) . Specifically
intended to be a great starting point for anyone trying to learn the
ecosystem, as well as a solid source of good info on more advanced topics. In
particular, the "Basic Concepts" category links to overviews of what modern
web dev tools do and how they work together, as well as several suggested
learning approaches, and the "React Tutorials" category points to a variety of
React tutorials, from simple to advanced.

Finally, the Reactiflux community on Discord is a great place to hang out, ask
questions, and learn from others who are using React as well. The invite link
is at [https://www.reactiflux.com](https://www.reactiflux.com) .

Hope that helps!

~~~
canes123456
Thank you, this was very helpful.

"Second, you don't have to tackle everything at once. Don't touch SCSS until
you have a good grasp on standard CSS. Don't worry about Flow until you have a
_really_ good handle on Javascript. Don't try to pick up Redux until you've
got a good understanding of React. And, with tools like Create-React-App, you
can start up a React project without having to worry about Webpack or Babel
until you're ready to look at how they're configured."

This is the plan but also the root of the issue. I was trying to learn things
as needed but I feel like it was more confusing that way. I decided to get a
more solid understanding of each thing but when I start to plan out my time it
is way too long. The best case I learn everything around the same amount of
time I was planning to finish the POC which also includes the API, DB, and
embedded programming.

I going to stick with it for now. My main question is does elm have a smaller
surface area of things to learn and if so is it a big enough difference to
make up for the better react resources?

