Welcome to the Treehouse Community

The Treehouse Community is a meeting place for developers, designers, and programmers of all backgrounds and skill levels to get support. Collaborate here on code errors or bugs that you need feedback on, or asking for an extra set of eyes on your latest project. Join thousands of Treehouse students and alumni in the community today. (Note: Only Treehouse students can comment or ask questions, but non-students are welcome to browse our conversations.)

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and a supportive community. Start your free trial today.

JavaScript

Steven Ventimiglia
Steven Ventimiglia
27,364 Points

Can someone explain to me the obsession with the MEAN stack?

My opinion is that - these days - for every fifty programmers, there is only one that actually knows how to build software.

I just finished the front-end track, to enhance my understanding of JS. Slowly shifting away from jQuery, I also looked for other options. So, the MEAN stack seemed more than appropriate.

After some serious research (which include courses, workshops, and 20+ years experience), unfortunately, I seem to hate it.

I hold an overall dislike for things such as Bootstrap, because it allows the inexperienced to stay inexperienced, and not to understand why things need to be present within the code they write. As someone who is just as critical about themselves, this was the reason why I felt the need to go deeper with vanilla JS as opposed to using a library.

If a library breaks something, or doesn't work according to how it's planned to work, it's always altered by the team - which defeats the purpose of using it - allowing your code to become unnecessarily bloated.

So it came down to this... I've been playing with Node, NPM, Express. I really, really liked it at first, but as I started to get further into my courses, I started to see all the things that were purposely avoided a decade ago within the software development community.

Now, after doing about a week's worth of QA... the idea of embracing the MEAN stack is broken. Shattered. The application of such a technology is globally half-assed with 1000 iterations being exactly that... a process repeated way too many times, so one thing can finally go into production. This is not something a developer can be, or should be proud of.

Angular is a great example. Look how a complete rewrite was needed to fix the unfixable, and now more people are walking away from it because it's as if Google has reinvented the wheel... and, it was them that invented it in the first place. This does nothing to convince me of its effectiveness. MongoDB is hated by anyone with serious DB experience. To them, it's a joke and no way to manage data past an intermediate level.

The main purpose was to play with the idea of creating an Electron app. However, a responsive website and native apps - even though they are more work - appear as if they're have a longer, more effective lifespan.

My current decision is to kick it "old-school", and dive into PHP/MySQL - however - I'm looking for anyone to counter this argument/decision against the MEAN stack, and show me that it may be worth the time... instead of what I feel is a waste of time. Both "fairy tales and horror stories" will be appreciated so I can make this choice wisely.

Thanks guys.

3 Answers

I like your question, it's always great to ask if the emperor's new clothes are in fact even clothes. You may have heard claims about the stack that overstate it's usefulness. In my opinion, the MEAN stack is worth studying, but is not the right tool for every job. SPAs, being browser-heavy, are a good application. Angular's two-way data binding can provide users with a really responsive experience right out of the box. But react, in the MERN stack is a much leaner. Mongo and other noSQL databases eschew some benefits of static schema in order to accommodate a more dynamic data model, but the abstraction of the persistence layer lets you choose whichever makes sense. Express as a server will scale better than apache in many cases, where it's non-blocking IO model allows the same server resource to handle more concurrent users. And node itself has a rich community of contributors and a great package manager. Don't get hung up on a bad implementation as the only representative of what's possible in a framework. Another way of thinking about it is, "what kind of person am I while using this tool(set)"? It takes diligence to master an environment. So yeah, don't believe the hype, examine the requirements and choose the right tool for the job.

Aaron Price
Aaron Price
5,974 Points

I won't pretend to be an expert, but I think the answer is almost always "money".

In some cases, 'javascript everywhere' makes it cheaper for a startup to get started up because they think they just need to hire 1 full stack js dev, rather than potentially multiple devs (a frontend person, a backend person, etc).

Then you have bootcamps. They're everywhere, and they are financially motivated to teach people full stack web development in the shortest timespan possible. I haven't personally been to one, but my understanding is that they often focus on MEAN for the same reason: It's easier to teach someone js in a short timespan than to teach them js, AND sql, AND python, AND etc. Granted, a lot of them also teach the basics of other things like ruby on rails, which has a similar problem of doing too much magic behind the scenes, and adding tons of bloat, but seducing people with how easy it is.

IMO the "MEAN STACK" is corporate America answer to save money on developement. Don't get me wrong I think the stack is great and has many benefits and possibly the best standard for web apps (many people say). As a UX designer I have seen many job postings with the "MEAN STACK" as a requirement for the position.