Ask HN: Learn JS, react, etc or Elm

5 points by canes123456 ↗ HN
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.

My initial plan was to use react for web front end. There a few reasons why I was choose react/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.

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.

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?

2 comments

[ 3.4 ms ] story [ 20.0 ms ] thread
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/, and I'd encourage you to use the official Create-React-App tool ( 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 . 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 .

Hope that helps!

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?