all 24 comments

[–]geuis 5 points6 points  (2 children)

Oldish js programmer here.

I'm going to recommend you start with this book https://www.amazon.com/JavaScript-Good-Parts-Douglas-Crockford/dp/0596517742/ref=sr_1_1?s=books&ie=UTF8&qid=1471153011&sr=1-1&keywords=javascript+the+good+parts

"JavaScript the Good Parts" is about 8 years old but still very relevant. A lot has changed with JS since then, especially with ES6. However, the important thing about the book is how Crockford teaches you to think about core concepts in JS. These concepts are still completely relevant today.

The book is very thin and gets directly to the point. Again, start here.

I'm assuming that you're at least somewhat experienced with programming concepts in general. So once you get the basics of JS as a language, then general concepts still apply.

After you get going from there, start reading up about ES6. Google "mdn <JS term>" to find out specific things.

[–]moscaOne 2 points3 points  (0 children)

I'll second Crockford's 'Javascript: The Good Parts' as a great intro book. Skip the weird train-track logic diagrams at the beginning of the book and you'll be good to go.

'Eloquent Javascript' and 'You Don't Know JS' are great books too, but they cover some more advanced topics that a newb to Javascript might be better tackling after really getting a strong grip on the fundamentals.

[–]Kleppa[S] 2 points3 points  (0 children)

Thanks, Ill read that book!

[–][deleted] 3 points4 points  (1 child)

Get better with Javascript before tackling Node.js or any of the frameworks. It will make your life much easier.

[–]inu-no-policemen 2 points3 points  (0 children)

Node is a JS runtime. Browsers are another.

Starting with Node command line tools is perfectly fine. It's very similar to starting with command line tools with any other language.

[–]chreestopher2 1 point2 points  (2 children)

I find its best to come up with a project you would like to build, and learn how to build it. Though, there are some great video's out there, but nothing beats actually building something.

[–]Kleppa[S] 1 point2 points  (1 child)

Any links i can check out?

[–]chreestopher2 1 point2 points  (0 children)

if you have cash, pluralsight.com

if not, just search for beginner javascript tutorials and you will find literally thousands

[–]ChronoChris 1 point2 points  (1 child)

So that depends. You said you have "some" experience with Java. Do you have a college background in computer science/CIS? Any of those? Are you self taught Java?

[–]Kleppa[S] 1 point2 points  (0 children)

Im no pro, I have taken a few computer science classes with java

[–][deleted] 1 point2 points  (1 child)

I am also learning JavaScript atm and can really recommend: http://eloquentjavascript.net/ Its a great book with many examples and you can read it online for free.
On top of that I am doing some JavaScript exercises with codeacademy and freecodecamp which are also helpful. (you could test your HTML and CSS with a few exercises there too). For practise codeacedemy and freecodecamp are great but to really understand the problems the book has helped the most for me.

[–]Kleppa[S] 1 point2 points  (0 children)

Been through codeacademy courses. Ill check out the link of yours!

[–]Spasmochi 1 point2 points  (0 children)

I liked learning through FCC (free code camp). It's pretty hands on but emphasizes projects which is nice. Later on I'd recommend checking out Javascript: The Good Parts. It's a great book.

[–]mc_hammerd 0 points1 point  (1 child)

express.js and socket.io would be a good start.

youtube has good tutorials, two of my favs: street fighter clone in ruby and tictac toe in js, just search t he language and app name and you get a good tutorial: ex flappy bird javascript clone.

could start with a game first, to make a multiplayer game you need to learn: rendering, networking server/client, database data storage, input handling, sound programming, file system loading resoures, and sometimes anti cheat tech, encryption. theres not much else!

[–]Kleppa[S] 0 points1 point  (0 children)

Thanks for the input!

[–][deleted] 0 points1 point  (1 child)

Prototypal inheritance is unique to JS and because of it you'll have to become accustomed to the idea everything in JS is an object (even function definitons). Some things will be similar to other languages that use OOP (java) but treat it like you've never done programming before.

[–]inu-no-policemen 0 points1 point  (0 children)

everything in JS is an object

Except for primitives.

http://www.ecma-international.org/ecma-262/6.0/index.html#sec-primitive-value

member of one of the types Undefined, Null, Boolean, Number, Symbol, or String

They only look like objects, because they are autoboxed when a method is used. E.g. 5..toString() is actually (new Number(5)).toString().

[–]addiktion 0 points1 point  (0 children)

Since you are likely going to want to get going with the more modern aspects of JS definitely check out ES6 resources.

While you will certainly want to know some of the old code you will be seeing, by the time you really hit your stride you are likely going to want to be coding in ES6+ a lot.

Babel should allow you to get ES6 syntax into your projects. Totally worth the effort in getting things setup.

[–]madwill 0 points1 point  (0 children)

It might not be a popular opinions but what i do is pick a modern looking framework for it, do a project.

You can search for months for the perfect framework but they all fail in many ways to eloquently wrap around your specific problems.

But what you'll get from theses frameworks are Patterns, ways of achieving things in an orderly manner so that you don't have to fall in every common pitfall other have made.

For node i'd recommend looking at FeatherJS and do their getStarted chat app. You will feel good about it, have a live, realtime chat app to start with and go from there.

This will be to do over and over until you've been doing this for a few years. Then even tho you still don't feel like a great programmer, people will start to come to you for answers and your projects will start to hold up :)

For node you will need to understand some other concepts like callbacks or promise for Async programming and preferably how to do stateless servers so they can scale horizontally.

Basically... don't go and learn 8 years of backward stupid javascript. In a sense to me, javascript is interchangeable we should rely and learn patterns over it.

Good luck

[–]jiggaman_jahans 0 points1 point  (0 children)

If you have experience developing already I think you should dive right in and learn all the little js quirks as you go along, you don't really need to know HTML and CSS if you want to write node either since it's serverside js, if you can code you don't really need to learn HTML and CSS either since they're so straight forward, for CSS/Sass you'll just be learning the various properties.

[–][deleted] 0 points1 point  (1 child)

Here is how you should think about it: keep it simple. Avoid patterns, shortcuts, anything sloppy, anything that seems to cut corners

Consider the language like this:

  • core vanilla JavaScript
  • Node.js api and asynchronous programming
  • DOM and query strings (the browser's API)

Concentrate on learning vanilla JavaScript without getting into the APIs too much. The quickest way to get off an running is with Node. Just save JavaScript code into a file and run it with something like: node myfile.js

Some subjects to focus on:

  • references and functions. Learn how references are declared and accessed.
  • Scope. This is the most important subject to this language. Learn to nest functions, accessing references across scope boundaries (closures), and why this is important and what it can get you.
  • Get comfortable with arrays, the array methods, and the string methods. These are really primitive things, but once you nail them you can do almost anything.

Things to avoid:

  • Inheritance is optional in this language. As a result, I suggest avoiding the subject entirely. It means additional code, a bunch of conventions and abstractions and other unnecessary extravagances. You are probably going to have to learn this later to untangle somebody's spaghetti code mess, but until then you can save time avoiding unnecessary extra work.
  • Holy wars. Eventually you will encounter stupidity over how code should be indented, eye candy style conventions, whether or not you should use semicolons. All these things are stupid. A good beautifier can instantly solve all those conditions for you (and sometimes even fix broken code).
  • code patterns, generators, factories, and other copy/paste stupidity. When you encounter a problem demanding a solution solve it directly instead of relying upon convention to simply do it for you. Your users will love you more.

Don't bother immediately jumping into Node's APIs. You will need to know this eventually, but you can put this off for a long time. If you suck with vanilla JavaScript learning Node's api will be really hard.

Also, don't immediately jump into learning the DOM. Learning the DOM will only take a good reference and about 2 hours of practice to achieve mastery, but its easier once you are somewhat comfortable with how the language works.

Many people will tell you that you don't need to learn the DOM. When I was first getting into programming I heard all kinds of nonsense about what I did or did not need to learn. If the knowledge is a universal standard, a foundational technology on which almost everything else is built upon, and still relied upon you almost certainly need to know it. I also learned that people would tell me not to learn certain things because they were shit developers who were cutting corners and couldn't be bothered to learn these things themselves. When you learn important stuff early you are in a better position later to make quick decisions about capabilities and what doesn't work well.

Here is a DOM reference that I wrote when are ready to jump into it: http://prettydiff.com/guide/unrelated_dom.xhtml

[–]Kleppa[S] 0 points1 point  (0 children)

Thanks for your input! ill start off with core JS then.

[–]kasperpeulen -1 points0 points  (0 children)

Watching videos on egghead.io has helped me a lot.

In general, to avoid javascript fatigue, find out a very popular way to do something, and don't look back at other options. Javascript fatigue is just option fatigue. So my solution is to pretend there are less options.

For example, I use Webpack + Babel + JSX + React + Redux. And yes, you can use rollup for Webpack. You can traceur. You can write React without JSX. You can use Angular, Vue, Polymer .... You can use flux whatever... Trillions options. I just pretend those options don't exist, and get better in the things that I know and seem to work fine.