Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

Please keep in mind this is not another 'How much [insert programming language here] should I know before moving onto [insert framework here]?' What I'd like to know is how beneficial is it to learn the those advanced concepts of a programming language when your intention is to heavily rely on its framework the majority of the time. So for example I've began to use jQuery and first took the time out to really grasp the core concepts of Javascript. Additionally I have a few beyond the basics books (Secrets of a Javascript Ninja for instance) on the shelf that really delve into the language. As I skim through the pages though I find that a fair bit of it doesn't carry over to jQuery being that my main intention is DOM manipulation.

The same can be said for Ruby and RoR. Will these books make me a better programmer overall? Probably. Can these topics help me become that much better with its framework? That's what I'm having a hard time understanding.

share|improve this question

closed as off-topic by Jimmy Hoffa, MichaelT, Bart van Ingen Schenau, jwenting, gnat Jun 21 at 17:12

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • "Questions seeking career or education advice are off topic on Programmers. They are only meaningful to the asker and do not generate lasting value for the broader programming community. Furthermore, in most cases, any answer is going to be a subjective opinion that may not take into account all the nuances of a (your) particular circumstance." – Jimmy Hoffa, MichaelT, jwenting
If this question can be reworded to fit the rules in the help center, please edit the question.

7  
When debugging, it often helps if you understand what's happening behind the curtain. Other than that, I mostly learn new stuff when I encounter the need, and I'm enjoying it. –  marczellm Jun 19 at 20:06
2  
I'm kind of with marczellm on this. My general attitude is that you only have so much code you're going to be able to produce in your life, and languages, dialects, and frameworks are coming out basically faster than you can write code. If you're already able to work with several languages and frameworks, then you probably want to study them on a need-to-know or want-to-know basis, not as ever-increasing notches in your belt. –  Panzercrisis Jun 19 at 21:18
    
I would say that this IS another "How much" question -- it certainly has the same answer which is that its a sliding scale depending upon your exact circumstances. –  jmoreno Jun 19 at 22:33
    
jQuery is a bit of a special case. Its almost another Domain Specific Language embedded inside Javascript. (almost but not quiet). I wonder is because of this specialness this question would be better written specifically about jQuery and Javascript (rather than jQuery and javascript just being a example) –  Oxinabox Jun 20 at 2:25

5 Answers 5

It's more important to study the language than it is to study the framework. Learn the language well, and you'll use the framework well.

In order of importance (most important first):

  1. Fundamental programming principles - Algorithms, data structures, etc.
  2. Language paradigms - OOP, Functional, etc.
  3. Language features.
  4. Syntax and frameworks.
share|improve this answer
2  
Many many upvotes on this if I could. A programmer will be limited in both design and capability for advanced work by what they don't know. –  Peter Smith Jun 19 at 18:39
8  
5. Idiomatic code. Read other people's code and learn the styles of this particular language. –  Joshua Taylor Jun 19 at 20:34
4  
@JoshuaTaylor I think I'd put that before frameworks in importance, since idiomatic code is likely to be used with the framework and learning them separately is more useful - the language idioms are not part of the framework, and users of the framework have probably added more –  Izkata Jun 19 at 23:34
    
Upvoted because it confirms my personal biases. Nevertheless, would like to have your sources please. –  Aaron Hall Jun 20 at 1:57

Of course. The question is "is that benefit worth the time investment?". I would argue that it always is, but it certainly depends on you and your environment since they will impact the benefit (how much your environment will gain from your knowledge) versus the cost (how long it takes you to learn, and how well you absorb knowledge).

Why would I argue it's beneficial? Because you won't always be in the framework. Even the most comprehensive framework is still a part of a larger ecosystem. You can't make jQuery calls alone. You need to know how to bind your script into the page, how it runs, how it interacts with the stuff you want to do. That may be "basics" in your book, but I've always found that deeper knowledge helped me make code quicker, and certainly debug problems faster. Framework or not.

Beyond that, the real world has a nasty habit of intruding on programmers. Sure, your task today may be to do some DOM manipulation, but tomorrow you might need to wire up some SWFObject. Having a good foundation will let you adjust more easily to changing environments.

And lastly, even though you may only want to do DOM manipulation, very few programmers work alone anymore. Your peers will likely do more advanced things with the programming language. You'll need to be able to read that code, or at the very least, not screw it up.

share|improve this answer

Probably need a little balance in the amount you should learn. It's not all or nothing, so put as much time in it as you can. You have to ask yourself what risks you are wiling to accept by relying on the framework.

It's great if all you need is to get some Minimum Viable Product up and running. There aren't going to be huge performance or complex requirement gotchas. This assumes you picked a framework that can handle what it is you're trying to build.

On the other side of the spectrum is if you are working on a fairly large/complex application and you find something that the framework handles poorly. No big deal, so you end up having to learn more JavaScript. You would have had to spend that time on it if you learned it from the beginning. But do you have the time? Will you be able to learn the fundamentals under the stress of not getting something done on time? No one can answer that.

Balancing it out is probably the best bet. Pace yourself. Learn some JavaScript if you can. You may not become an expert, but that is no reason to ignore it. Frameworks were created by people who needed to solve a problem similar to yours, but not exactly like yours.

share|improve this answer

A general area that suffers from delving in the framework(s) before knowing the core language well is performance. This is true for all languages/platforms (Hibernate n+1 selects etc). Here's a lot of JQuery tips and tricks which rely (among other things) on good knowledge of the core language in relation to performance:

Use For Instead of Each Native functions are always faster than any helper counterparts. Whenever you're looping through an object received as JSON, you'd better rewrite your JSON and make it return an array through which you can loop easier.

Use IDs Instead of Classes It's much better to select objects by ID because of the library's behavior: jQuery uses the browser's native method, getElementByID(), to retrieve the object, resulting in a very fast query.

share|improve this answer

I think your question is based on a false premise. You start by saying that you're planning to rely on a framework, and then you ask if it's beneficial to learn beyond the framework. So of course you come to the conclusion it's not worth it. But that premise is flawed. You shouldn't focus on using a framework. You should focus on using the right tool for the right job. jQuery is really good at certain tasks, and so is Ruby on Rails or any other framework. But they aren't always the right tool for everything. Learning about the language beyond the framework, and even learning about other frameworks or microframeworks or other tools, helps you identify when your framework is getting in your way more than it's helping, and it gives you the ability to seek other, better solutions.

So my answer is: yes, it's absolutely worth it because the framework isn't the right tool for every job.

share|improve this answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.