Adding to what others have said, I would say you can also learn other lower level programming languages first, in order to have a real "feel" how to to code efficiently. I am saying this because javascript (including node.js) is a high level language, and you may do stuff inefficiently because you let the program do all sort of tricks for you (E.g. in js, you don't have to care about even the size of an array or efficiently manage an array. No sort of concept for different types of collection exists, just almost always about arrays).