You shouldn't focus on learning JavaScript frameworks

Milecia McG on October 30, 2018

JavaScript frameworks are incredibly hot right now. You've probably heard of the most popular two: Angular and React. They can really help speed ... [Read Full]
markdown guide
 

I agree about having more fundamental JS knowledge coming in handy. I see JS frameworks having a multiplier effect - the more JS you know beforehand, the more the benefits of a JS framework will be multiplied.

One recent example is my work with the Ember framework at work. The framework gives good patterns for managing component state and related data to this state in their "controllers." But foundational JS knowledge helped me better see the limits in these controllers. A coworker used a combination of import/export, JS classes, and object-oriented programming to better abstract and manage some data complexity in a way that split the code more and made it reusable. It was standard JS used to make even better use of that framework.

 

Well written. I think you're striking a good tone here. I believe there's a glut of libraries out there and it's all too easy to pick any one up off the shelf and run with it.

On the one hand, someone saved you some time.

On the other, you haven't really learned anything.

If you can find a balance between just grabbing what's there versus actually learning how to wrangle with a language at its core, you're probably on a good path.

 

You should always know the base technologies - I totally agree with that. For as long as I remember there have been frameworks and they can greatly simplify your life (and sometimes make it really miserable). But as long as you know your way around in the technology your using, you should be fine.
I'm not really coming from the Javascript world, so I'm constantly amazed by the vast number of frameworks (probably annoyed would be the correct word here). It's really hard for me to choose the right one. The customers I work with are used to technology that's been around for more than 30 years, so they tend to be terrified by frameworks, that might be dead in three years time - but that's a different story.

 

This is the best article I have read in awhile and I agree with you. Everyone wants an angular, react, or vue developer. I stopped asking for specific backgrounds in candidates and get back to the basics during the interview process. I've hired far better developers as a result. Thank you for articulating this so succinctly!

 

Agree. Knowing the fundamentals of html, css and javascript is very important :)

But that said, the frameworks help in building apps quickly.

My approach is generally to understand the fundamentals first and then to start learning a framework to build apps quickly :)

 

We been at this problem before, multiple time... even at stackoverflow... where there was a recurring joke of jQuery being able to answer anything in JS.

The downside since then, we have an entire generation worth of JS programmers who is stuck on jQuery and can never seem to move beyond them, as they never learnt the foundations of it. And will be stuck in its paradigm of thinking.

Sure, I may love vue or react now.... But who's to say 5 years down the road, with HTML10, all of it wouldn't be obsolete?

Sadly it seems us humans, are doomed to repeat past failures >_<

 

Agree 1000% with this. I've seen so many developers dive straight into using a framework when the project involved really does not require it. I suspect this is often because their knowledge of 'the basics' of front end development (and possibly development in general) are limited and they're not confident outside of a framework.

This is probably one reason why a huge amount of sites these days are massively over-engineered and bloated with a ton of unnecessary code that is dragging the efficiency of everything down

 

You made a point in a good direction. I strongly agree with you. While we are talking about JS. I would like to mention that there is an excellent book in GitHub about JS. Check it out! (github.com/getify/You-Dont-Know-JS)

 

I think even outside of the frontend context, Frameworks can be a bit dangerous. I write RoR at work recently, and if you showed me a method or piece of code, I wouldn’t immediately be able to tell you whether it was a Ruby builtin, or a “Rails thing”. If you don’t already know that distinction, or don’t have sufficient experience to pattern match where the language/Stdlib ends and the Framework Magic begins, finding the answer can be really hard, because it’s not necessarily easily google-able. That’s a bigger problem (for me) with Rails than with any other ecosystem I’ve been in, but as frameworks start to envelope more of the core language/APIs and capture more devs, I think they’ll run into that same issue.

 

That just shouldn't be your main focus until you feel like you know the base languages well enough to write a web app from scratch.

I find the overall idea of learning the foundations vitally important for a healthy developer experience. However, I think one of the fundamentally misunderstood aspects of programming is that it is a craft more than a science.

You learn by doing, and frameworks help you do more with less, making it a more rewarding experience. They can also allow you to do useful stuff earlier on, which is key for motivation. Many concepts in programming can seem baffling until you experience them "in the wild". Higher level tools, of which frameworks are an example, can precipitate that.

To me, one of the key pedagogical benefits of computers is that they allow us to interact with complex models without having to understand them first. This is not at odds with foundational knowledge, but rather a key complement that will eventually ease its acquisition, since we can get "a feel" for things before we know them rigorously.

So I'm not saying you should start with frameworks, but delaying their incorporation until "you can write an app from scratch" seems like too late (of course, that depends on your definition of app).

 

Yup. Im all about reuse but please learn the language. Bad, bloated, and unnecessary JavaScript is killing the overall web experience. Nodejs is beast mode in an good way but you also need to know the architecture patterns applied.

 

That is EXACTLY what I'm doing right now. The course I took skipped vanilla JS completely and went straight to jQuery, which was kind of okay when I senselessly used it. But when I stopped and actually tried to understand what I was doing, my brain shut itself down. So I'm back to the start now but I know it will help me big time. After I conquer JS I want to try React rather than Angular though.

 

frameworks often let you hit the ground running, are often compiled by people more knowledgeable and contain a lot best practices. By that I mean, you learn a lot of them. And eventually you see limitations and are more knowledgeable to solve these yourself. Not to mention the DRY spirit.

 

Agree with you completely! If you don't have a good foundation in the top three frontend languages, you will experience a lot of frustration. It looks easy enough to grab a framework and use a starter repo to speed up workflow; but if you are trying to create specific features that are not in there right out of the box, you are likely to get into a big mess. And if you don't have a strong knowledge of programming to begin with, its likely that you will be trying to learn along the way. This usually makes the documentation impossible to follow or get your solutions from. That's called "going down the rabbit hole".

I say this only because I have seen it frequently and always suggested "deep learning" first; followed by "practice, practice practice".

@cagta suggested a great book by Kyle Simpson, "You don't know js" and I also highly recommend it. It has been called the "Frontend Developers Bible" and I tend to agree with that.

The takeaway here is: There are no shortcuts.

 

So spend some time learning how the frameworks work so that you can use them, but make sure you understand the guts behind them first.

Agreed.

 

Angular - maybe for Google. Not for anyone else. First month will go to reading their horrible documentation.

 
 

I HATE FRAMEWORKS!!! Back in the day...it was a pain to reference a bunch of libraries. But the deployment was simple and rarely did web apps need continuous library dependency updates besides bug fixes. Back then...it was simple and it WORKED.

Fast forward 15 years - you have to install crap A, then crap B, then upgrading crap B forces to install module crap C. I don't think I need to elaborate since we all have been there.

So your NPM app has over 100 dependencies and guess what? Moving Node version f*cks up a good portion of the libraries and you end up playing the lotto game - "guess what EXACT version of module A needs to make module B compile".

DEATH TO FRAMEWORKS!!!!!

 
code of conduct - report abuse