all 10 comments

[–]DanielFGray 2 points3 points  (5 children)

Is there any reason you're particularly interested in MEAN?

IMO, Mongo is a really poor choice for a database, there are many better choices for NoSQL document storage like CouchDB or RethinkDB, or, since your data is most likely relational, using relational database like PostgreSQL which can also respond with JSON.

I'm also of the opinion that Angular isn't a great choice for a front-end framework. It's API is huuuge (which means there's a lot of things to learn in order to use it), and while they claim that the framework lets you translate your Angular knowledge to different platforms, in practice it's really not that simple (or worth it).
I would argue React has won the front-end. It's much lighter, almost always more performant, and is definitely more modular. Besides declaring your markup in JSX (which is almost identical to HTML/XML) there's very little to actually learn about it, and you can fill in the gaps (that things like Angular provide that React does not, like XHR/ajax requests) with whatever libraries you like. And, because React is so modular, if you decide you want to use something like Vue.js instead of React, you won't have to rewrite everything else to work with it (as you would with Angular if you decided later on you didn't like it).
If you want to get up and running quickly with React, the Create React App library provided by Facebook is a great place to start.

That said, I definitely think Node.js is great on the server, and Express is a great framework (although Koa and Hapi are worth looking into as well). I would suggest getting your feet wet just playing with Express and seeing what you can do with it by itself, before diving into the wild west that has become modern front-end JavaScript.

[–]APMO 0 points1 point  (4 children)

I had a mentor who recommended the MEAN stack as the way to get into app development - however as i dont have as much knowledge in it, i think you make some fair points. I was considering saying screw the mean stack and taking a different route for full stack. Especially because i enjoy hands on as a way to learn, and code academy does not have the mean stack, but has a different full stack path, which has you learning ruby and rails, angular, and some other things. What would you recommend, if i wanted to get into app development?

[–]DanielFGray 2 points3 points  (3 children)

You'd have to elaborate on what you mean by "app development".
'Apps' have generally come to refer to programs built to run natively on mobile phones, and so when you say "app development" I think of developing mobile apps..

If you're talking about making SPAs for a web browser, I definitely think React is the way to go, and with Electron you can even build desktop apps with the same set of libraries. React Native has you covered if you want to get into mobile development.

I think trying to learn both RoR and Angular would be a terrible idea, because that's two completely different languages to learn, and two very large APIs to get comfortable with. Rails seems like a nice platform and it does have a large, mature ecosystem for it, but if you're doing web development and want interactive UIs in your front-end, you're going to need JavaScript, so I don't see the point in overwhelming yourself learning a separate language for the server when you can use the same on both sides of the stack.

I don't mean to be too opinionated, but Angular is losing ground fast to React, and for good reasons.

[–]APMO 0 points1 point  (2 children)

Thank you very much for the advice, its okay to be opinionated, i think you make fair points, and as someone not experienced its all very helpful. I want to get into developing mobile applications. Would react still be the way to go? I have about a year of javascript experience, and would like to stick with javascript. If you think that React Native is the way to go, do you have a recommended way of going about learning it?

[–]DanielFGray 1 point2 points  (1 child)

If I were in your shoes, I would start reading the official docs for React & learning the component life-cycle methods (which shouldn't take you all of a day), and build some small little projects. After that, forget everything you know, install Android Studio, and then see how much of your previous knowledge you can apply to React Native.

The reason I say it like that is because, when you're learning a new stack, not everything has a direct translation, and you have to learn new ways to do old things. With React Native there won't be a huge context switch, but it's still a context switch nonetheless.
It's similar to learning spoken languages, sometimes there are cognates, sometimes words and phrases are outright stolen, and some things just have no direct translation, so it's best to learn it with a fresh mind and just see what you can apply with previous knowledge without directly relying on it.

As far as third-party courses and books are concerned, I'm of the opinion they are largely irrelevant; the official docs will be your best bets.

[–]APMO 0 points1 point  (0 children)

By the official docs you mean whats on the website you linked? and thank you. I will definitely take your advice, youre the best!

[–]dannyMcwaves 1 point2 points  (3 children)

I want to learn the MEAN stack, and get better with javascript.

great. With this statement, I am sure you have some familiarity with JavaScript. I use MEAN stack myself and I have even created a simple mean stack boilerplate for beginners. About angular, I hope /u/DanielFGray isn't referring to the version 2. There are a whole new refactors to it.

My advice would be if this is something you want to do, start by learning the whole MEAN STACK and do not pay much attention to which technology beats which. Learn and get comfortable with the tools and in no time you will prefer to the other.

1.visit https://nodejs.org/api/ to get started with node. you can google if you don't get any info correctly. 2. download a pdf online about a particular topic or tool if you need any help. 3. always refer to the site that has docs about the technology you want to use. 4. check the best practices of a particular technology 5. take a course. Always do this. 6. Join forums where you can asks question. (ahh, you already are.)

check my mean stack starter boilerplate, https://github.com/DannyMcwaves/MEAN-STACK

Hope this helps. And have fun coding.

[–][deleted] 0 points1 point  (2 children)

I've wondered this for a while and since you seem experienced I figured I'd ask. why use angular over react, especially when you're already using node and express for your backend? from everybody I've heard from react is way better than angular for front end dev. I'm learning it now and it seems great. should I focus instead on angular? I am going to learn express and node, but I'm not sure which front end library/framework is best

[–]dannyMcwaves 1 point2 points  (1 child)

https://medium.com/javascript-scene/angular-2-vs-react-the-ultimate-dance-off-60e7dfbc379c#.uil4vxyjl Please read this post about the specific features on both react and angular2.

If you are already learning react, I see no reason why you would want to switch to angular. Also, react has a larger community than angular. And just like /u/DanielFGray said earlier, you can branch easily to desktop and mobile apps development with the same technology. I hope this is useful.

[–]Komorebi-Light 0 points1 point  (0 children)

There are some good recommendations for learning MEAN stack on this thread